hunnaG / Discord bots

Discord bots

Add one to your server with two clicks. Each entry says exactly what it needs and why.

For running a server

Tickets, roles, events, giveaways, and lookups.

TI

TicketBot

Members press one button, pick a category, and get a private channel only they and your admins can see. Admins close it with a verdict and a transcript lands in a log channel. Categories, admin roles, and ping roles are all per server.

  • Python
  • Pycord

Members press one button, pick a category, and get a private channel that only they and your admin roles can see. Admins can pull people in, close the ticket as resolved or unresolved, and a transcript lands in a log channel before the channel disappears. Everything is configured per server, so the bot can live in many communities at once.

Setup

  1. Invite the bot. It needs to manage channels and roles so it can create ticket channels and the blacklist role.
  2. As an administrator, run /ticketbot setup, giving it the admin role that should handle tickets and the channel where the “Create a Ticket” panel should appear.
  3. Optionally, add more admin roles with /ticketbot addadminrole, choose who gets pinged with /ticketbot setnotifyroles, and shape the category list with /ticketbot addcategory. The defaults are Suggestion, Complaint, Report a User, and General Question.

That’s it. The panel survives restarts, and /ticketbot help lists everything.

Good to know

Tickets live under a category named “Tickets”, and the log channel is called ticket-logs. Everyday members never type a command: the panel button and the category menu are the whole interface for them.

Commands

Anyone can use the first group. The second is for the people who run the server.

For everyone

  • /ticket create

    Get a link to the ticket panel.

    e.g./ticket create

  • /ticketbot help

    List every command.

    e.g./ticketbot help

For admins

  • /ticket closeadmin

    Close the current ticket as resolved or unresolved. The transcript goes to the log channel and the channel is removed.

    e.g./ticket close

  • /ticket adduseradmin

    Give one or more people access to the current ticket.

    e.g./ticket adduser users:@alex @sam

  • /ticket removeuseradmin

    Take people out of the current ticket.

    e.g./ticket removeuser users:@alex

  • /ticket blacklistadmin

    Stop one or more users from opening tickets.

    e.g./ticket blacklist users:@spammer

  • /ticket unblacklistadmin

    Let blacklisted users open tickets again.

    e.g./ticket unblacklist users:@spammer

  • /ticketbot setupadmin

    Create the Tickets category, the log channel, the blacklist role, and post the panel in a channel of your choice. Safe to run again; it refreshes the panel.

    e.g./ticketbot setup admin_role:@Support ticket_channel:#get-help

  • /ticketbot addcategoryadmin

    Add a ticket category with an optional emoji. Up to 25.

    e.g./ticketbot addcategory name:Billing emoji:💳

  • /ticketbot removecategoryadmin

    Remove a category. The last one cannot be removed.

    e.g./ticketbot removecategory name:Complaint

  • /ticketbot listcategoriesadmin

    Show the server's categories.

    e.g./ticketbot listcategories

  • /ticketbot addadminroleadmin

    Add roles that can handle tickets. Owner or Administrators.

    e.g./ticketbot addadminrole roles:@Support @Mods

  • /ticketbot removeadminroleadmin

    Remove ticket admin roles. Owner or Administrators.

    e.g./ticketbot removeadminrole roles:@Mods

  • /ticketbot setnotifyrolesadmin

    Choose which admin roles get pinged when a ticket opens. Owner or Administrators.

    e.g./ticketbot setnotifyroles roles:@Support

  • /ticketbot listadminrolesadmin

    Show the ticket admin roles.

  • /ticketbot listnotifyrolesadmin

    Show which roles get pinged.

What it needs

Requiredwithout these the bot cannot do its job

  • View ChannelsSees the panel channel and the ticket channels it creates.
  • Send MessagesPosts the panel, ticket welcomes, and closing notes.
  • Embed LinksThe panel and ticket messages are embeds.
  • Read Message HistoryReads the ticket back for the transcript and finds the panel after a restart.
  • Attach FilesPosts the transcript as a file in the log channel.
  • Manage ChannelsCreates the Tickets category, the log channel, and one channel per ticket, and deletes closed tickets.
  • Manage RolesCreates the blacklist role and sets who can see each ticket.

Optionaleach one switches on an extra part

  • Mention EveryonePings notify roles that are not mentionable. Without it, mentionable roles still get pinged.

Reads: Message Content intent, builds the transcript from the ticket's messages when it closes. These are Discord's privileged intents, already switched on for this bot.

DB

