23 releases
0.6.5 | Feb 2, 2025 |
---|---|
0.6.3 | Jun 4, 2024 |
0.6.2 | Sep 22, 2023 |
0.6.1 | Jun 27, 2023 |
0.2.0 | Jun 24, 2019 |
#66 in Web programming
265 downloads per month
175KB
4.5K
SLoC
ModBot for Discord
ModBot is a Discord bot for mod.io using modio-rs
and twilight
.
Setup • Commands • Screenshots • Building • Installation • Usage • License
Setup
You can invite the officially hosted ModBot to join your Discord server using the following URL https://discordbot.mod.io, or you can build and install your own version of ModBot by following the instructions below.
- Invite the ModBot https://discordbot.mod.io/.
- View the games list
/games
and set the default game/settings default-game ID
. - In the channel(s) you want the bot to post updates (mod added / edited),
run the command
/subs add <GameID>
. - Ensure the bot has
Send Messages
andEmbed Links
permissions in the channel(s) it is in to be able to function correctly.
![](https://img.gs/czjpqfbdkz/500/https://user-images.githubusercontent.com/2128532/118098374-1adc0e80-b3d4-11eb-808a-4024b7e79d9b.png)
Commands
Once you have invited ModBot to your server, you can set the default game using
the command /settings default-game ID
. Now when a user issues the command
/mods
, all of the mods for the game you specified will be returned. You can
change the default game at any time.
We recommend you also /subs add <GameID>
to games you are interested in
receiving push notifications from. For example in our #bot channel, we have
subscribed to a bunch of games and whenever a mod is updated, the channel is
notified.
Popular commands include:
-
/game
return information about the default game -
/games [search]
return a list of all games -
/mods [ID|Name]
return a list of all mods belonging to the default game -
/popular
return a list of mods ordered by popularity -
/settings default-game <ID|Name>
set the default game -
/subs add <ID|Name> [Tag..] [Type]
subscribe to a game for updates (mods added/edited)/sub add 51 /sub add OpenXcom /sub add OpenXcom tags:"UFO Defense",Major /sub add "Skate XL" tags:"Real World Spot" /sub add Skate* tags:Gear,Deck
-
/subs list
see all games subscribed too -
/subs rm <ID|Name> [Tag..] [Type]
unsubscribe from a game/subs rm 51 /subs rm OpenXcom /subs rm OpenXcom tags:"UFO Defense",Major /subs rm "Skate XL" tags:"Real World Spot" /subs rm skate tags:Gear,Deck
-
/subs mods mute <Game> <Mod>
mute a mod from update notifications -
/subs mods muted
return a list of all muted mods -
/subs mods unmute <Game> <Mod>
unmute a mod from update notifications
Screenshots
Mod details
New Mod notification
Building
ModBot is written in Rust, so you'll need to grab a Rust installation in order to compile it. Building is easy:
$ git clone https://github.com/nickelc/modio-bot
$ cd modio-bot
$ cargo build --release
$ ./target/release/modbot
Building with bundled sqlite3
Use the feature sqlite-bundled
to compile sqlite3 from source and link against that.
$ cargo build --features sqlite-bundled
Installation
Cargo
Install latest version from https://crates.io.
$ cargo install modbot
$ $HOME/.cargo/bin/modbot
Install modbot from the master
branch.
$ cargo install --git https://github.com/nickelc/modio-bot
$ $HOME/.cargo/bin/modbot
Usage
Create a bot.toml
config file in the working directory.
[bot]
token="your discord bot token"
database_url="/path/to/sqlite.db"
[modio]
api_key="your mod.io api key"
A example is provided as bot.example.toml
.
Running the bot
./path/to/modbot
./path/to/modbot --config path/to/bot.toml
Logging
Logging can be configured via environment variables.
RUST_LOG=modio=debug,modbot=debug
See tracing_subscriber::EnvFilter
for more information.
Metrics
By default, the metrics are exposed via Prometheus endpoint listing on http://127.0.0.1:8080/metrics
.
[metrics]
addr = "127.0.0.1:3000"
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~59MB
~1M SLoC