Kaaz / DiscordBot

A Java Discord bot using JDA
Apache License 2.0
131 stars 53 forks source link
bot discord discord-bot jda

Emily - A discord bot

A Java bot for Discord using the JDA library.

It uses sql (mariadb) to store data
If you'd like to run your own version of this project check the installation part

You can play/test it on discord Discord

What can it do?

Commands

Commands are prefixed with a "!" by default, this can be configured. For a list of commands in discord the help command can be used. For more information about a command use help \<commandname>

Current list of all available commands. See below for a more detailed list

Commands
8ball ban blackjack botstatus case
catfact changename cla command commandadmin
config current debug donate exec
exit fight fml game getrole
gif globalban guildstats help info
invite join joke kick leaveguild
logging meme modcase music mute
pause ping play playlist pm
poll prefix purge queue reactionrole
reboot reddit reload report roleadmin
roll rotate sendfile server skip
slot stop subscribe system tag
tempban template test todo ud
uptime user userrank version volume
warn

Games

Games can be accessed though the !game command

A list of games:

Key Name Players
cf Connect Four 2
gos Game of sticks 2
tic Tic tac toe 2

Per guild configuration

The per-guild configuration can be accessed though the !config command, to use it you must be the server owner, or have the discord-administrator permission

The following settings can be changed per guild:

AUTO_REPLY

default: false
setting-type: toggle

use the auto reply feature?
Looks for patterns in messages and replies to them (with a cooldown)
true -> enable auto replying to matched messages
false -> disable auto replying

BOT_ADMIN_ROLE

default:
setting-type: discord-role

Users with this role are considered admins for the bot

BOT_CHANNEL

default: general
setting-type: text-channel

Channel where the bots default output goes to

BOT_LANGUAGE

default: en
setting-type: enum [de, en, nl]

The output language of the bot

BOT_LOGGING_CHANNEL

default: false
setting-type: text-channel

The channel where the logging of events happens. Such as users joining/leaving

Setting this to 'false' will disable it (without the quotes)

To enable it, set this setting to match the channel name where you want the logging to happen
If you specify an invalid channel, this setting will disable itself

BOT_MODLOG_CHANNEL

default: false
setting-type: text-channel

The channel where mod-logging happens.
A case will appear if a user has been banned/kicked/warned/muted

Setting this to 'false' will disable it (without the quotes)

To enable it, set this setting to match the channel name where you want the moderation-cases to go
If you specify an invalid channel, this setting will disable itself

BOT_MUTE_ROLE

default: false
setting-type: discord-role

This is the role which is applied to those who you use the mute command on

Setting this value to false will disable the role applied with the mute command

BOT_UPDATE_WARNING

default: playing
setting-type: enum [always, playing, off]

Show a warning that there is an update and that the bot will be updating soon.
always -> always show the message in the bot's configured default channel
playing -> only announce when the bot is playing music and in the bot's configured music channel
off -> don't announce when the bot is going down for an update

CHAT_BOT_ENABLED

default: false
setting-type: toggle

Setting this to true will make it so that it responds to every message in the configured bot_channel

CLEANUP_MESSAGES

default: no
setting-type: enum [no, yes, nonstandard]

Delete messages after a while?
yes -> Always delete messages
no -> Never delete messages
nonstandard -> delete messages outside of bot's default channel

COMMAND_LOGGING_CHANNEL

default: false
setting-type: text-channel

The channel command usage will be logged to

Example output:
Kaaz#9436 has used say in #general
arguments: this is not a test
output: this is not a test

Setting this to 'false' will disable it (without the quotes)
To enable it, set this setting to match the channel name where you want the command logging to happen
If you specify an invalid channel, this setting will disable itself

COMMAND_PREFIX

default: $
setting-type: enum

Prefix for commands (between 1 and 4 characters)

DEBUG

default: false
setting-type: toggle

Show some debug information.

valid values:
true -> Show a lot more additional information
false -> don't

If you want to check if certain things are (not) working.

HELP_IN_PM

default: false
setting-type: toggle

show help in a private message?
true -> send a message to the user requesting help
false -> output help to the channel where requested

MODULE_ECONOMY

default: true
setting-type: toggle

Use the economy feature?
false -> nope!
true -> yep!

MODULE_GAMES

