Set up Utilities Bot
You control this installation. The bot needs your own Discord application, server, host, token and private configuration. The base package sends TXT ticket transcripts; voice recording and an HTML transcript website are separate add-ons.
1. Create the Discord application
- In the Discord Developer Portal, create an application and bot. Copy the Application ID and the bot token. Do not share the token.
- Enable Server Members Intent and Message Content Intent on the bot page. The latter is required for owner prefix commands and automod.
- Invite your bot to one server with the
botandapplications.commandsscopes. Its permissions depend on which features you use: View Channels, Send Messages, Read Message History, Embed Links, Attach Files, Manage Messages, Manage Channels, Manage Roles, Moderate Members, Kick Members, Ban Members and Add Reactions. Put its highest role above any role it must grant or remove. - Copy the server ID and your own user ID using Discord Developer Mode. The application ID, server ID and owner IDs are Discord snowflakes: 17–20 digit numbers.
2. Prepare the host
Use Node.js 22 or newer with persistent storage. From the package directory:
npm ci
npm run setup
The setup helper creates config.json, .env and data/ only if missing. Edit config.json using the configuration reference. Put only the bot token in .env:
DISCORD_TOKEN=
Set file permissions to 0600 for .env, config.json and license.json. They are ignored by Git. Do not upload them with public code or send your Discord token to the seller.
Provide the seller your Application ID and server ID so they can issue your signed license.json after the agreement and payment. Put the delivered licence file in the package root. A legitimate move to a replacement application or server needs a reissued licence; your signed agreement describes that process.
3. Validate, deploy and start
npm run check
npm run verify
npm run deploy
npm start
check tests the package without Discord calls. verify checks your private config, token and signed licence. deploy registers slash commands only in the configured server. start logs the bot into Discord. Keep it running using a process manager or service supervisor. The bot will refuse to start if its token, configuration or signed licence is missing or invalid.
The first start is owner-only setup mode. Use ,status to check channels and ,panel to post a ticket panel. After testing with a non-owner account, use ,lockdown off to let configured moderators and administrators use their commands. Ticket opening and /report remain available while the setup lock is on.
4. Check each feature
- Use
/helpand/permto confirm the bot loaded and your owner ID is recognised. - In a channel chosen for support, use
,panel. Open a ticket as a non-owner, send messages, and close it as a handler with/ticket close. Confirm the private ticket log receives a.txtfile and the opener receives a copy by DM.channels.ticketLogis required before closure. - Test
/warnand/casewith a consenting test member; verify the moderation log. A failed Discord action must not be reported as a successful case. - Test
/reportand confirm it reaches the private report channel. If that channel is unavailable, the bot saves the report and tells the reporter that delivery failed. - Test any configured welcome role, welcome channel, reaction role, blocked host, giveaway and announcement in controlled channels of your licensed server before using them broadly.
5. Backups and operation
The bot stores records in data/bot.db by default and makes daily SQLite snapshots under data/backups/. Backups on the same host do not protect against losing that host; copy encrypted snapshots to storage you control and test a restore. Keep ticket logs private because they contain TXT transcripts. Review the process log after Discord or dependency upgrades.
Automod deletes messages from configured blocked hosts and messages that exceed the configured rate. It does not automatically ban users. Set the blocked-host list conservatively and review deletions in the moderation log.