modbot 0.3.0

Discord bot for https://mod.io. ModBot provides commands to search for mods and notifications about added & edited mods.
modbot-0.3.0 is not a library.

ModBot for Discord

Crates.io Rust version License GitHub Action Discord

ModBot is a Discord bot for mod.io using modio-rs and serenity.

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.

  1. Invite the ModBot https://discordbot.mod.io/
  2. View the games list ~games and set the default game ~game ID
  3. In the channel(s) you want the bot to post updates (mod added / edited), run the command ~subscribe ID
  4. Ensure the bot has Read Messages, Send Messages and Embed Links permissions in the channel(s) it is in to be able to function correctly

Commands

By default ~ is the prefix used to issue commands to ModBot. Once you have invited ModBot to your server, you can set the default game using the command ~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 ~subscribe ID 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:

  • ~help show these commands
  • ~prefix CHARACTER change the default prefix from ~ to something else
  • ~game <ID|Name> set the default game
  • ~game return information about the default game
  • ~games return a list of all games
  • ~mod <ID|Name> return information about the mod(s) requested
  • ~mods [ID|Name] return a list of all mods belonging to the default game
  • ~popular return a list of mods ordered by popularity
  • ~subscribe <ID|Name> [Tag..] subscribe to a game for updates (mods added/edited) [alias: sub]
    ~sub 51
    ~sub xcom
    ~sub xcom "UFO Defense" Major
    ~sub "Skate XL" "Real World Spot"
    ~sub skate Gear Deck
    
  • ~subscriptions see all games subscribed too [alias: subs]
  • ~unsubscribe <ID|Name> [Tag..] unsubscribe from a game [alias: unsub]
    ~unsub 51
    ~unsub OpenXcom
    ~unsub xcom "UFO Defense" Major
    ~unsub "Skate XL" "Real World Spot"
    ~unsub skate Gear Deck
    
  • ~mute <Game> <Mod> mute a mod from update notifications
  • ~muted return a list of all muted mods
  • ~unmute <Game> <Mod> unmute a mod from update notifications

Screenshots

Mod details

details

New Mod notification

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

$ 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.

License

Licensed under either of

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.