DBDBot

Run one command, choose the realm, choose the map, and the bot posts the overhead map so everyone can plan. Only the person who ran it controls the buttons, so two people checking maps never fight over one post.

  • Python
  • Pycord

A small helper for Dead by Daylight groups. Run one command, choose the realm from a dropdown, choose the map, and the bot posts the overhead map so everyone can plan. Only the person who ran the command can use its buttons, so two people checking different maps never fight over one post.

Setup

None. Add it, and /dbdmaps works everywhere the bot can post. No privileged intents, and nothing beyond sending messages and attaching files.

Good to know

The map controls stay live for ten minutes, then disable themselves. Run the command again if you need them back.

Commands

  • /dbdmaps

    Pick a realm, then a map, and the bot posts the map image. Reselect or cancel with the buttons under it.

    e.g./dbdmaps

What it needs

Requiredwithout these the bot cannot do its job

  • View ChannelsSees the channel the command is used in.
  • Send MessagesReplies with the map.
  • Attach FilesPosts the map image.

Reads: nothing privileged. It never sees message content or your member list.

RO

RoleReactionBot

Members react with an emoji to get a role and react again to drop it. The bot removes their reaction each time so the post stays clean. Admins build and edit posts through a form and a role picker, never by typing in chat.

  • Python
  • Pycord

A reaction-role bot that keeps the post tidy. Members react with an emoji to get a role and react again to drop it. The bot removes their reaction each time, so the post never fills up with reactions and the role list stays readable.

Setup

  1. Invite the bot. It needs Manage Roles, and in your server settings its own role must sit above every role it hands out.
  2. Optionally, as an administrator, let a role manage posts with /rolereactionbot addadminrole. The server owner can skip this.
  3. Run /rolereaction createpost, pick the channel, fill in the form, then add each emoji and role pair with the “Add a role” button or /rolereaction addrole.

Good to know

No privileged intents are needed. Posts can be edited later with /rolereaction editpost and /rolereaction addrole. Post IDs come from Discord’s “Copy Message ID” in the message menu, with Developer Mode on.

Commands

Anyone can use the first group. The second is for the people who run the server.

For everyone

  • /rolereactionbot help

    List every command.

    e.g./rolereactionbot help

For admins

  • /rolereaction createpostadmin

    Pick a channel and fill in a form with the title, description, and color. Then add emoji and role pairs with the "Add a role" button or /rolereaction addrole.

    e.g./rolereaction createpost channel:#roles

  • /rolereaction addroleadmin

    Add an emoji and role pair to an existing post.

    e.g./rolereaction addrole message_id:1398035064557801522 emoji:🎮 role:@Gamer

  • /rolereaction removeroleadmin

    Remove a role from a post, along with its reaction.

    e.g./rolereaction removerole message_id:1398035064557801522 role:@Gamer

  • /rolereaction editpostadmin

    Open a form, pre-filled with the current values, to change a post's title, description, or color.

    e.g./rolereaction editpost message_id:1398035064557801522

  • /rolereaction deletepostadmin

    Delete a post and everything stored about it.

    e.g./rolereaction deletepost message_id:1398035064557801522

  • /rolereactionbot addadminroleadmin

    Let a role manage reaction posts. Administrators only.

    e.g./rolereactionbot addadminrole role:@Mods

  • /rolereactionbot removeadminroleadmin

    Revoke that.

    e.g./rolereactionbot removeadminrole role:@Mods

  • /rolereactionbot listadminrolesadmin

    Show who can manage posts.

What it needs

Requiredwithout these the bot cannot do its job

  • View ChannelsSees the channel the post lives in.
  • Send MessagesPosts and confirms.
  • Embed LinksThe role post is an embed.
  • Add ReactionsPuts each emoji on the post so members have something to tap.
  • Read Message HistoryFinds and updates the post by its ID.
  • Manage RolesHands out and removes the roles. Its own role must sit above every role it manages.

Optionaleach one switches on an extra part

  • Manage MessagesRemoves each member's reaction after toggling their role, so the post stays tidy. Without it the reactions pile up, but roles still work.

Reads: nothing privileged. It never sees message content or your member list.

EV

EventBot

Post an event, let people sign up with a button, and close sign-ups on time. Events take individuals or whole teams with size limits and optional questions. When it's time, pick participants yourself or let the bot draw them.

  • Python
  • Pycord

