This is a discord bot written in Haskell using the calamity library. Its aim is to be a server administration bot with the following features:
- The following commands:
!ping
: The command every bot needs - simply replies with "pong"!invite
: Returns an invite link to the server!kick :u :r
: Kicks the useru
, optionally with the reasonr
!mute :u :r
: Mutes the useru
, optionally with the reasonr
(by giving user aMuted
role)!unmute :u :r
: Unmutes the useru
, optionally with the reasonr
!tempmute :u :t :r
: Mutes the useru
fort
time optionally with reasonr
. The time is of the format10m
or7d
. Acceptable suffixes ares
,m
,h
, andd
.!ban :u :r
: Bans the useru
optionally with reasonr
!unban :u :r
: Unbans the useru
, optionally with reasonr
!bulkban :u1 :u2 ... :un :r
: Bans all the given users, optionally with reasonr
. Accepts any number of users- Note that all commands that take users accept either mentions or IDs. Banning will work even if the user is not in the server
- Mute related commands require the user to have one of the listed roles. Kick/ban related commands require the user to have kick or ban permissions respectively
- Message edits and deletes are logged into a log channel
- Administrator actions (commands from
kick
onwards) are logged into the log channel, and a suitable reason is provided with the request for Discord's audit log - Filtering based on message content
- Custom activity for the bot
- Reaction roles (NOT YET COMPLETE)
See here for a list of features planned. If there is a feature you would like feel free to open an issue (or a pull request!) with the label enhancement
- Copy
config/settings.yaml.sample
toconfig/settings.yaml
and enter the settings for your server (the file is commented to assist with this) - Install the Haskell
stack
tool - see here - Clone this repository:
git clone https://github.com/oscar-h64/calamity-admin-bot.git
- Build the bot
# Replace bin/ with where you want the executable to be stored
stack install --local-bin-path=bin/
- Run the executable to start the bot. Note the
settings.yaml
file must be in a folder calledconfig
in the folder you run the executable (so theconfig
folder should be in the same folder as the executable if launching from a file manager, and in your current directory if launching from a terminal)
Issues and pull requests are always welcome - see CONTRIBUTING.md for more details