Friendly Discord bot for the WebODM community.
Requirements:
- Node.js 18+
- A Discord bot token
- A Discord application ID
Install dependencies:
npm installCreate a .env file:
DISCORD_TOKEN=your_bot_token
APP_ID=your_application_id
MODERATOR_ROLE_NAME=Moderator
WEBLATE_KEY=your_weblate_api_keyMODERATOR_ROLE_NAME is optional and defaults to Moderator.
WEBLATE_KEY is required for the monthly translator leaderboard.
Register slash commands:
npm run registerStart the bot:
npm startFor development:
npm run devOn the first day of each month, the bot fetches the previous month's credits from Weblate and posts a translator leaderboard in the #hangar channel.
Administrators can also trigger the same post manually with /testleaderboard. The command is hidden from non-admin members by default and also checked again at runtime.
The bot includes a Move message context-menu command. When a moderator or administrator right-clicks a message and chooses Apps -> Move, the bot replies with an ephemeral channel/thread dropdown, replays the message through a webhook so the original author's display name and avatar are preserved, and deletes the original message after the replay succeeds.
Required bot permissions:
Manage Webhooksin the destination channel, or in the parent channel when moving into a threadManage Messages,View Channel, andRead Message Historyin the source channel
The command is registered with Discord's Manage Messages default permission so it is hidden from most members. Runtime access is still restricted to administrators or members with the configured moderator role name.
Licensed under AGPLv3. See the LICENSE file.