Set up </DANSDAY> Bot

From adding the bot to configuring every module, field by field. Everything is set in the browser; members use it through the Discord menu.

Add the bot to start

Get started

Three steps take you from nothing to a configurable server.

1

Add the bot

Invite the bot to your server. It joins instantly and is ready to run /setup.

2

Run /setup

In Discord, run /setup. It builds a menu category of channels and posts the bot interface. Owner or Administrator only.

3

Open the panel

After /setup, register the owner account from the link it gives you, then sign in to the web panel to configure everything.

Official bot vs selfbot

The official bot runs everything. A selfbot is optional and only needed for two features.

Official bot

The real Discord bot application you invite with an OAuth link. It runs almost everything: leveling, items, moderation, welcomer, booster, giveaways, AFK, feedback, staff rating, custom supporter roles, the /setup command, and every menu button.

How to add Invite it with the OAuth link (the "Add the bot" button). It joins as a normal bot user with the permissions the features need.
Token For the hosted bot this is handled for you. Self-hosters store the bot token in the database bots table, not in Discord, and point the process at it with BOT_ID.
Runs All standard features and slash/button interactions.

Selfbot (optional)

An optional user-token client for features that need a real user account. Only two features require it: the Discord Quest notifier and the message Forwarder. Everything else uses the official bot.

Requires a selfbot Discord Quest notifier and Message forwarder. Their config pages warn you if no selfbot is running for the server.
How to add Add a selfbot under the Selfbots page for the server and paste a user token. It is stored encrypted. Adding, starting, stopping, restarting and deleting are owner-only; staff see it read-only.
Risk A selfbot uses a user account token. Use it in line with Discord’s terms and your own risk assessment. It is entirely optional.

The /setup command

Run /setup in Discord (owner or Administrator only). It creates a </DANSDAY> Menu category with these channels and posts the bot interface in the menu channel. If no owner account exists yet, it hands you a registration link to claim ownership.

「💻」menu Holds the main interface button members click to open the bot menu.
「⚙️」bot-updates Bot update notifications.
「🚪」welcome Where welcome messages post.
「🚀」booster Where server boost messages post.
「🔨」moderation Moderation (ban/kick) log embeds.
「🆙」level Level and rank progress notifications.
「🎁」giveaway Giveaway posts and winner announcements.
「⭐」staff-rating Staff rating reports and updates.
「📜」discord-quest Discord Quest notifications.
「📽️」content-creator Content creator posts and TikTok LIVE alerts.
「👗」roblox-catalog Roblox catalog item alerts.
「🛍️」items Link to the items shop.

Accounts & staff

Sign in with Discord. The person who claims the first invite is the owner; they bring in helpers from the Accounts page.

Owner Full control of the server in the panel. The first owner registers from the link /setup generates. Owners can invite more owners and staff.
Staff Staff-tier panel access, invited by an owner. What they can change is set by Permissions, separate from Discord chat or moderation rights.
Send Invite Pick an invite type (Owner or Staff), choose Discord members, and the bot DMs them a registration link that expires 10 minutes after creation.
Accounts list Every registered account with its type. Lock/unlock freezes an account (frozen accounts cannot log in), and delete removes it permanently.
Invite Links All generated invites with their status (Pending, Used, Expired) and a countdown. Expire a pending invite to revoke it before use.

Who can do what

Account tiers control who manages the panel. They are separate from the Discord permission roles below, which control who can use features in Discord.

Owner

Full control of one server in the panel. The first owner claims the link from /setup.

  • Configure every module and permission for the server
  • Invite, freeze and delete staff accounts (not other owners)
  • Create and expire invite links
  • Add, start, stop, restart and delete selfbots
  • Invite more owners

Staff

Helper access invited by an owner. What they can change depends on the permission roles.

  • View and change settings allowed by their permission roles
  • Use staff features like the rating review queue
  • View selfbots read-only (cannot start or manage them)
  • Cannot invite, freeze or delete any account
  • Cannot run /setup

Superadmin

Global panel administrator (mainly relevant to self-hosters who run the whole instance).

  • Access every bot and server on the instance
  • Manage and freeze any account, including owners
  • Delete any account and expire any invite
  • Effectively unrestricted across the panel

Permissions

Map Discord roles to what they unlock. Set these on the Permissions page.

Admin Roles Full access to all bot features and configuration.
Staff Roles Used for staff features and staff-related filtering.
Content Creator Roles Roles treated as content creators in permissions and member filtering.
Supporter Roles Marks members as supporters for supporter-only features.
Member Roles Only members with these roles are eligible to earn leveling XP.

