Skip to content

general-purpose TypeScript Discord bot with osu! features related to mapping & modding

License

Notifications You must be signed in to change notification settings

Hiviexd/AxerBot

Repository files navigation

AxerBot

CodeFactor GitHub license Lines of code GitHub last commit

A general-purpose and powerful Discord bot with osu! features related to mapping & modding

  • invite link (or run /info on a server the bot is in)
  • Discord server: If you want to notified with all bot updates, or make bug reports/feature requests.

About

This bot contains many features that makes your life easier as an osu! Discord server owner, moderator or member, including:

  • Message purging
  • Sending messages as the bot user
  • A configurable quote responses system
  • command cooldowns
  • A message logging system
  • A reminder system
  • A bunch of fun and trivial commands
  • Clickable osu! timestamps

  • Automatic beatmap discussion and comment embeds

The bot also interacts with osu!'s API v2 and the BN/NAT Management website's interOp routes to provide you with multiple stats and management systems such as:

  • An OAuth2 verification system where you sign up with your osu! account in order to be granted access to the server, with usergroup-specific role assignments

  • A feed system that actively keeps track of the request statuses for all BNs/NATs

  • Several commands that allow you to view your playing/mapping stats from the osu! website or the BN/NAT website

Thanks to

  • Sebola3461 for helping me a lot with this project!
  • pishifat for granting me access to BN site's interOp routes.

Usage

  • invite the bot.
  • type /help to see a list of all available commands; Use /help <command> to see how a specific command works.

from this step onwards, you can set up any of these following systems as a server owner/manager:

  • The osu! verification system
  • The logging channel
  • The quotes system
  • The command cooldowns system

Contributing

Before starting to work on things for this project, please open an issue that describes what you're working on, and wait for approval from one of the main devs!

If you want to contribute to this project, please read the following to learn how to set up a local instance of the bot, and read this to learn more about the command structure of the bot:

Prerequisites

  • A Discord bot user
  • Node v17
  • yarn
  • MongoDB
  • an osu! API v2 client
  • (optional) BN site interOp access

Installation

  • Clone the repository
  • yarn
  • Set up config.json
    • owners: array of Discord user IDs that will be considered as bot owners
    • ownersOsuIds: array of osu! user IDs that will be considered as bot owners
    • automation: boolean that determines whether the bot should run automated tasks
  • Set up .env file starting from the .env.example file
    • TOKEN: bot's token
    • CLIENT_ID: bot's client ID
    • OSU_CLIENT_ID: osu! API v2 client ID
    • OSU_CLIENT_SECRET: osu! API v2 client secret
    • PORT: port, default is 3000
    • MONGO_USER: MongoDB username
    • MONGO_PASSWORD: MongoDB password
    • MONGO_DB: mongoDB database name
    • MONGO_CLUSTER: mongoDB cluster name
    • QAT_USER: BN site interOp username1
    • QAT_SECRET: BN site interOp secret1
    • OSU_USERNAME: your osu! username2
    • OSU_PASSWORD: your osu! password2
  • yarn dev

Footnotes

  1. These are optional, but without those, all BN site-related functionality won't work (BN commands/tracking). 2

  2. These are optional, but without those, the "Download" button on beatmap embeds won't work. 2