Discord bot pro sledování konverzací a správu soukromých help requestů s modulární architekturou a Slash Commands.
- 🎯 Slash Commands (/) - Moderní Discord příkazy s automatickým menu
- 🔍 Sledování konverzací - Automatické logování všech zpráv, úprav a událostí
- 🆘 Help systém - Soukromá vlákna s interaktivním formulářem pro support
- 🧵 Thread Manager - Hromadné odebírání členů z vláken
- 🔌 Modulární struktura - Snadné přidávání nových funkcí (cogs/events/utils)
git clone https://github.com/Ypsilonx/BotProBot.git
cd BotProBot
# Vytvoř virtuální prostředí
python -m venv venv
# Aktivuj venv
.\venv\Scripts\Activate.ps1 # Windows
source venv/bin/activate # Linux
# Nainstaluj závislosti
pip install -r requirements.txt# Zkopíruj a uprav .env
Copy-Item example.env .env # Windows
cp example.env .env # LinuxV .env nastav:
DISCORD_TOKEN=tvuj_discord_token_zdeV config.py nastav ID kanálů:
HELP_CHANNEL_ID = 1234567890 # Kanál s help tlačítkem
ADMIN_NOTIFICATION_CHANNEL_ID = 9876543210 # Admin notifikace
SUPPORT_ROLES = ["Admin", "Support"] # Support role- Discord Developer Portal
- Vytvoř aplikaci → Bot → Zkopíruj token
- Zapni Intents: Presence, Server Members, Message Content
- Přidej bota na server s oprávněními: Manage Threads, Send Messages, Read Messages
start_bot.bat # Windows (batch)
.\start_bot.ps1 # Windows (PowerShell)
source venv/bin/activate && python bot.py # Linuxstart_bot_managed.bat # Windows (batch)
.\start_bot_managed.ps1 # Windows (PowerShell)Manager zajišťuje:
- 🔄 Auto-restart při pádu bota
- 🕐 Daily restart ve 4:00 ráno
- 📊 Logování do
logs/manager.log
/ping- Test odezvy/info- Info o botovi/setup_help- (Admin) Vytvoří help tlačítko/thread_manage- (Admin) Správa členů vlákna (hromadné odebrání)/reload <modul>- (Owner) Reload cog bez restartu/reload_all- (Owner) Reload všech modulů/shutdown- (Owner) Vypne bota (Manager ho restartuje)/shutdown_all- (Owner) Vypne bota i Manager (úplné ukončení)
BuildDC/
├── bot.py # ⚡ Hlavní soubor
├── config.py # ⚙️ Konfigurace
├── cogs/ # 🔌 Příkazy (help_system, basic_commands, thread_manager)
├── events/ # 📡 Event handlery (message_logging)
├── utils/ # 🛠️ Pomocné funkce (helpers)
└── logs/ # 📊 Logy
cogs/→ Discord příkazy (_command) a komplexní funkceevents/→ Event listenery (on_message,on_member_join)utils/→ Reusable funkce (formátování, validace)
🆘 Help Systém - Jak to funguje?
- Uživatel klikne "🆘 Mám problém" → Vyplní formulář
- Vytvoří se soukromé vlákno (vidí jen autor + support)
- Admin dostane notifikaci s tlačítkem "✅ Řeším"
- Po kliknutí → Přidá se do vlákna + odešle DM uživateli
- Řešení probíhá ve vlákně
# config.py
HELP_CHANNEL_ID = 123456789 # Kanál s tlačítkem
ADMIN_NOTIFICATION_CHANNEL_ID = 987654321 # Admin notifikace
SUPPORT_ROLES = ["Admin", "Support"] # Kdo může řešitV help kanálu zadej: /setup_help
✅ Soukromé vlákno - vidí jen účastníci
✅ Počáteční zpráva neobsahuje citlivé údaje
✅ Ideální pro hesla, osobní údaje
🧵 Thread Manager - Správa Členů Vláken
Hromadné odebírání členů z vláken - užitečné když máš 30+ lidí ve vlákně a potřebuješ vyčistit.
Ve vlákně zadej: /thread_manage
-
📋 Správa členů - Vyber konkrétní lidi checkboxy
- Zobrazí seznam všech členů ve vlákně
- Můžeš vybrat několik najednou (max 25 na stránku)
- Pagination pokud je > 25 lidí
- Klikni "🗑️ Odebrat vybrané"
-
🎭 Podle rolí - Odeber všechny s určitou rolí
- Zobrazí všechny role členů ve vlákně
- Vyber role → odebere všechny s těmito rolemi
- Příklad: "Odeber všechny s rolí @Student"
-
📊 Info - Zobraz detaily o vlákně
- Počet členů
- Seznam rolí
- Datum vytvoření
- ⚙️ Oprávnění:
Manage Threads - 📍 Místo: Musí být použit VE VLÁKNĚ (ne v běžném kanálu)
1. Otevři help request vlákno s 30 lidmi
2. Zadej: /thread_manage
3. Klikni "📋 Správa členů"
4. Vyber 10 lidí co už nepotřebují být ve vlákně
5. Klikni "🗑️ Odebrat vybrané"
6. ✅ Vybraní členové odebraní
✅ Pouze uživatel který vyvolal příkaz může používat menu
✅ Vyžaduje Manage Threads oprávnění
✅ Boti jsou automaticky ignorováni
🔍 Sledování Konverzací
Automatické logování do logs/bot.log:
- ✅ Všechny zprávy na serveru
- ✅ Úpravy zpráv (před/po)
- ✅ Mazání zpráv
- ✅ Nové členy
- ✅ Odchody členů
Formát: 2025-11-01 10:30:45 - [Server] [#channel] User: zpráva...
🔌 Modulární Struktura - Kam dát nový kód?
Má to Discord příkaz (_command)?
├─ ANO → cogs/
└─ NE
└─ Je to event listener (on_*)?
├─ ANO → events/
└─ NE → utils/
- Discord příkazy (
@commands.command()) - Komplexní interakce (modaly, buttony)
- Má stav nebo setup
Příklad:
# cogs/my_commands.py
from discord.ext import commands
class MyCommands(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.command()
async def hello(self, ctx):
await ctx.send("Hi!")
async def setup(bot):
await bot.add_cog(MyCommands(bot))Přidej do bot.py: cogs_to_load = [..., 'cogs.my_commands']
- Jen event listenery (
@commands.Cog.listener()) - Reagují automaticky na události
- Žádné příkazy
Příklad:
# events/my_events.py
from discord.ext import commands
class MyEvents(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_message(self, message):
print(f"Message: {message.content}")
async def setup(bot):
await bot.add_cog(MyEvents(bot))Přidej do bot.py: events_to_load = [..., 'events.my_events']
- Reusable funkce
- Použitelné všude
- Pure funkce (input → output)
Příklad:
# utils/my_utils.py
def format_text(text: str) -> str:
return text.upper()Použití:
from utils.my_utils import format_text
result = format_text("hello")- ✅
cogs/může importovat zutils/ - ✅
events/může importovat zutils/ - ❌
utils/NESMÍ importovat zcogs/neboevents/
🚀 Přidání Nového Modulu
- Vytvoř
cogs/my_cog.py - Implementuj třídu +
async def setup(bot) - V
bot.pypřidej docogs_to_load - Restart
- Vytvoř
events/my_event.py - Implementuj třídu +
async def setup(bot) - V
bot.pypřidej doevents_to_load - Restart
- Vytvoř
utils/my_util.py - Implementuj funkce
- Importuj kde potřebuješ
- Žádný restart (pokud jen přidáváš)
📝 Changelog - Verze Historie
Před:
- 545 řádků v jednom souboru
- Těžké na údržbu
Po:
- 120 řádků v
bot.py - Funkce rozděleny:
cogs/,events/,utils/ - Snadné přidávání funkcí
Výhody:
- ✅ Modularita - každá funkce samostatně
- ✅ Údržba - snadné najít kód
- ✅ Rozšiřitelnost - nová funkce = nový soubor
- ✅ Testovatelnost - jednotlivé testy
- ✅ Hot reload - reload bez restartu
Nové soubory:
start_bot.bat/start_bot.ps1- Spouštěcí skriptycogs/help_system.py- Help systémcogs/basic_commands.py- Základní příkazyevents/message_logging.py- Logováníutils/helpers.py- Pomocné funkce
🔧 Troubleshooting
# Zkontroluj venv
.\venv\Scripts\Activate.ps1
# Reinstaluj závislosti
pip install -r requirements.txt
# Zkontroluj logy
cat logs/bot.log- ✅ Aktivuj venv před spuštěním
- ✅ Ověř že je
requirements.txtnainstalovaný
- ✅ ID kanálů správně nastavené v
config.py - ✅ Bot má oprávnění vytvářet vlákna
- ✅ Support role existují na serveru
- ❌ NIKDY nesdílej token
- ✅ Token je v
.env(git ignoruje) - ✅ Pokud unikne → regeneruj v Developer Portal
Tom Cib | GitHub
Projekt pro osobní použití.