default: true
setting-type: toggle

Let people play games against each other

MUSIC_CHANNEL

default: false
setting-type: text-channel

Channel where the bots music-related output goes to

MUSIC_CHANNEL_AUTO

default: false
setting-type: voice-channel

The channel where I automatically connect to if a user joins

false:
Not using this setting, wont auto-connect to anything.

setting this to match a voice channel name:
The moment a user connects to the specified channel I connect too and start to play music.

Important to note:

MUSIC_CHANNEL_TITLE

default: false
setting-type: enum [auto, true, false]

Updates the music channel's topic with the currently playing song

auto -> update the title every 10 seconds with the track its playing
true -> yes change the topic at the beginning of every song
false -> leave the channel topic title alone!

MUSIC_CLEAR_ADMIN_ONLY

default: true
setting-type: toggle

Only allow admins to clear the music add?

true
Only admins can clear the music add

false
Everyone can clear the add

MUSIC_PLAYING_MESSAGE

default: clear
setting-type: enum [normal, clear, off]

Clear the now playing message?
clear -> sends a message and deletes it when the song is over or skipped
normal -> send the message and just leave it be
off -> don't send now playing messages

MUSIC_QUEUE_ONLY

default: false
setting-type: toggle

Stop playing music once the add is empty?

true
once the add is empty I stop playing music and leave the voice channel

false
If the add is empty, I'm gonna pick the track.

MUSIC_RESULT_PICKER

default: 1
setting-type: enum

the amount of results the play command returns

If its set to 1, it will always use the first result (no manual choice)

If its set higher (max 5) it will respond with reactions where each button is a choice
Note: This setting does require the add reactions permission

MUSIC_ROLE_REQUIREMENT

default: false
setting-type: discord-role

In order to use music commands you need this role!
Setting this value to false will disable the requirement

MUSIC_SHOW_LISTENERS

default: false
setting-type: toggle

Show who's listening in the current command
true -> List all the people who are currently listening to music
false -> Don't show listeners

MUSIC_SKIP_ADMIN_ONLY

default: false
setting-type: toggle

Only allow admins to use the skip command?

true
Only admins have permission to use the skip command

false
Everyone can use the skip command

MUSIC_VOLUME

default: 100
setting-type: enum

sets the default volume of the music player
So the next time the bot connects it starts with this volume

Accepts a value between 0 and 100

MUSIC_VOLUME_ADMIN

default: false
setting-type: toggle

Require a guild admin to change the volume

true -> only allow guild admins to change the bot's volume
false -> allow all users to change the bot's volume

MUSIC_VOTE_PERCENT

default: 40
setting-type: enum

Percentage of users (rounded down) required to skip the currently playing track

eg; when set to 25, and 5 listeners it would require 2 users to vote skip

Accepts a value between 1 and 100

PM_USER_EVENTS

default: false
setting-type: toggle

Send a private message to owner when something happens to a user?
true -> sends a private message to guild-owner
false -> does absolutely nothing

SHOW_TEMPLATES

default: false
setting-type: toggle

Show which templates are being used on places.

valid values:
true -> Shows the keyphrases being used
false -> Shows normal text

for instance if you don't have permission to access a command:

setting this to true would show:
no_permission

false would show:
You don't have permission to use that!

SHOW_UNKNOWN_COMMANDS

default: false
setting-type: toggle

Show message on nonexistent commands and blacklisted commands
true -> returns a help message
false -> stays silent

USER_TIME_RANKS

default: false
setting-type: toggle

This setting will require me to have the manage role permission!
Users are given a role based on their time spend in the discord server
If you'd like to use the time based ranks, be sure to check out the other settings first!
Setting: Use time based ranks?
true -> yes
false -> no

USER_TIME_RANKS_PREFIX

default: [rank]
setting-type: enum

The prefix of the role name for the time based role ranking
Using this prefix to manage roles so make sure its somewhat unique! Or you'll have to cleanup yourself :)
If you'd like to use the time based ranks make sure to set this first!

The prefix can be between 3 and 8 in length

WELCOME_NEW_USERS

default: false
setting-type: toggle

Show a welcome message to new users?
Valid options:
true -> shows a welcome when a user joins or leaves the guild
false -> Disabled, doesn't say anything

