gleam add discord_gleam
import discord_gleam
import discord_gleam/event_handler
import discord_gleam/types/message
import discord_gleam/discord/intents
import gleam/list
import gleam/string
import logging
pub fn main() {
logging.configure()
logging.set_level(logging.Info)
let bot = discord_gleam.bot("YOUR TOKEN", "YOUR CLIENT ID", intents.default())
discord_gleam.run(bot, [event_handler])
}
fn event_handler(bot, packet: event_handler.Packet) {
case packet {
event_handler.MessagePacket(message) -> {
logging.log(logging.Info, "Got message: " <> message.d.content)
case message.d.content {
"!ping" -> {
discord_gleam.send_message(bot, message.d.channel_id, "Pong!", [])
Nil
}
_ -> Nil
}
}
_ -> Nil
}
}
Further documentation can be found at https://hexdocs.pm/discord_gleam.
gleam test # Run the tests
Feature | Status |
---|---|
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
- READY
- INTERACTION_CREATE
Intent: guild_messages/direct_messages (optional: message_content)
- MESSAGE_CREATE
- MESSAGE_DELETE
- MESSAGE_UPDATE
- MESSAGE_DELETE_BULK
Intent: guilds
- GUILD_CREATE
- GUILD_UPDATE
- GUILD_DELETE
- CHANNEL_CREATE
- CHANNEL_UPDATE
- CHANNEL_DELETE
- CHANNEL_PINS_UPDATE
- THREAD_CREATE
- THREAD_UPDATE
- THREAD_DELETE
- THREAD_LIST_SYNC
- THREAD_MEMBER_UPDATE
- THREAD_MEMBERS_UPDATE
- STAGE_INSTANCE_CREATE
- STAGE_INSTANCE_UPDATE
- STAGE_INSTANCE_DELETE
- GUILD_ROLE_CREATE
- GUILD_ROLE_UPDATE
- GUILD_ROLE_DELETE
Intent: guild_members
- GUILD_MEMBER_ADD
- GUILD_MEMBER_UPDATE
- GUILD_MEMBER_REMOVE
- GUILD_MEMBERS_CHUNK
- THREAD_MEMBERS_UPDATE
Intent: guild_moderation
- GUILD_AUDIT_LOG_ENTRY_CREATE
- GUILD_BAN_ADD
- GUILD_BAN_REMOVE
Intent: guild_expressions
- GUILD_EMOJIS_UPDATE
- GUILD_STICKERS_UPDATE
- GUILD_SOUNDBOARD_SOUND_CREATE
- GUILD_SOUNDBOARD_SOUND_UPDATE
- GUILD_SOUNDBOARD_SOUND_DELETE
- GUILD_SOUNDBOARD_SOUNDS_UPDATE
Intent: guild_integrations
- GUILD_INTEGRATIONS_UPDATE
- INTEGRATION_CREATE
- INTEGRATION_UPDATE
- INTEGRATION_DELETE
Intent: guild_webhooks
- WEBHOOKS_UPDATE
Intent: guild_invites
- INVITE_CREATE
- INVITE_DELETE
Intent: guild_voice_states
- VOICE_CHANNEL_EFFECT_SEND
- VOICE_STATE_UPDATE
Intent: guild_presences
- PRESENCE_UPDATE
Intent: guild_message_reactions/direct_message_reactions
- MESSAGE_REACTION_ADD
- MESSAGE_REACTION_REMOVE
- MESSAGE_REACTION_REMOVE_ALL
- MESSAGE_REACTION_REMOVE_EMOJI
Intent: guild_message_typing/direct_message_typing
- TYPING_START
Intent: guild_scheduled_events
- GUILD_SCHEDULED_EVENT_CREATE
- GUILD_SCHEDULED_EVENT_UPDATE
- GUILD_SCHEDULED_EVENT_DELETE
- GUILD_SCHEDULED_EVENT_USER_ADD
- GUILD_SCHEDULED_EVENT_USER_REMOVE
Intent: auto_moderation_configuration
- AUTO_MODERATION_RULE_CREATE
- AUTO_MODERATION_RULE_UPDATE
- AUTO_MODERATION_RULE_DELETE
Intent: auto_moderation_execution
- AUTO_MODERATION_ACTION_EXECUTION
Intent: guild_message_polls
- MESSAGE_POLL_VOTE_ADD
- MESSAGE_POLL_VOTE_REMOVE
Intent: direct_message_polls
- MESSAGE_POLL_VOTE_ADD
- MESSAGE_POLL_VOTE_REMOVE