TitanBot README

The project's README from github.com/codebymitch/TitanBot. As one markdown file: README.md.

TitanBot - Ultimate Discord Bot

TitanBot is a powerful, feature-rich Discord bot designed to enhance your server experience with comprehensive moderation tools, engaging economy systems, utility features, and much more. Built with modern Discord.js v14 and PostgreSQL for optimal performance and data persistence.

Support Server Discord.js PostgreSQL

Table of Contents

Features Overview

TitanBot offers a complete suite of tools for Discord server management and community engagement:

Moderation & Administration

  • Mass Actions - Bulk ban/kick capabilities
  • User Notes - Keep detailed moderation records
  • Case Management - View and track all mod actions

Economy System

  • Shop & Inventory - Buy and manage items
  • Gambling - Risk it for rewards
  • Pay System - Transfer money between users

Fun & Entertainment

  • Random Facts - Learn something new
  • Wanted Poster - Create fun wanted images
  • Text Reversal - Reverse any text

Advanced Ticket System

  • Claim & Priority - Staff ticket management
  • Ticket Limits - Prevent spam
  • Transcript System - Save ticket history

Server Stats

  • Member Counter - Live member count channels
  • Voice Counters - Track voice stats
  • Dynamic Updates - Real-time channel updates

Reaction Roles

  • Role Assignment - Self-assignable roles
  • Emoji Selection - Reaction-based system
  • Multi-role Support - Multiple role options

Leveling & XP System

  • XP Tracking - Automatic message-based XP
  • Level Roles - Auto-assign roles by level
  • Custom Configuration - Personalize leveling

Giveaways & Events

  • Multiple Winners - Support multi-winner giveaways
  • Auto Picking - Automatic winner selection
  • Reroll System - Pick new winners if needed

Birthday System

  • Birthday Tracking - Never miss a birthday
  • Auto Announcements - Celebrate automatically
  • Timezone Support - Accurate worldwide tracking

Utility Tools

  • Report System - Report issues to staff
  • Todo Lists - Personal task management
  • First Message - Jump to channel's first message

Welcome System

  • Welcome Messages - Greet new members
  • Auto Roles - Assign roles on join
  • Custom Embeds - Personalized messages

Music

  • 24/7 Mode - Play music 24/7
  • Interative Button System - Manage music through buttons
  • Supports EVERY platform - Supports spotify, deezer, youtube, apple music

Video Tutorial

For a detailed step-by-step setup guide, watch our comprehensive video tutorial: TitanBot Setup Tutorial

TitanBot is fully containerized for easy deployment.

  1. Clone the repository:

    git clone https://github.com/codebymitch/TitanBot.git
    cd TitanBot
    
  2. Configure environment variables:

    cp .env.example .env
    

    Set at minimum DISCORD_TOKEN, CLIENT_ID, and GUILD_ID. Docker Compose also reads POSTGRES_USER, POSTGRES_PASSWORD, and POSTGRES_DB from .env (defaults: titanbot / password / titanbot).

  3. Build and start the containers:

    docker compose up -d --build
    
  4. Check status:

    docker compose ps
    curl http://localhost:3000/health
    

This starts the bot and PostgreSQL. The compose file sets POSTGRES_SSL=false and AUTO_MIGRATE=true for the bundled database. Music uses public Lavalink v4 nodes from lavalink/nodes.json by default.

Music

Music uses Lavalink v4 via Riffy, similar to Musicify.

  1. By default, the bot loads multiple public v4 SSL nodes from lavalink/nodes.json (sourced from lavalink.darrennathanael.com). Edit that file to add or remove nodes.
  2. To self-host Lavalink instead, run docker compose --profile local-lavalink up -d and set single-node env vars in .env:
    LAVALINK_HOST=lavalink
    LAVALINK_PORT=2333
    LAVALINK_PASSWORD=youshallnotpass
    LAVALINK_SECURE=false
    
    Remove or rename lavalink/nodes.json so the bot falls back to those env vars.
  3. Override nodes inline with LAVALINK_NODES (JSON array) or point at another file with LAVALINK_NODES_FILE.
  4. Use /play <song> from a voice channel, or /join to connect without playing. Prefix shortcuts: join, np, leave, pause, resume, skip, stop, volume <0-100>, or music <subcommand>. Use /nowplaying and /queue for status; /music for loop, shuffle, seek, and other controls.

Using GitHub Container Registry

The bot is automatically published to GitHub Container Registry on every push to main.

docker pull ghcr.io/codebymitch/titanbot:main

Manual Installation Steps