The welcome message can be set with the template:
welcome_new_user

The welcome back message can be set with the template (if the user had joined before):
welcome_back_user

The leave message can be set with the template:
message_user_leaves

If multiple templates are set a random one will be chosen
See the template command for more details

Ranking system

The auto ranking system is based on the join date of the user. After a set amount of time the user will be promoted to the next rank. The ranks will be created/maintained by the bot.

The following settings will affect the ranking system user_time_ranks user_time_ranks_prefix

note: In order for this to work the bot needs the manage roles permission on discord.

The rankings go according to the table below:

Name Time spend
Spectator 16 minutes
Outsider about an hour
Lurker 4 hours
Neutral about a day
Prospect 2 days
Friendly 4 days
Regular 7 days
Honored 14 days
Veteran 28 days
Revered 50 days
Herald 75 days
Exalted 125 days
Beloved 200 days
Favorite 365 days
Consul 500 days

Run the bot yourself

Also prepare a MariaDB SQL server (either hosted or installed locally).
Then continue with the following steps.

  1. Create a database

    Create a database using the utf8mb4 character set.
    To make this easier you can do this using a SQL management tool like PHPMyAdmin or HeidiSQL.

  2. Clone the project with git

    cd /path/to/your/project/folder
    git clone https://github.com/Kaaz/DiscordBot.git
  3. Collect dependencies

    cd into the directory that git just created (should be called DiscordBot).
    Then type gradle install.

  4. Build

    Type gradle shadowJar in the DiscordBot folder. In the build/libs/ folder there should be a file called Emily-{VERSION}-all.jar (where version is the latest version number). Move this file over to a location wherever you want to start the bot from.

  5. Run

    You can launch the bot with the following command: java -jar <jarfilename> On first launch, It will generate an application.cfg file and exit.
    You'll have to edit the config file and add in your token, database configuration, etc.

Usage

On the first run it will generate a config file and stop running. You'll need to at least set the token and the property bot_enabled to true

Command details

8ball

See what the magic 8ball has to say

Aliases: 8ball

Usable in public and private channels

ban

bans a member from your guild

Aliases: ban

Usable in public channels

Usage

ban <user>     //Permanently removes user from guild user from guild

blackjack

play a game of blackjack!

Aliases: blackjack, bj

Usable in public and private channels

Usage

blackjack        //check status
blackjack hit    //hits
blackjack stand  //stands

botstatus

Set the game I'm currently playing

Aliases: botstatus

Usable in public and private channels

Usage

botstatus reset                      //unlocks the status
botstatus game <game>                //changes the playing game to <game>
botstatus stream <username> <game>   //streaming twitch.tv/<username> playing <game>

case

Moderate the mod-cases

Aliases: case

Usable in public channels

Usage

case reason <id> <message>  //sets/modifies the reason of a case
case reason last <message> //sets/modified the reason of the last added case by you

catfact

Cat facts!

Aliases: catfact, catfacts

Usable in public and private channels

changename

Changes my name

Aliases: changename

Usable in public and private channels

cla

manage the changelog

Aliases: cla

Usable in public and private channels

Usage

cla <version> <type> <message>     //adds a change to <version> of <type> with <message>
cla current <type> <message>       //shortcut for current version
cla next <type> <message>          // ^ next version
cla types
cla <version> publish <true/false> //publish the log for version (or not)

command

Add and remove custom commands. There are a few keywords you can use in commands. These tags will be replaced by its value

Key Replacement


%user% Username %args% everything the user said besides the command %arg1% the first argument of the user %arg9% the 9th argument etc. a new argument starts after a space %user-mention% Mentions user %user-id% ID of user %nick% Nickname %discrim% discrim %guild% Guild name %guild-id% guild id %guild-users% amount of users in the guild %channel% channel name %channel-id% channel id %channel-mention% Mentions channel %rand-user% random user in guild %rand-user-online% random ONLINE user in guild

Aliases: command, cmd, customcommand

Usable in public channels

Usage

command add <command> <action>  //adds a command
command delete <command>        //deletes a command
command                         //shows a list of existing custom commands

commandadmin

Commands can be enabled/disabled through this command. A channel specific setting will always override the guild setting

You can also give/deny permission to roles to use certain commands

Aliases: commandadmin, ca

Usable in public channels

