ONLINE

DuckBot

discord.py

Bot to make custom signups, jail people, and some miscellaneous fun commands.

Created By: Xain# 6873

Features

Key features:

  • Jail roles:

    • Replaces a user's roles with a pre-determined jail role. (e.g. member with role X in their roles will get them all removed and replaced with role Y). This can be used to easily mute members / or temporarily restrict their access.
    • Auto-Jail: Set up a list of banned words, that when said will cause the user to get jailed by the bot.
    • Bot remembers the user's old roles and will restore them automatically (if chosen) or on calling the free command.
    • You can set any amount of jail roles, and their priority. The bot will pick the appropriate jail role for the user and apply it to them.
  • Custom signups:

    • Create a signup message where users click a reaction to get their name added to it.
    • Can limit the amount of people who can register to an event, or make the event require the user to have a role.
    • Create signups with multiple messages and sections. Every section can have individual requirements / titles set. Bot will make sure there are no duplicate users registered to the same event.
    • Assign your custom signup a name, for easier future usage.
    • Don't want to worry about customizing a signup? The default one is applicable in most cases!
  • Fun commands:

    • DuckBot has a whole category with over 20 miscellaneous commands / games (e.g. "Rock Paper Scissors", "Trivia", "Meme maker").
    • You can disable any command you do not want, and add command cooldowns so that they are not spammed.

Setup instructions

Join the support server if you have any questions, or for more detailed instructions.

Setting up the signup commands.

What does it do?

This removes all the user's roles and replaces it with one jail role you have set up. Typically this jail role doesn't have talking permissions.

How can I achieve this?

Example of discord settings:

Then you do ,jail addrole @Member-Jail @Member
Now when doing ,jail on a user that has the @Member role they will have all their roles stripped and @Member-Jail will be added.

Can I have multiple jail roles?

Yes, but the order in which they are added with the ,jail addrole command is important.
Example:
1- ,jail addrole @jail-role1 @member
2- ,jail addrole @jail-role2 @guest
With this order if someone has both the @Member and @guest roles and they are jailed, they will get the @jail-role1

Manual Jailing

Simply do ,jail @User to jail someone indefinitely.
You can also specify an amount of time (d h m) and bot will automatically free the person.
,jail @User 10m
,jail @User 3h 45m

Automatic Jailing

Once jail roles are set up you can ban words with the banword command.
Example: ,jail banword darn 15m will make it so anyone who says "darn" will get jailed for 15 minutes.

Freeing someone from jail

Simply do ,free @User and their previous roles will be restored. This is done automatically if a jail time was specified when they were jailed.


Setting up the signup commands.

What does it do?

A signup is composed of one or more messages where users can click a reaction to get their name added to it. Typically used for event organizing. A user can only appear once per signup (no duplicates)

How can I achieve this?

Every signup consists of at least 1 message. If multiple messages they will all be identical (but share the same no duplicate user rule)
To make a basic signup do ,signup this will be a simple signup with 1 message, and 1 section.

Custom Options

There are many options such as the amount of messages ,signup {messages = 2} (again, 2 messages in 1 signup, so the no duplicate user rule persists) https://i.imgur.com/yVoJ2wV.png

While each message is identical permission and appearance wise, you can further customize it with using sections.
,signup { sections = "section1", "section2"} {reactions= :one: :two: }
would make this:

Adding the {inline} option will make them display side by side

Full list of options

{messages = X}

Where X is the amount of messages in the signup. All these messages count as one signup.
If multiple messages, then every message shares the same properties, other than the title.

{title = "msg1_title" "msg2_title" ... "msgN_title"}

The title of each message.
For no title use "" or ommit this option.

{sections = "section1" "section2" ... "sectionN"}

The sections in each message.
For no name use ""

{limits = s1_limit s2_limit ... sN_limit}

Number of members who can sign up for each section.
For no limit ommit this option or use -1 e.g {limits = 10 -1 5}
If limits are set, and no section reactions are set then the bot will try fill from top to bottom.

{reactions = s1_reaction s2_reaction ... sN_reaction}

Reacting with this emote will sign up the user to the corresponding section.

{requires = role1 role2 .... roleN}

Makes it so that users must have these roles to sign up.

{inline}

The sections will display side by side, instead of stacked on top of each other.


Bot Permissions

How does it work?

Bot settings can only be changed by someone with administrator rights.

Currently the permissions only apply to Signups and Jail. You can set up permissions for an individual or a role. There are 3 levels of permissions:

  1. Allowed
  2. None
  3. Denied

A denied permission will always overrule any allowed, for instance you allow a role to use jail, but deny a user to use jail. Even if they have the role they will not be able to use it.

How to configure

To give a role, or a user jail permissions type ,jail allow @something. To deny ,jail deny @something.
Similarly for signups you do ,signup allow and ,signup deny respectively.
To remove permissions do ,remove @something
To give both at once just do ,allow or ,deny

To see current permissions just type ,perms