Post an event, let people sign up with a button, and close sign-ups automatically at the deadline. Events can take individuals or whole teams, with a minimum and maximum team size, a yes-or-no question, and a free-text question for each sign-up. When it’s time, pick the participants yourself or let the bot draw them at random.

Setup

  1. Invite the bot. It only needs to send messages and read its own posts.
  2. Optionally, with Manage Server, give a role event-admin rights with /eventbot addadmin. The server owner and administrators already have them.
  3. Set your timezone once with /eventbot timezone, then run /event create and type times like 2026-10-12 19:00 or 10/12/2026 7:00pm. Discord timestamp codes such as <t:1700000000:F> work too.

Good to know

Sign-ups close on their own at the deadline, checked every 30 seconds. Members never need a command; the Sign Up and Un-sign buttons are the whole interface for them. No privileged intents are needed.

Commands

Anyone can use the first group. The second is for the people who run the server.

For everyone

  • /eventbot help

    List every command.

    e.g./eventbot help

For admins

  • /event createadmin

    Post a sign-up for an event. Choose individuals or teams, the channel, the event time, the sign-up deadline, and optional team sizes, questions, and a log channel. Times are plain dates in the server's timezone.

    e.g./event create title:Scrim Night signup_type:Teams channel:#events event_time:2026-10-12 19:00 signup_deadline:2026-10-11 23:59 max_team_size:5

  • /event listadmin

    Show this server's active events with edit, close, and delete buttons.

    e.g./event list

  • /event editadmin

    Change an event's title, description, time, or deadline.

    e.g./event edit message_id:1398035064557801522

  • /event closeadmin

    Close sign-ups now instead of at the deadline.

    e.g./event close message_id:1398035064557801522

  • /event pickadmin

    Hand-pick participants from the sign-ups.

    e.g./event pick message_id:1398035064557801522

  • /event pickrandomadmin

    Draw a number of participants at random.

    e.g./event pickrandom message_id:1398035064557801522 number_to_pick:8

  • /event removesignupadmin

    Remove a person or team from an event by its position in the list.

    e.g./event removesignup message_id:1398035064557801522 number:3

  • /event deleteadmin

    Delete an event post and its sign-ups.

    e.g./event delete message_id:1398035064557801522

  • /eventbot timezoneadmin

    Set the server's timezone so plain dates are read correctly. Autocompletes common zones. Needs Manage Server.

    e.g./eventbot timezone zone:America/Chicago

  • /eventbot addadminadmin

    Let up to three roles manage events. Needs Manage Server.

    e.g./eventbot addadmin role1:@Organizers

  • /eventbot removeadminadmin

    Revoke that.

    e.g./eventbot removeadmin role1:@Organizers

  • /eventbot listadminadmin

    Show who can manage events.

What it needs

Requiredwithout these the bot cannot do its job

  • View ChannelsSees the channel the event post goes in.
  • Send MessagesPosts events and log lines.
  • Embed LinksEvent posts are embeds.
  • Read Message HistoryFinds and updates its own posts as people sign up.

Reads: nothing privileged. It never sees message content or your member list.

GI

GiveawayBot

Run a giveaway two ways. Reaction entry posts an embed, members react with 🎉, and the bot ends it on time and announces the winners. Pool entry draws instantly from people you pick. Several prizes per giveaway, a per-server blacklist, and entry removal are built in.

  • Python
  • Pycord

Run a giveaway two ways. Reaction entry posts an embed, members react with 🎉, and the bot ends it on time, announces the winners in the channel, and messages them too. Pool entry draws instantly from people you pick. Several prizes per giveaway, a per-server blacklist, and the ability to pull an entry are built in. No privileged intents are needed.

Setup

  1. Invite the bot. It needs to send messages and add reactions. Manage Messages is optional and only matters if you want to remove someone’s entry.
  2. The server owner can start right away with /giveaway create. To let a role run giveaways, use /giveawaybot addadmin.

Good to know

Durations in the custom box look like 10m, 2h, or 3d. Winners are always listed and mentioned in the channel when a giveaway ends; the DM is a bonus for those who allow it.

Commands

Anyone can use the first group. The second is for the people who run the server.

For everyone

  • /giveawaybot listadmins

    Show who can run giveaways.

  • /giveawaybot help

    List every command.

    e.g./giveawaybot help