Usage

ca <command> [enable/disable]               //enables/disables commands in the whole guild
ca <command> [enable/disable] [#channel]    //enables/disables commands in a channel. This overrides the above
ca all-commands [enable/disable]            //disable/enable all (disable-able commands)
ca all-commands [enable/disable] [#channel] //disable/enable all commands in that channel

ca resetchannel [#channel]                  //resets the overrides for a channel
ca resetallchannels                         //resets the overrides for all channels
ca reset yesimsure                          //enables all commands + resets overrides

examples:
ca meme disable                             //this disabled the meme command
ca meme enable #spam                        //overrides and meme is enabled in #spam

config

Gets/sets the configuration of the bot

Aliases: config, setting, cfg

Usable in public channels

Usage

config                    //overview
config page <number>      //show page <number>
config tags               //see what tags exist
config tag <tagname>      //show settings with tagname
config <property>         //check details of property
config <property> <value> //sets property

config reset yesimsure    //resets the configuration to the default settings

current

retrieves information about the song currently playing

Aliases: current, playing, np, nowplaying

Usable in public channels

Usage

current                 //info about the currently playing song
current seek <time>     //go to specified timestamp of track (eg. 3m10s)
current vote <1-10>     //Cast your vote to the song; 1=worst, 10=best
current repeat          //repeats the currently playing song
current update          //updates the now playing message every 10 seconds
current updatetitle     //updates the topic of the music channel every 10 seconds
current source          //Shows the source of the video
current pm              //sends you a private message with the details

current clear               //clears everything in the queue
current clear admin         //check if clear is admin-only
current clear admin toggle  //switch between admin-only and normal

debug

some debugging tools

Aliases: debug

Usable in public and private channels

Usage

fixusernames, fixrelations 

donate

general info about how to contribute or donate to Emily

Aliases: donate, contribute

Usable in public and private channels

exec

executes commandline stuff

Aliases: exec

Usable in public and private channels

exit

completely shuts the bot down

Aliases: exit, brexit

Usable in public and private channels

fight

get in an epic fight; (gif fight)

Aliases: fight

Usable in public channels

Usage

fight         //random user fights
fight <user>  //<user> fights

fml

fmylife! Returns a random entry from fmylife.com

Aliases: fml

Usable in public and private channels

game

play games against eachother!

Aliases: game

Usable in public channels

Usage

game list                 //to see a list games
game <@user> <gamecode>   //play a game against @user
game cancel               //cancel an active game!

getrole

allows users to request a role

Aliases: getrole

Usable in public channels

Usage

list                //see what roles are available
remove <rolename>   //removes the <rolename> from you
<rolename>          //assign the <rolename> to you 

gif

Gifs from giphy

Aliases: gif

Usable in public and private channels

Usage

gif         //shows random gif
gif <tags>  //random gif based on tags

globalban

Ban those nasty humans

Aliases: globalban

Usable in public and private channels

guildstats

shows some statistics

Aliases: guildstats, stats

Usable in public and private channels

Usage

stats         //stats!
stats mini    //minified!
stats users   //graph of when users joined!
stats activity//last activity per shard

help

An attempt to help out

Aliases: help, ?, halp, helpme, h, commands

Usable in public and private channels

Usage

help            //shows commands grouped by categories, navigable by reactions 
help full       //index of all commands, in case you don't have reactions
help <command>  //usage for that command

info

Shows some general information about me and my future plans.

Aliases: info, about

Usable in public and private channels

Usage

info          //general info

invite

Provides an invite link to add the bot to your server.

Aliases: invite, inv

Usable in public and private channels

join

joins a voicechannel

Aliases: join

Usable in public channels

Usage

join                //attempts to join you
join <channelname>  //attempts to join channelname

joke

An attempt to be funny

Aliases: joke

Usable in public and private channels

kick

Kicks a member from your guild

Aliases: kick

Usable in public channels

Usage

kick <user>     //Remove user from the guild user from guild

leaveguild

leaves guild :(

Aliases: leaveguild

Usable in public and private channels

Usage

leaveguild     //leaves the guild

logging

log all the things! Configure how/where/what is being logged

Aliases: logging, log

Usable in public and private channels

meme

generate a meme!

Aliases: meme

Usable in public and private channels

Usage

meme type                             //list of all valid types
meme <type> <toptext> | <bottomtext>  //make the meme!
meme <type> <toptext>                 //with just toptext!

example: 
meme sohappy If I could use this meme | I would be so happy

modcase

Modcases

Aliases: modcase, case

Usable in public channels

Usage

kick <user>            //kicks user

music

gets and sets the music-related settings

Aliases: music

Usable in public channels

Usage

music                   //shows music configuration

mute

Mute a member from your guild

Aliases: mute

Usable in public channels

Usage

mute <user>     //Adds the configured muted role to user user from guild

pause

pauses the music or resumes it if its paused

Aliases: pause, resume

Usable in public channels

ping

checks the latency of the bot

Aliases: ping

Usable in public and private channels

Usage

ping                         //Check bot latency
ping fancy                   //Check bot latency in a fancier way

play

Plays a song from youtube

Aliases: play, p

Usable in public channels

Usage

play <youtubelink>    //download and plays song
play <part of title>  //shows search results
play                  //just start playing something

playlist

information about the playlists

Aliases: playlist, pl

Usable in public channels

Usage

-- using playlists 
playlist mine          //use your default playlist
playlist mine <code>   //use your playlist with code
playlist lists         //see what playlists you have 
playlist guildlists    //see what playlists the guild has
playlist guild         //use the guild's default playlist
playlist guild <code>  //use the guild's playlist with code
playlist global        //use the global playlist
playlist settings      //check the settings for the active playlist
playlist               //info about the current playlist
playlist list <page>   //Shows the music in the playlist

-- Adding and removing music from the playlist
playlist add                         //adds the currently playing music
playlist add guild                   //adds the currently playing to the guild list
playlist remove                      //removes the currently playing music
playlist removeall                   //removes ALL songs from playlist

-- Changing the settings of the playlist
playlist title <new title>           //edit the playlist title
playlist edit <new type>             //change the edit-type of a playlist
playlist play <id>                   //plays a track from the playlist
playlist playtype <new type>         //change the play-type of a playlist

pm

Send a message to user

Aliases: pm

Usable in public and private channels

Usage

pm <@user> <message..>

poll

Strawpoll: propose a question and choices for the chat to vote on

Aliases: poll

Usable in public channels

Usage

poll          //status of active poll 
poll create <question> ;<option1>;<option2>;<etc.>   (max 8)
              //creates a poll for the duration
poll 1-9      //vote on the options

prefix

Forgot what the prefix is? I got you covered

Aliases: prefix

Usable in public and private channels

Usage

prefix                           //shows the set prefix
prefix <prefix>                  //sets the prefix to <prefix>

purge

deletes non-pinned messages

Aliases: purge, clear, delete

Usable in public channels

Usage

//deletes up to 100 non-pinned messages
purge
//deletes <limit> (max 2500) non-pinned messages
purge <limit>
//deletes messages newer than now - (input)
purge time 1d2h10m         //you can use dhms and combinations 
//deletes <limit> messages from <user>, limit is optional
purge @user [limit]
//deletes messages from <user>, user can be part of a user's name
purge user <user>
//deletes messages matching <regex>
purge matches <regex>
//delete messages NOT matching <regex>
purge notmatches <regex>
//delete command related messages
purge commands
//deletes bot messages
purge bot

queue

check whats in the music queue

Aliases: queue, q

Usable in public channels

Usage

queue        //overview

reactionrole

Adds and removes roles from users based on reactions from a message

You save messages/reactions to keys to make maintaining them a little easier.

Aliases: reactionrole, rr

Usable in public channels

Usage

rr //overview of all the configured keys
rr add <key> <emote> <role> //adds a reaction with role to the message
rr remove <key> <emote>     //removes emote reaction from key
rr delete <key>             //deletes the set
rr message <key> <message>  //updates the message
rr display <key> [channel]  //displays the message in this channel
                            //or in the channel you specified

reboot

restarts the bot

Aliases: reboot, restart

Usable in public and private channels

Usage

reboot now              //reboots the system
reboot now firm         //reboots the system, but ensures a restart in 5 minutes
reboot update           //reboots the system and updates
reboot update firm      //reboots the system and updates, but ensures a restart in 5 minutes
reboot shard <id>       //reboots shard
reboot shard <guildid>  //reboots shard for guild-id

reddit

Posts something from reddit

Aliases: reddit, r

Usable in public and private channels

Usage

r <subreddit>

reload

reloads the configuration

Aliases: reload

Usable in public channels

report

Report bugs/abuse/incidents

Aliases: report

Usable in private channels

Usage

report <subject> | <message..>

roleadmin

Management of roles & general permissions You can give users the ability to self-assign roles.

Note: self-assignable roles are not created by emily! To add an assignable role, you'll first have to add that role though discord.

Users can get/remove their own roles with the getrole command

Aliases: roleadmin, ra

Usable in public channels

Usage

You can specify which roles are self-assignable by users with the following commands: 

roleadmin self                                 //check what roles are self-assignable
roleadmin self add <rolename>                  //add a role to the list of assignable roles
roleadmin self remove <rolename>               //remove a role from the list of assignable roles

//You can use everyone as <user> and it'll apply to everyone
roleadmin give <user> <role>     //gives a user a role
roleadmin take <user> <role>     //takes away role

roleadmin                        //lists roles
roleadmin cleanup                //cleans up the roles from the time-based rankings
roleadmin setup                  //creates the roles for the time-based rankings

roll

if you ever need a random number

Aliases: roll, dice, rng

Usable in public and private channels

Usage

roll               //random number 1-6
roll <max>         //random number 1-<max>
roll <min> <max>   //random number <min>-<max>
roll XdY           //eg. 2d5 rolls 2 dice of 1-5 and returns the sum
roll XdY+z         //eg. 2d5+2 rolls 2 dice of 1-5 and returns the sum plus 2

rotate

Rotate text!

Aliases: rotate

Usable in public and private channels

Usage

rotate <text..> 

sendfile

executes commandline stuff

Aliases: sendfile

Usable in public and private channels

server

Information about the server

Aliases: server

Usable in public channels

skip

skip current track

Aliases: skip, next

Usable in public channels

Usage

skip                  //skips current track
skip adminonly        //check what skipmode its set on
skip adminonly toggle //toggle the skipmode
skip force            //admin-only, force a skip

slot

Feeling lucky? try the slotmachine! You might just win a hand full of air!

Aliases: slot

Usable in public and private channels

Usage

slot              //spin the slotmachine
slot [cookies]    //play for real cookies where [cookies] is the amount of cookies you bet
slot info         //info about payout

stop

stops playing music

Aliases: stop, leave

Usable in public channels

Usage

stop          //stops playing and leaves the channel
stop force    //stops playing and leaves the channel (admin, debug)
stop afternp  //stops and leaves after the now playing track is over

subscribe

subscribe the channel to certain events

Aliases: subscribe, sub

Usable in public channels

Usage

subscribe                //check what subscriptions are active
subscribe <name>         //subscribe to subject
subscribe stop <name>    //stop subscription to subject
subscribe list           //See what subscription options there are

system

Shows memory usage

Aliases: system, sysinfo, sys

Usable in public and private channels

tag

Tags!

Aliases: tag, t, tags

Usable in public channels

Usage

tag                     //list of tags
tag <name>              //shows the tag
tag mine                //shows your tags
tag by <name>           //shows tags created by user
tag details <tag>       //shows info about tag
tag list                //shows all tags 
tag deleteuser <@user>  //deletes tags by user
tag delete <name>       //deletes tag
tag <name> <content>    //creates the tag

tempban

Bans a user for a while

Aliases: tempban

Usable in public channels

Usage

tempban <user>     //Remove user from guild, unable to rejoin for a while user from guild

template

adds/removes templates

Aliases: template, tpl

Usable in public and private channels

Usage

template <keyphrase>                  //shows all templates for a keyphrase
template add <keyphrase> <text...>    //adds a template for keyphrase
template search <contains>            //searches for keyphrases matching part of the <contains>
template list <page>                  //lists all keyphrases
template remove <keyphrase> <index>   //removes selected template for keyphrase
template debug [on/off]               //enables/disabled debugging of templates

There are a few keywords you can utilize in templates. These keywords will be replaced by its value 
To see which variables are at your disposal:

template variable                    //all variables
template variable <keyphrase>        //variables for that keyphrase

for users with botadmin+, use 'template global ...' for global templates

test

kaaz's test command

Aliases: test

Usable in public channels

Usage

NOPE

todo

administer todo items

Aliases: todo

Usable in public and private channels

Usage

todo                         //overview of your lists items
todo create                  //creates the list
todo list <name/code>        //check todo items of a list
todo add <text>              //adds a todo item to your list
todo remove <id>             //removes a todo item from your list
todo check <text>            //marks an item as checked
todo uncheck <text>          //marks an item as unchecked
todo clearchecked            //deletes checked items
todo priority <number> <priority>     //sets a priority of a todo item

ud

A veritable cornucopia of streetwise lingo

Aliases: ud

Usable in public and private channels

Usage

ud <anything>  //looks up what it means on urban dictionary

uptime

How long am I running for?

Aliases: uptime

Usable in public and private channels

user

Shows information about the user

Aliases: user, whois

Usable in public and private channels

Usage

user                             //info about you
user @user                       //info about @user
user @user joindate yyyy-MM-dd   //overrides the join-date of a user
user @user joindate reset        //restores the original value
user guilds @user                //what guilds/shards @user most likely uses

userrank

This command is intended for bot admins

Aliases: userrank, ur

Usable in public channels

Usage

userrank <user>                   //check rank of user
userrank <user> <rank>            //gives a rank to user
userrank <user> perm <+/-> <node> //adds/removes permission from user
userrank permlist                 //lists all permissions
userrank ranks                    //lists all ranks

version

Shows what versions I'm using

Aliases: version, v

Usable in public and private channels

Usage

version  //version usage

volume

gets and sets the volume of the music

Aliases: volume, vol

Usable in public channels

Usage

volume              //shows current volume
volume <1 to 100>   //sets volume

warn

Give a user a warning

Aliases: warn

Usable in public channels

Usage

warn <user>     //Adds a strike to the user user from guild

Global configuration

The global configuration is stored in the application.cfg file, which is generated the first time you run the application

The following settings can be set globally:

Setting name default description
BOT_ENABLED false Enables the bot
This must be set to true in order to run the bot
BOT_AUTO_UPDATE false Enable automatic updates.
For this to work you'll have to launch the bot though my other project
https://github.com/Kaaz/ConfigurationBuilder
BOT_NAME "NovaBot" the default name of the bot,
BOT_CHANNEL_ID "225170823898464256" Discord channel is of the bot's own channel
BOT_TOKEN "mybottokenhere" token used to login to discord
BOT_CHATTING_ENABLED true Enable cleverbot
BOT_COMMAND_PREFIX "!" prefix for all commands !help etc. This can be overriden per guild
BOT_COMMAND_LOGGING true save the usage of commands
BOT_COMMAND_SHOW_UNKNOWN false Reply to non existing commands?
eg. hey that command doesn't exist
MUSIC_DOWNLOAD_SOUNDCLOUD_EXE "H:/" location of the soundcloud jar
MUSIC_DOWNLOAD_SOUNDCLOUD_API_TOKEN "some-token" token used to connect to soundcloud
YOUTUBEDL_EXE "H:/youtube-dl.exe" location of youtubedl.exe
YOUTUBEDL_BIN "H:/music/bin/" folder with the binary files required for ffmpeg
MUSIC_DIRECTORY "H:/music/" directory where all the music is stored
DB_HOST "localhost" sql hostname
DB_USER "root" sql user
DB_PASS "" sql password
DB_NAME "discord" sql database name
MODULE_ECONOMY_ENABLED true enable economy globally
MODULE_POE_ENABLED true enable poe globally
MODULE_HEARTHSTONE_ENABLED true enable hearthstone globally
MODULE_MUSIC_ENABLED true enable music globally
ECONOMY_CURRENCY_NAME "" name of the currency
ECONOMY_CURRENCY_ICON "" emoticon of the currency
TRELLO_ACTIVE false Use trello integration
TRELLO_API_KEY "api-key-here" Use trello integration
TRELLO_BOARD_ID "1234" trello board id
TRELLO_LIST_BUGS "1234" trello list id
TRELLO_LIST_IN_PROGRESS "1234" trello list id for in progress items
TRELLO_LIST_PLANNED "1234" trello list id for planned items
TRELLO_TOKEN "token-here" the trello token