Modules, field by field

Each module has a master toggle plus its own settings. Turn on only what you need.

Leveling & XP

Chat and voice activity earn XP that feeds levels, role rewards and leaderboards.

Leveling module Master toggle. When off, XP, voice time and the leveling Discord UI are disabled.
Base XP XP needed to reach level 2 (50 to 1000). Higher levels scale from this and the multiplier.
Multiplier Exponential multiplier for level requirements (1.0 to 2.0). Higher makes each level progressively harder.
XP Per Message XP awarded per eligible message (5 to 100). The message must pass the cooldown and the member must have a member role.
Message Cooldown (seconds) Minimum gap between messages that earn XP (0 to 180). Messages sent too fast award nothing.
Active Voice XP XP granted each interval while active in voice (5 to 100).
AFK Voice XP XP granted each interval while AFK in voice (5 to 100).
Voice Cooldown (seconds) How often voice XP is awarded (0 to 180). The voice XP above is granted each interval.
Video / camera XP Extra XP per voice tick while your camera is on, even if muted. 0 disables. Stacks with voice XP.
Live stream XP Extra XP per voice tick while using Go Live, even if muted. 0 disables. Stacks with voice and video XP.
Level Progress Notification Channel Channel for level-up and rank notifications.

Items & economy

A per-server shop of PvP and utility items bought with XP. Items are created in the global admin Items page; each server enables the system from the Public statistics config page (Items toggle + channel). Requires Public statistics to be on.

Items toggle (under Public statistics) When off, the Items tab and all buy/use actions are disabled for this server.
Item Events Channel Where steal, bomb, leech, gift and other item announcements post. Keep it separate from the level channel. If unset, item events are not announced.
Item: Name / Effect type / Description / Cost (XP) Per item in the admin catalog: its display name, what it does, the hover-card text and its XP price.
Item: effect settings Per effect type: Steal/Bomb use Min %, Max %, Cooldown, Victim immunity; Boost uses Multiplier, Duration, Scope (all/message/voice); Shield/Reflect/Disguise use Duration; Insurance uses Refund %, Duration, Cooldown; Gift uses Gift amount, Tax %; Leech uses Skim %, Duration; Bounty uses Bounty amount; Spy uses Spy success chance %.
Item: Availability Optional From/To dates (UTC) and recurring days plus From/To times (HH:MM) so an item only appears in a window.
Item: Show in shop / Allow use Hide an item from the shop, or block using copies members already own, without deleting it.

Welcomer

Greets new members with a custom message in one or more channels.

Welcomer module When off, welcome messages are not sent.
Welcome Channels One or more channels welcome messages post to.
Welcome Messages Your message templates. Placeholders: {user}, {server}, {memberCount}, {accountAge}.

Booster messages

Thanks members who boost the server.

Booster module When off, boost messages are not sent.
Boost Channels One or more channels boost messages post to.
Boost Messages Your templates. Placeholders: {user}, {server}, {boostLevel}, {totalBoosts}.

Giveaways

Run giveaways with entry rules and winner selection from Discord.

Giveaway module When off, giveaways and their Discord UI are disabled.
Giveaway Channel Where giveaways post and winners are announced.
Creator can participate Allow giveaway creators to enter their own giveaways.

AFK

Lets members flag themselves AFK; the bot adjusts their nickname and warns anyone who mentions them.

AFK module When off, the AFK button is hidden and all AFK behavior is disabled.

Feedback

Routes member feedback into a channel, optionally pinging a role.

Feedback module When off, feedback submissions and their Discord UI are disabled.
Feedback Channel Where feedback submissions post.
Feedback Role (optional) Role to mention when feedback is submitted.

Staff rating

Members rate staff; approved ratings drive dynamic roles placed within a hierarchy range.

Staff rating module When off, staff rating flows and their Discord UI are disabled.
Role Start (Top) Highest boundary role. Rating roles are created/updated below it.
Role End (Bottom) Lowest boundary role. Rating roles are created/updated above it.
Rating Cooldown (Days) Days a member must wait before rating the same staff member again (1 to 30).
Review channel Where submissions go for staff review.
Rating Update Channel Where rating updates and announcements are sent.
Pending review role (optional) Role to mention on pending submissions.

Moderation

Logs ban and kick actions to a channel.

Moderation module When off, moderation is disabled, including ban and kick log embeds.
Moderation Logs Channel Where moderation logs post.