For admins

  • /giveaway createadmin

    Guided setup with menus. A form for the title and prizes, then reaction entry with a channel and duration, or an instant draw from people you pick.

    e.g./giveaway create

  • /giveaway listadmin

    Show this server's active giveaways, with buttons to end or delete each one.

    e.g./giveaway list

  • /giveaway forceendadmin

    End a giveaway now and draw the winners.

    e.g./giveaway forceend message_id:1398035064557801522

  • /giveaway deleteadmin

    Remove a giveaway without drawing.

    e.g./giveaway delete message_id:1398035064557801522

  • /giveaway removeuseradmin

    Pull someone's entry from a giveaway.

    e.g./giveaway removeuser user:@alex message_id:1398035064557801522

  • /giveaway addblacklistadmin

    Stop a user from entering giveaways in this server.

    e.g./giveaway addblacklist user:@alt-account

  • /giveaway removeblacklistadmin

    Lift that.

    e.g./giveaway removeblacklist user:@alt-account

  • /giveawaybot addadminadmin

    Let a role run giveaways. Owner or Administrators.

    e.g./giveawaybot addadmin role:@Events

  • /giveawaybot removeadminadmin

    Revoke that.

    e.g./giveawaybot removeadmin role:@Events

What it needs

Requiredwithout these the bot cannot do its job

  • View ChannelsSees the channel the giveaway goes in.
  • Send MessagesPosts giveaways and winner announcements.
  • Embed LinksGiveaway posts are embeds.
  • Add ReactionsPuts the 🎉 on the post so members can enter.
  • Read Message HistoryFinds its giveaway posts to end them on time.

Optionaleach one switches on an extra part

  • Manage MessagesLets /giveaway removeuser pull someone's 🎉 entry off the post. Without it, entries can only be ignored at draw time.

Reads: nothing privileged. It never sees message content or your member list.

For fun

Games played inside Discord.

MA

MafiaBot

The bot deals secret roles, runs the nights with private action menus, and the days with a vote. Eight roles, timers so nobody can stall the game, a private thread for the Mafia, and per-server rules and stats.

  • Python
  • Pycord

The bot deals the roles in private messages, then runs the nights and days. At night each player presses a button and gets a private menu for their role: Mafia choose a target, the Doctor protects, the Detective investigates, the Vigilante shoots, the Lookout watches. By day everyone votes with a dropdown. The bot checks for a winner after every phase and keeps per-server settings and player statistics.

Roles: Mafia, Godfather, Doctor, Detective, Vigilante, Lookout, Jester, and Townsperson.

Setup

  1. Invite the bot. It needs to send messages. The thread permissions are optional and give the Mafia a private place to talk.
  2. Roles arrive by DM. A player whose DMs are closed gets a private “View my role” button in the channel instead, so nobody has to change their settings.
  3. Optionally, as an administrator, tune the rules with /mafiabot settings, including how long a vote lasts.
  4. /mafiabot startgame @a @b @c @d or /mafiabot startgame vc.

Good to know

Each night step has a 60 second timer and the day vote has a configurable one, so a player who walks away cannot freeze the game. The settings include a testing toggle that reveals every role at game start; it is labeled as such.

Commands

Anyone can use the first group. The second is for the people who run the server.

For everyone

  • /mafiabot startgame

    Start a game in this channel with the players you mention, or type vc to use everyone in your voice channel. Four players minimum.

    e.g./mafiabot startgame players:@a @b @c @d

  • /mafiabot stats

    This server's totals and leaderboards.

    e.g./mafiabot stats

  • /mafiabot mystats

    Your own record on this server.

    e.g./mafiabot mystats

  • /mafiabot help

    The rules and commands.

    e.g./mafiabot help

For admins

  • /mafiabot settingsadmin

    Role ratios, vigilante bullets, vote length, reveal and tally options. Administrators only.

    e.g./mafiabot settings

  • /mafiabot forceendadmin

    End the channel's game and reveal every role. Administrators only.

    e.g./mafiabot forceend

What it needs

Requiredwithout these the bot cannot do its job

  • View ChannelsSees the game channel.
  • Send MessagesRuns the game in the channel.
  • Embed LinksRole cards and phase posts are embeds.

Optionaleach one switches on an extra part

  • Create Private ThreadsOpens a private thread where the Mafia plan each night. Without it, the Mafia are asked to make a group DM instead.
  • Send Messages in ThreadsLets the bot talk in that Mafia thread.
  • Manage ThreadsLocks the Mafia thread when the game ends, and on some servers is what lets the bot add the Mafia to it.

Reads: Server Members intent, starting a game from a voice channel and matching votes to players uses the member list. These are Discord's privileged intents, already switched on for this bot.