Prerequisites

  1. Clone the Repository

    git clone https://github.com/codebymitch/TitanBot.git
    cd TitanBot
    
  2. Install Dependencies

    npm install
    
  3. Configure Environment Variables

    cp .env.example .env
    

    Edit .env with your configuration (only the following variables require configuration, leave remaining variables as default):

    # Discord Bot Configuration
    DISCORD_TOKEN=your_discord_bot_token_here
    CLIENT_ID=your_discord_client_id_here
    GUILD_ID=your_discord_guild_id_here
    
    # PostgreSQL Configuration (Primary Database)
    POSTGRES_URL=postgresql://postgres:yourpassword@localhost:5432/titanbot
    POSTGRES_HOST=localhost
    POSTGRES_PORT=5432
    POSTGRES_DB=titanbot
    POSTGRES_USER=postgres
    POSTGRES_PASSWORD=yourpassword
    

    Production note:

    • NODE_ENV=production
    • LOG_LEVEL=warn for a clean production console (critical issues + startup status)
    • LOG_LEVEL=info if you want more detailed operational logs
    • If your chosen PORT is already used, TitanBot automatically tries the next port(s)

    Environment options reference:

    • NODE_ENV: development, production, test (any non-production value is treated as non-production)
    • LOG_LEVEL: error, warn, info, http, verbose, debug, silly
    • Accepted aliases for LOG_LEVEL in this bot: warns, warning, warnings → warn

    Recommended production .env (easy mode + default mode):

    NODE_ENV=production
    LOG_LEVEL=warn
    WEB_HOST=0.0.0.0
    PORT=3000
    PORT_RETRY_ATTEMPTS=5
    

    This gives clear startup/online status messages while keeping logs simple for non-technical operators. If port 3000 is busy, the bot tries the next available ports automatically (up to PORT_RETRY_ATTEMPTS).

Multiple servers

Slash commands are registered globally on startup (via CLIENT_ID), so the bot works in every server it is invited to. GUILD_ID stays in the tutorial .env for setup steps but is not used for command registration.

Notes:

  1. Setup PostgreSQL Database (Optional but recommended)

    # Create database and user
    createdb titanbot
    createuser titanbot
    psql -c "ALTER USER titanbot PASSWORD 'yourpassword';"
    psql -c "GRANT ALL PRIVILEGES ON DATABASE titanbot TO titanbot;"
    
  2. Verify Database Setup

    npm run migrate:check
    
  3. Start the Bot

    npm start
    

Note on database migrations: Schema tables and legacy key migrations run automatically on startup, somanaged hosts like **Railway** need no manual migration step — just deploy/restart. To disable auto-migration setAUTO_MIGRATE=false. You can still run a manual key migration locally with node scripts/migrate-keys.js --dry-run(preview) ornode scripts/migrate-keys.js`.

Required Bot Intents

TitanBot requires the following Discord intents:

Required Permissions

License

TitanBot is released under the MIT License. See LICENSE for details.

Thank You

Thank you for choosing TitanBot for your Discord server! We're constantly working to improve and add new features based on community feedback.

Last updated: May 2026

TitanBot (codebymitch/TitanBot)

Searching Database…

Что это такое?Универсальный Discord-бот «всё в одном»: модерация, экономика, тикеты, музыка, уровни, розыгрыши, роли по реакциям, приветственные сообщения и учёт дней рождения — построен на discord.js v14, данные хранятся в PostgreSQL.
То есть это не приложение, которое я скачиваю — где оно вообще работает?Вы размещаете его сами: разворачивайте через Docker (рекомендуется) или Node.js, используя своё приложение Discord-бота. Образы автоматически публикуются в GitHub Container Registry при каждом пуше в main.
Как его запустить?Склонируйте репозиторий, укажите DISCORDTOKEN, CLIENTID и GUILDID в .env, затем выполните docker compose up -d — запустится бот и встроенная база данных PostgreSQL. Для тех, кто не программист, есть видеоролик, где показан весь процесс настройки.
Что должно быть готово до установки?Приложение Discord-бота с включёнными нужными intents, а также PostgreSQL (рекомендуется — при его отсутствии работает хранение в памяти). При установке вручную также нужен Node.js 20.10.0 или новее; при использовании Docker это не требуется.
Что стоит знать перед первым запуском?Глобальные slash-команды после первого развёртывания могут появиться не сразу — до примерно часа. Для музыки нужны ноды Lavalink v4 — публичные уже настроены, либо можно поднять свою ноду.
Для музыки нужно поднимать свой аудиосервер?Нет — музыка работает через Lavalink v4 с помощью Riffy, публичные SSL-ноды уже прописаны в lavalink/nodes.json. Если хотите свою ноду, выполните docker compose --profile local-lavalink up -d. Поддерживаются Spotify, Deezer, YouTube и Apple Music; есть /play, кнопки управления и префиксные команды вроде skip, queue и volume.
Один бот может работать сразу в нескольких Discord-серверах?Да. Slash-команды регистрируются глобально через CLIENTID, поэтому бот работает в любом сервере, куда его пригласили (OAuth2-скоупы: bot и applications.commands). Данные у каждого сервера свои — настройки, экономика, тикеты, уровни и предупреждения разделены по серверам.
Что модераторы реально могут с его помощью?Массовые баны и кики, личные заметки о пользователях, история дел по каждому нарушению и система репортов стаффу. Для работы нужны права вроде Kick Members, Ban Members, Manage Roles, Manage Messages и Manage Channels.
А что есть для обычных участников, кроме модерации?Экономика с магазином, инвентарём, азартными играми и переводом денег, опыт за сообщения с автоматической выдачей ролей за уровни, розыгрыши с несколькими победителями, автоподведением итогов и повторными тиражами, учёт дней рождения с поздравлениями по часовым поясам, приветственные сообщения с автролями и система тикетов с заявками, приоритетами и выгрузкой переписки.
Size
3.1 MB
Stars
9K
Age
8mo
Commits · 90 Days