Lightweight Golang Discord client that receives incoming events from the Discord gateway and sends them to a STOMP broker. Useful for creating distributed and highly-available bots for Discord.
Rolling restarts can be performed on worker code without affecting shard availability, and events can be balanced between all workers.
Events are serialized into the JSON format outlined below and passed over a STOMP connection to a message broker (such as ActiveMQ or RabbitMQ) to be processed by your own workers.
If you are looking for a compatible worker framework, this organization maintains https://github.com/project-holo/discord-worker-framework, which consumes the format that this project produces.
- Build it:
go build -o discord-gateway-client discord-gateway-client --token "Bot TOKEN_HERE" --broker "stomp://login:passcode@host:port/host"- If you'd prefer to use environment variables or would like shard
configuration, check
init()in discord-gateway-client.go - If you want debug lines in console, set
-d trueorDEBUG=true - Consume events from
/eventson the virtual host of the broker (unless you changed the destination)
{
"type": "string" // event type (e.g. MESSAGE_CREATE)
"shard_id": int, // shard ID
"data": { ... } // event data, whatever is serialized from DiscordGo
}-
READY -
RESUMED -
CHANNEL_CREATE -
CHANNEL_UPDATE -
CHANNEL_DELETE -
GUILD_CREATE -
GUILD_UPDATE -
GUILD_DELETE -
GUILD_BAN_ADD -
GUILD_BAN_REMOVE -
GUILD_EMOJIS_UPDATE -
GUILD_INTEGRATIONS_UPDATE -
GUILD_MEMBER_ADD -
GUILD_MEMBER_REMOVE -
GUILD_MEMBER_UPDATE -
GUILD_MEMBERS_CHUNK -
GUILD_ROLE_CREATE -
GUILD_ROLE_UPDATE -
GUILD_ROLE_DELETE -
MESSAGE_CREATE -
MESSAGE_UPDATE -
MESSAGE_DELETE -
(Discord doesn't send this anymore)MESSAGE_DELETE_BULK -
PRESENCE_UPDATE -
TYPING_START -
USER_SETTINGS_UPDATE -
USER_UPDATE -
VOICE_STATE_UPDATE -
VOICE_SERVER_UPDATE
A copy of the MIT license can be found in LICENSE.