Channel notifications

Lets members opt in to notifications for channels you list, from the bot menu.

Channel notification module When off, per-channel notifications and the menu action are disabled.
Channels The channels members can opt in to follow.

Custom supporter roles

Lets supporters create a personalized role within a range you define.

Custom supporter role module When off, custom supporter role creation from the bot is disabled.
Role Start (Top) Highest position where custom roles are created. New roles sit below it.
Role End (Bottom) Lowest position where custom roles are created. New roles sit above it.

Content creator / TikTok

Handles creator applications and posts TikTok LIVE alerts.

Content creator module When off, creator admission and its Discord UI are disabled.
Admission Channel Staff approval queue for pending applications.
Target Broadcast Channel Where TikTok LIVE notifications from approved creators post.
Admission Cooldown (Days) How long a member waits before reapplying (1 to 30).
Pending Admission Role (optional) Role to mention when a new application arrives.

Discord Quest notifier

Posts Discord Quest alerts. Needs a running selfbot configured for the server.

Quest notifier module When off, quest polling and posts are disabled. Requires a running selfbot when enabled.
Notification channel Where the official bot posts quest embeds.
HTTP(S) proxy (optional) Used only for the quest list endpoint. Leave empty for a direct connection.
Auto quest enrollment When on, notifications include an Enroll button for quick enrollment with a user token.

Message forwarder

Forwards messages from a selfbot channel into a channel in this server. Add as many forwarders as you need.

Forwarder module When off, message forwarding from selfbots is disabled.
Selfbot The selfbot account that forwards messages.
Server (where selfbot is) The server the selfbot is connected to.
From Channels Messages from these source channels are forwarded.
Target Channel Where forwarded messages post in this server.
Role Pings (optional) Roles to mention on forwarded messages.
Mention filter Only forward messages that mention the selfbot.
Tag (optional) A label so you can recognize this forwarder later.

Roblox catalog watch

Posts alerts when new free, limited or official Roblox catalog items appear.

Roblox catalog module When off, Roblox catalog polling and posts are disabled.
Notification channel Where the bot posts Roblox catalog embeds.

Public statistics

The master switch for all public pages: server statistics, leaderboard, members, and the per-member account (Overview, History, Guide). Items, Minigames, Assets and Daily tasks are enabled here as sub-toggles.

Public statistics module Master switch. When off, every public page and the in-Discord account link are disabled.
Items / Minigames / Assets Sub-toggles under public statistics. Each enables its account tab (and channel, for Items/Minigames). With all four off, the account still shows Overview and History; only Guide hides.
Daily tasks Sub-toggle that adds the Task tab: 9 daily and 9 weekly auto-generated goals, a 7-day check-in, and streaks. Nothing to configure — goals are sized per member from their own recent activity, and tasks for a feature you turned off never appear. Item rewards come from your shop (needs Items on) and streak milestones post to the item events channel.
Public URL The generated public address, shown when enabled. Derived from the server name.

AI chat

Members mention the bot to talk to it, or reply to one of its messages to keep going without mentioning again. Set this on the bot panel under the AI tab, not per server, so every server the bot is in shares one configuration. Each member keeps their own conversation in each server. Restart the bot after saving.

Enable AI chatrequired When off, mentions are ignored. The URL, key and model must all be set before it can be turned on.
API URLrequired Any OpenAI-compatible endpoint. A trailing slash or a full /chat/completions URL both work.
API keyrequired Stored per bot and never sent back to the browser. Leave blank when saving to keep the current key.
Model namerequired The model id your endpoint expects, for example gemini-3.6-flash or gpt-4o.
Reasoningoptional Off, Low, Medium, High or Extra high. Thinking options are matched to the model you named.
System promptoptional Sets the personality and rules for chat. Voice has its own prompt. Use {{today}} to insert the current date.
Enable voice AIoptional Lets members ask the bot in chat to join their voice channel and talk out loud. Needs AI chat on, plus its own Google AI key and voice model. Requires Redis.
Voice modeloptional A Gemini Live model, for example gemini-3.1-flash-live-preview. Only needed when voice AI is on.
Voiceoptional Which of the 30 Gemini voices the bot speaks with. Listen to them in Google AI Studio first. Leave on Default to use the model default.
Voice API URL, key and system promptoptional Voice has its own Google AI key and personality, separate from chat. Both are required to turn voice on. Always Gemini Live, so no endpoint to set.

Voice: how it behaves

