Friendly-Banana / wobot

Powerful and fun Discord Bot written in Rust

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WoBot

Features

WoBot comes with a ton of features, including:

Improved Events:

create a Discord Event, a thread and allow RSVP via reactions with a single command
export all events to your calendar (works on mobile)

Improved Emojis:

add, rename and remove
upload to convert images into emojis
copy emojis from other servers to your own

Easy Reaction roles

simply react with the emojis you want

MEMEs:

Obama: when someone congratulates themselves
Cutie Pie: tell your friends how cute they are

ToDo list

store anything you like

Reminder

schedule whatever you like for later

Mensa plan

know what's up for lunch
show the next available plan
automatically skips weekends

Images

Not yet convinced? Have some images:

Contributing

If you have a great idea or suggestion, feel free to open an issue. If you want this feature right now and can code, open a pull request. Please make sure to run cargo fmt before committing.

Running the Bot

  1. Install Rust
  2. Install Shuttle
  3. Optional: Install PostgresQL, you can also use a Docker container
  4. Change the Database URL (postgres://test:pass@localhost:5432/postgres) in main.rs and .env to your local PostgresQL instance, leave it blank to use Docker.
  5. Execute setup.sql in your DB
  6. Create a Discord Bot on the Discord Developer Portal
  7. Copy the bot token and put it in a Secrets.toml file in the root directory:
    DISCORD_TOKEN = "your token here"
    You can also create a Secrets.dev.toml file if you want to test with different tokens in development.
  8. Invite the bot to your server with the ADMINISTRATOR permission, you can also only choose the permissions you need.
  9. Run the bot with cargo run

Some features also require a font and images from the assets folder. Due to legal reasons, not all of them can be provided here. What's missing:

Simply download them and place them in the assets folder with the same name.

Technical Overview

WoBot is a Discord Bot written in Rust with the Poise framework. It's hosted on Shuttle and uses a PostgresQL database.

The mensa plan uses the Eat API, the mensa coordinates link to Google Maps.

The mensaplan API is written by myself and may become public in the future.

Configuration

config.hjson uses a human-friendly JSON version, HJson.

You can set up automatic reactions and replies based on keywords. All of them are case-insensitive. Auto-reactions also support regex and match on word boundaries, ignoring punctuation around them. WoBot can react with both Unicode and custom Discord emojis, even animated ones.

Example Config

{
  // channel for event threads
  event_channel_per_guild: {
    // guild_id: channel_id
    0: 0
  }
  auto_reactions: {
    robot: {
      name: "🤖"
    }
    vibing: {
      animated: true
      name: vibing
      // emoji id
      id: 0
    }
  }
  auto_replies: [
    {
      keywords: [
        "wobot info"
        "wobot help"
      ]
      // discord user id
      user: 0
      title: About WoBot
      description: "Hi, I'm **WoBot**, your friendly neighborhood bot. Please send any questions or feedback to my author, {user}. This message was sent {count} times. Have a nice day!"
      colour: 15844367
    }
}

About

Powerful and fun Discord Bot written in Rust


Languages

Language:Rust 100.0%