A Hubot adapter for Discord, using the Discord.js API supporting the latest versions of Discord.js and Hubot. Make your own highly customizable Discord Bot.
Originally based on disbot - https://github.com/atomicptr/disbot
Current Discord.js version: 13.3.1 Required Node.js version: >= 16.6.0
For an example of a working, complete implementation of Hubot and Hubot-discobot adapter, check out TremBot: https://github.com/Pwn9/TremBot
See TremBot in action on the Pwn9 Discord Channel, get your server invite at http://discord.pwn9.com
- Discord.js version ^13.3.1
- More configurable hubot / discord bot instance (see ENV in setup below)
- Extend more Discord features into the adapter (The entire instance of Discord.js is extended to hubot scripts via robot.client where client = discord client)
- Must be Discord.js version 13+ due to breaking changes from Discord.js v12
First, you should have hubot installed and understand that the purpose of the adapter (like this one) is to connect a hubot to an endpoint, whether that be IRC, Slack, Campfire, or in our case: Discord! Learn more at https://hubot.github.com/docs/
After that, setup is easy, just use NPM to install this adapter from github (and eventually from NPM):
npm install hubot-discobot --save
Then run hubot with the adapter flag
./bin/hubot -a discobot
You may also use a .json file with the env object set.
"env": {
"HUBOT_DISCORD_TOKEN": "your token here",
"HUBOT_DISCORD_INTENTS": intents bitflag
"HUBOT_DISCORD_PARTIALS": [partials array]
"HUBOT_DISCORD_ACTIVITY": "Super Bot Bash"
"HUBOT_DISCORD_ACTIVITY_TYPE": "PLAYING"
}
IMPORTANT: you need to have an environment variable called HUBOT_DISCORD_TOKEN
with your Bot token which you can get here: https://discordapp.com/developers/applications/me
If environment variables are not set, they will fallback to a default, with the except of token. Without a token the bot will fail and not run.
IMPORTANT: you need to have an environment variable called HUBOT_DISCORD_TOKEN
with your Bot token which you can get here: https://discordapp.com/developers/applications/me
As of Discord.js v13 Intents are required to define your bots privileges: https://discordjs.guide/popular-topics/intents.html#privileged-intents
Intents is set as a bitflag, by default hubot-discobot will fallback to full intents which is 32767 - this may be unsafe and you should define your specific intents accordingly.
As of Discord.js v13 Partials are required to pull data from certain events, this comes with some benefits and drawbacks, learn more at: https://discordjs.guide/popular-topics/partials.html#partial-structures
Partials is set as an array of values, by default hubot-discobot will fallback to full partials which is ['MESSAGE', 'CHANNEL', 'REACTION', 'USER', 'GUILD_MEMBER']
Set the default activity that you want your bot to have.
Set the default activity type.
You can access the discord client via robot.client. See the discord.js docs for ways to use the discord API: https://discord.js.org
Using the environment variables for your bot, you can set a custom status. Documentation available: https://discord.js.org/#/docs/main/stable/typedef/ActivityOptions
Activity type can be one of: PLAYING, STREAMING, LISTENING, WATCHING, COMPETING
For additional scripting examples, see the examples folder for a script in javascript that can set the bots current activity.