Everyone in the channel is heard by one shared session.

1

Ask it to join

A member says "join voice" to the bot in chat. It joins the channel that member is in.

2

Not in a channel

If the member is not in voice, the bot says so instead of joining.

3

One call at a time

If it is already in a call, it tells the next person it is busy and stays where it is.

4

Say "hey stupid"

A trained wake-word model listens for that exact phrase, so a busy channel never sets it off.

5

One speaker at a time

Whoever wakes it holds the conversation. Say you are done to release it for the next person.

6

Mutes when idle

It answers, then mutes itself. The mute icon shows whether it is listening.

7

Follows the inviter

Moved to another channel, it goes back to whoever invited it. Only they can send it away.

8

Leaving

Ask it to leave, or it leaves when the member who invited it leaves, or when the channel empties.

9

Quiet for 3 minutes

It says a short goodbye out loud, then disconnects. There is no fixed call length limit.

Web search, fetch and images

Three optional tools the AI reaches for on its own: searching the live web, reading a page it was linked to, and drawing a picture. Each is a separate URL, model and key on the bot panel under the AI tab, so they can point at different providers. Any OpenAI-compatible gateway works. Restart the bot after saving.

Web search URL, model and keyoptional Fill all three and the bot can search the live web. Give the base URL, including any version segment — /search is appended for you.
Web fetch URL, model and keyoptional Fill all three and the bot can read a page it was linked to. Base URL again — /web/fetch is appended for you.
Image URL, model and keyoptional Fill all three and the bot can draw pictures. Base URL again — /images/generations is appended for you. Images come back at 512x512.

How it works

1

Off until filled

Each tool needs its URL, model and key. Until all three are set the bot is never offered that tool.

2

The AI decides

Nothing is forced. It searches, reads or draws only when the question calls for it.

3

Wikis come first

Game questions go to your wikis. Web search is for what the wikis do not cover.

4

Real links only

Web fetch only opens a URL a member sent or a search result returned, never an invented one.

5

Pictures post themselves

A generated image is uploaded straight to the channel. In voice it lands in the voice channel chat.

6

Keys stay server side

Every key is write-only. Save with the box blank to keep the key you already have.

Wiki knowledge

Without this, the AI answers game questions from memory and gets them wrong. Add a wiki and it looks the answer up instead. Set this on the bot panel under the Wikis tab. It applies to chat and voice alike, and to every server the bot is in.

API URLrequired The wiki api.php endpoint, usually /w/api.php or /api.php. Press Test to check it and fill in the name.
Namerequired What the AI calls this wiki when it picks one. Keep it short.
Descriptionoptional What the wiki covers. This is how the AI chooses the right one when a bot has several.
Site URLoptional The wiki home page, used when the bot links a page it read.
Relay URLoptional Only needed when a wiki blocks your server. Points at a relay.php you host somewhere the wiki does accept. Leave blank to connect straight to the wiki.
Relay keyoptional The secret set inside relay.php. Required whenever a relay URL is filled in.
Enabledoptional Turn a wiki off without deleting it. Disabled wikis are ignored by chat and voice.

How it works

1

Add a wiki

Open the bot, go to the Wikis tab and paste the api.php URL. Any MediaWiki site works, including Fandom.

2

Test it

Test confirms the endpoint answers and is really a wiki, then fills in the name for you.

3

Ask normally

Members just ask. Full questions work, not only exact page names.

4

Real numbers

Prices, weights and drop rates come from the wiki infobox, so stat answers are exact.

5

Reads the whole page

Skin lists, tables and changelogs come through in full. Nothing is trimmed.

6

Any wiki, any language

No per-game rules. Ask in Indonesian and it still finds the English page.

7

Cached 10 minutes

Repeat questions answer instantly and the wiki is not hammered.

8

Applies right away

Chat picks up a new wiki on the next message. Voice picks it up on the next call. No restart needed.

When a wiki blocks your server

A few wiki hosts refuse traffic coming from servers, so the bot gets turned away even though the address is right. A relay fixes this: it forwards the lookup from somewhere the wiki does accept. Only the wikis you point at it are affected, everything else keeps connecting directly.

1

When you need it

Some wikis refuse requests from server IPs. Test says the wiki refused, not that your URL is wrong.

2

Put relay.php online

Copy scripts/relay.php to any hosting the wiki does accept, often cheap shared hosting, and open it over https.

3

Set a secret

Edit RELAY_KEY in the file to a long random string. The relay refuses to run while the key is still the default.

