Docs: Update README.md and AGENTS-BOT.md
All checks were successful
Auto Build and Push Docker Image / build (push) Successful in 6s

Add Welcome/Goodbye and Logging modules to documentation.
Add new events structure, database fields, and command summary.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-23 10:42:32 +01:00
parent 610cbf7b4d
commit 6b259ddaa2
2 changed files with 89 additions and 19 deletions

View File

@@ -14,7 +14,9 @@ The bot uses a **Modular Command & Event Loading** pattern with **ESM (ECMAScrip
5. **Twitch Monitoring:** Periodic API polling with Stream ID tracking. 5. **Twitch Monitoring:** Periodic API polling with Stream ID tracking.
6. **Reminder System:** Periodic reminder checking with target_time tracking. 6. **Reminder System:** Periodic reminder checking with target_time tracking.
7. **Auto-Response System:** Trigger word detection for automatic replies. 7. **Auto-Response System:** Trigger word detection for automatic replies.
8. **Grouped Commands:** Admin/Owner/Trigger/Timer commands grouped under subcommands. 8. **Welcome/Goodbye System:** Guild member add/remove events with customizable messages.
10. **Logging System:** Configurable event logging (messages, roles, moderation, etc.).
11. **Grouped Commands:** Admin/Owner/Trigger/Timer commands grouped under subcommands.
## 📁 Project Structure ## 📁 Project Structure
@@ -29,12 +31,20 @@ pixelpoebel/
│ │ ├── help.ts │ │ ├── help.ts
│ │ ├── twitch.ts │ │ ├── twitch.ts
│ │ ├── trigger.ts # Auto-responses │ │ ├── trigger.ts # Auto-responses
│ │ ├── timer.ts # Reminders │ │ ├── timer.ts # Reminders
│ │ ├── admin.ts # All admin subcommands │ │ ├── welcome.ts # Welcome/Goodbye messages
│ │ ── owner.ts # All owner subcommands │ │ ── log.ts # Event logging
│ │ ├── admin.ts # All admin subcommands
│ │ └── owner.ts # All owner subcommands
│ ├── events/ │ ├── events/
│ │ ├── ready.ts │ │ ├── ready.ts
│ │ ── interactionCreate.ts │ │ ── interactionCreate.ts
│ │ ├── guildMemberAdd.ts # Welcome messages
│ │ ├── guildMemberRemove.ts # Goodbye messages
│ │ ├── guildMemberUpdate.ts # Nickname/role changes
│ │ ├── messageDelete.ts # Deleted messages
│ │ ├── messageUpdate.ts # Edited messages
│ │ └── channelEvent.ts # Channel create/delete
│ └── structures/ │ └── structures/
│ ├── ExtendedClient.ts │ ├── ExtendedClient.ts
│ ├── Command.ts │ ├── Command.ts
@@ -47,7 +57,8 @@ pixelpoebel/
├── tsconfig.json ├── tsconfig.json
├── Dockerfile ├── Dockerfile
├── docker-compose.yml ├── docker-compose.yml
── .env.example ── .env.example
└── .gitattributes
``` ```
## 📝 Implementation Steps ## 📝 Implementation Steps
@@ -88,6 +99,10 @@ CREATE TABLE guild_settings (
prefix TEXT DEFAULT '!', prefix TEXT DEFAULT '!',
mod_log_channel TEXT, mod_log_channel TEXT,
welcome_channel TEXT, welcome_channel TEXT,
welcome_message TEXT,
goodbye_message TEXT,
log_channel TEXT,
log_events TEXT DEFAULT 'messages,roles,nicks,channels,warns,mutes,kicks,bans',
warn_threshold INTEGER DEFAULT 3, warn_threshold INTEGER DEFAULT 3,
warn_action TEXT DEFAULT 'ban', warn_action TEXT DEFAULT 'ban',
warn_mute_duration INTEGER DEFAULT 1800 warn_mute_duration INTEGER DEFAULT 1800
@@ -227,7 +242,48 @@ export class ReminderManager {
} }
``` ```
### 5. Auto-Response (Trigger) System ### 5. Welcome/Goodbye System
**Variables in messages:** `{user}`, `{username}`, `{server}`, `{membercount}`
**Auto-use Discord system channel if no custom channel set:**
```typescript
const channelId = settings?.welcome_channel || member.guild.systemChannelId;
```
### 6. Logging System
**Events that can be logged:**
- `messages` - Deleted and edited messages
- `roles` - Role changes
- `nicks` - Nickname changes
- `channels` - Channel create/delete
- `warns` - User warnings
- `mutes` - User mutes
- `kicks` - User kicks
- `bans` - User bans
**Log moderation action:**
```typescript
async function sendModerationLog(client: any, guildId: string, event: string, embed: EmbedBuilder) {
const DB = client.DB;
const settings: any = DB.get('SELECT log_events FROM guild_settings WHERE guild_id = ?', guildId);
if (!settings?.log_events) return;
const activeEvents = settings.log_events.split(',').filter(Boolean);
if (!activeEvents.includes(event)) return;
const logSettings: any = DB.get('SELECT log_channel FROM guild_settings WHERE guild_id = ?', guildId);
if (!logSettings?.log_channel) return;
const channel = client.guilds.cache.get(guildId)?.channels.cache.get(logSettings.log_channel);
if (!channel || !channel.isTextBased()) return;
await (channel as any).send({ embeds: [embed] });
}
```
### 7. Auto-Response (Trigger) System
```typescript ```typescript
// Add trigger (admin only) // Add trigger (admin only)
@@ -241,7 +297,7 @@ DB.all('SELECT * FROM auto_responses WHERE guild_id = ? ORDER BY trigger_word AS
DB.run('DELETE FROM auto_responses WHERE guild_id = ? AND trigger_word = ?', guildId, triggerWord); DB.run('DELETE FROM auto_responses WHERE guild_id = ? AND trigger_word = ?', guildId, triggerWord);
``` ```
### 6. Twitch Monitoring with Stream ID ### 8. Twitch Monitoring with Stream ID
```typescript ```typescript
// Stream ID tracking prevents duplicate notifications // Stream ID tracking prevents duplicate notifications
@@ -255,7 +311,7 @@ if (wasOffline || (monitor.last_status === 'online' && isNewStream)) {
} }
``` ```
### 7. Configurable Warn System ### 9. Configurable Warn System
**Database Schema:** **Database Schema:**
- `warn_threshold`: Number of warns before action - `warn_threshold`: Number of warns before action
@@ -275,7 +331,7 @@ if (warnCount >= warnThreshold) {
} }
``` ```
### 8. Mute with Multiple Time Units ### 10. Mute with Multiple Time Units
```typescript ```typescript
const unitSeconds: Record<string, number> = { const unitSeconds: Record<string, number> = {
@@ -319,6 +375,7 @@ docker-compose up -d --build
4. **Twitch API:** Max 100 channels per request, batch properly. 4. **Twitch API:** Max 100 channels per request, batch properly.
5. **Deploy:** Commands NOT auto-registered on start use `/owner deploy`. 5. **Deploy:** Commands NOT auto-registered on start use `/owner deploy`.
6. **Ephemeral Replies:** Use `flags: [MessageFlags.Ephemeral]` instead of deprecated `ephemeral: true`. 6. **Ephemeral Replies:** Use `flags: [MessageFlags.Ephemeral]` instead of deprecated `ephemeral: true`.
7. **Line Endings:** Use `.gitattributes` to ensure LF line endings for consistency.
## 📋 Command Summary ## 📋 Command Summary
@@ -326,8 +383,10 @@ docker-compose up -d --build
|---------|-------------|------------| |---------|-------------|------------|
| `/ping` | | Public | | `/ping` | | Public |
| `/help` | | Public | | `/help` | | Public |
| `/twitch` | online, add, remove, list, help | Public/Admin | | `/twitch` | online, add, remove, list, listall, help | Public/Admin |
| `/trigger` | add, remove, list, help | Public/Admin | | `/trigger` | add, remove, list, help | Public/Admin |
| `/timer` | add, remove, list, listall, help | Public/Admin | | `/timer` | add, remove, list, listall, help | Public/Admin |
| `/welcome` | setchannel, add, remove, list, help | Admin |
| `/log` | setchannel, enable, disable, list, help | Admin |
| `/admin` | kick, warn, unwarn, mute, unmute, ban, unban, config, help | Admin | | `/admin` | kick, warn, unwarn, mute, unmute, ban, unban, config, help | Admin |
| `/owner` | deploy, stats, servers, help | Owner | | `/owner` | deploy, stats, servers, help | Owner |

View File

@@ -59,10 +59,8 @@ npm run deploy
- `/twitch online <channel>` Twitch-Status - `/twitch online <channel>` Twitch-Status
- `/twitch list` Überwachte Kanäle - `/twitch list` Überwachte Kanäle
- `/twitch help` Twitch-Hilfe - `/twitch help` Twitch-Hilfe
- `/timer list` Timer dieses Kanals
### Trigger (Auto-Antworten) - `/timer help` Timer-Hilfe
- `/trigger add <wort> <antwort>` Trigger hinzufügen (Mod)
- `/trigger remove <wort>` Trigger entfernen (Mod)
- `/trigger list` Alle Trigger anzeigen - `/trigger list` Alle Trigger anzeigen
- `/trigger help` Trigger-Hilfe - `/trigger help` Trigger-Hilfe
@@ -73,9 +71,21 @@ npm run deploy
- `/timer listall` Alle Timer (Mod) - `/timer listall` Alle Timer (Mod)
- `/timer help` Timer-Hilfe - `/timer help` Timer-Hilfe
### Trigger (Auto-Antworten)
- `/trigger add <wort> <antwort>` Trigger hinzufügen (Mod)
- `/trigger remove <wort>` Trigger entfernen (Mod)
- `/trigger list` Alle Trigger anzeigen
- `/trigger help` Trigger-Hilfe
### Twitch
- `/twitch online <kanal>` Prüft ob Kanal online ist
- `/twitch add <streamer1, streamer2, ...>` Streamer überwachen (Mod)
- `/twitch remove <streamer1, streamer2, ...>` Streamer entfernen (Mod)
- `/twitch list` Überwachte Kanäle
- `/twitch listall` Alle überwachten Streamer (Mod)
- `/twitch help` Twitch-Hilfe
### Admin ### Admin
- `/twitch add <channel>` Kanal überwachen
- `/twitch remove <channel>` Kanal entfernen
- `/admin kick <user>` Nutzer kicken - `/admin kick <user>` Nutzer kicken
- `/admin warn <user> <reason>` Nutzer verwarnen - `/admin warn <user> <reason>` Nutzer verwarnen
- `/admin unwarn <user>` Letzte Warnung entfernen - `/admin unwarn <user>` Letzte Warnung entfernen
@@ -98,9 +108,10 @@ npm run deploy
- ✅ TypeScript - ✅ TypeScript
- ✅ SQLite Database - ✅ SQLite Database
- ✅ Twitch Monitoring - ✅ Twitch Monitoring
- ✅ Auto-Deploy beim Start
- ✅ Moderation Tools - ✅ Moderation Tools
- ✅ Konfigurierbares Warn-System - ✅ Konfigurierbares Warn-System
- ✅ Auto-Antworten (Trigger) - ✅ Auto-Antworten (Trigger)
- ✅ Timer & Erinnerungen - ✅ Timer & Erinnerungen
- ✅ Docker Support - ✅ Welcome/Goodbye Messages
- ✅ Event Logging
- ✅ Docker Support