21 releases
0.6.3 | Jun 4, 2024 |
---|---|
0.6.2 | Sep 22, 2023 |
0.6.1 | Jun 27, 2023 |
0.5.5 | Mar 17, 2023 |
0.2.0 | Jun 24, 2019 |
#154 in Web programming
1,129 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.
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
~58MB
~1M SLoC