4

Fill both fields

Paste the relay address into Relay URL and the same secret into Relay key, then press Test.

5

Test goes through it

With a relay set, Test uses the relay too, so a green result means the whole path works.

6

One relay, many wikis

The same relay serves any wiki. Set the fields per wiki, and leave them blank for wikis that work directly.

Set up the items shop

Two parts: enable the module per server, then create items in the admin catalog. Items are shared across every server that turns Items on.

1

Enable Items

On the server Public statistics config page, turn on the Items toggle. This shows the account link in the bot menu and unlocks buy and use actions. Public statistics must be on.

2

Set the events channel

Pick an Item Events Channel where steal, bomb, leech, gift and other announcements post. Keep it separate from the level channel. If unset, item events are not announced.

3

Create items

Open the admin Items page and add items. Each needs a name, an effect type, a description and an XP cost. Items live in the catalog and appear in every server that has Items enabled.

4

Tune the effect

Each effect type has its own settings: percentages and cooldowns for steal/bomb, multiplier and scope for boost, spy success chance, and so on.

5

Set availability (optional)

Limit an item to a date range or to recurring days and times so it only shows in a window. Leave blank for always available.

6

Control visibility

Show in shop hides or reveals an item without deleting it. Allow use lets you freeze copies members already own. You can also gift copies straight to members.

7

Members play

Members open the shop from the Items button, spend XP, and use items from their bag (which holds up to 50). The Guide tab inside the shop explains every item to them.

8

Your prices drive tasks

With Daily tasks on, your shop sets the economy: the median item cost sizes XP rewards, and item rewards are drawn from items priced near the value of the task or check-in day that earned them. Hidden and disabled items are never handed out.

The Discord menu

Members click the Menu button in the menu channel. It shows only the features they have permission for.

📋 Menu The main button in the menu channel. Opens the feature menu, showing only what a member has permission for.
💎 Custom Supporter Role Opens a modal to create or edit a personal role (name, color, icon).
🎉 Create Giveaway Starts the giveaway flow: pick an eligibility role, then fill the details form.
⏸️ Set AFK Status Opens the AFK modal, or shows your current AFK status with a Remove AFK button.
💬 Submit Feedback Opens the feedback modal with a message field and an anonymous option.
🛡️ Staff Rating Pick a staff member, choose a 1 to 5 score and category, and submit a rating.
🎬 Content Creator Shows the creator list and an Apply button (TikTok username plus reason).
🔔 Notifications Opens a selector to subscribe to the notification channels you enabled.
🌐 Select Language Switches the Discord interface language (English or Indonesian).
🌐 Statistics Link to the public stats page (shown when Public statistics is on).
👤 Account Link to the member account (Overview, Task, Items, Minigames, Assets, History, Guide) — shown when Public statistics is on.

Self-host setup

The project is open source under MIT. Run your own instance with Node, MySQL and optional Redis.

1

Provision MySQL

Create a database. The app builds its schema and runs migrations automatically on first start. Redis is optional.

2

Fill the .env

Copy .env.example to .env and set DB_*, MAIL_*, BASE_URL and CAPTCHA_SECRET. Add REDIS_URL if you use Redis.

3

Install and build

Run npm install then npm run build. The Node adapter outputs a server bundle.

4

Run it

Start with node build for production, or npm run dev while developing. The schema is created on first boot.

5

Register the bot

Create a bot in the Discord Developer Portal, add its token and application id to the bots table, then set BOT_ID for the bot process and restart.

Environment variables

Copy .env.example to .env and fill these in.

BASE_URLrequired Public base URL of your site, e.g. https://bot.example.com.
DB_HOST / DB_PORT / DB_USER / DB_PASSWORD / DB_NAMErequired MySQL connection. Or provide a single DATABASE_URL instead (mysql://user:pass@host:port/db).
MAIL_HOST / MAIL_USERNAME / MAIL_PASSWORDrequired SMTP for account emails and OTP. MAIL_PORT is optional (defaults to 587).
CAPTCHA_SECRETrequired A long random secret used by the demo login captcha.
REDIS_URLoptional Redis for sessions and caching, e.g. redis://default:pass@localhost:6379/0.
BOT_IDper bot process The database id of the bot this process runs. The token lives in the database, not in env.
OTEL_EXPORTER_OTLP_ENDPOINT / OTEL_SERVICE_NAMEoptional OpenTelemetry log export. Telemetry only turns on when the endpoint is set.