discord_gleam

Package VersionHex Docs

gleam add discord_gleam

Example Bot

import discord_gleam
import discord_gleam/bot
import discord_gleam/discord/intents
import discord_gleam/event_handler
import discord_gleam/types/message
import gleam/erlang/process
import gleam/otp/static_supervisor as supervisor
import gleam/otp/supervision
import logging
pub fn main() {
logging.configure()
logging.set_level(logging.Info)
let bot =
bot.new(
"TOKEN",
"CLIENT ID",
)
|> bot.with_intents(intents.default_with_message_intent())
let bot =
supervision.worker(fn() {
discord_gleam.simple(bot, [simple_handler])
|> discord_gleam.start()
})
let assert Ok(_) =
supervisor.new(supervisor.OneForOne)
|> supervisor.add(bot)
|> supervisor.start()
process.sleep_forever()
}
fn simple_handler(bot, packet: event_handler.Packet) {
case packet {
event_handler.ReadyPacket(ready) -> {
logging.log(
logging.Info,
"Bot is ready! Logged in as: " <> ready.user.username,
)
Nil
}
event_handler.MessagePacket(message) -> {
logging.log(logging.Info, "Got message: " <> message.content)
case message.content {
"!ping" -> {
let _ =
discord_gleam.send_message(
bot,
message.channel_id,
message.new("Pong!"),
)
Nil
}
_ -> Nil
}
}
_ -> Nil
}
}

Further documentation can be found at https://hexdocs.pm/discord_gleam. And more examples can be found in the examples/ folder.

Development

gleam test # Run the tests

Features:

FeatureStatus
Basic events
Sending messages
Ban/kick
Deleting messages
Embeds
Basic Slash commands
Message Cache
Intents✅*

✅ - Done | 🔨 - In Progress | 📆 - Planned | ❌ - Not Planned
* all intents are implemented, but not all are used yet

Supported events:

Intent: guild_messages/direct_messages (optional: message_content)

Intent: guilds

Intent: guild_members

Intent: guild_moderation

Intent: guild_expressions

Intent: guild_integrations

Intent: guild_webhooks

Intent: guild_invites

Intent: guild_voice_states

Intent: guild_presences

Intent: guild_message_reactions/direct_message_reactions

Intent: guild_message_typing/direct_message_typing

Intent: guild_scheduled_events

Intent: auto_moderation_configuration

Intent: auto_moderation_execution

Intent: guild_message_polls

Intent: direct_message_polls