Docs: Update README.md and AGENTS-BOT.md
All checks were successful
Auto Build and Push Docker Image / build (push) Successful in 6s
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:
@@ -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.
|
||||
6. **Reminder System:** Periodic reminder checking with target_time tracking.
|
||||
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
|
||||
|
||||
@@ -29,12 +31,20 @@ pixelpoebel/
|
||||
│ │ ├── help.ts
|
||||
│ │ ├── twitch.ts
|
||||
│ │ ├── trigger.ts # Auto-responses
|
||||
│ │ ├── timer.ts # Reminders
|
||||
│ │ ├── admin.ts # All admin subcommands
|
||||
│ │ └── owner.ts # All owner subcommands
|
||||
│ │ ├── timer.ts # Reminders
|
||||
│ │ ├── welcome.ts # Welcome/Goodbye messages
|
||||
│ │ ├── log.ts # Event logging
|
||||
│ │ ├── admin.ts # All admin subcommands
|
||||
│ │ └── owner.ts # All owner subcommands
|
||||
│ ├── events/
|
||||
│ │ ├── 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/
|
||||
│ ├── ExtendedClient.ts
|
||||
│ ├── Command.ts
|
||||
@@ -47,7 +57,8 @@ pixelpoebel/
|
||||
├── tsconfig.json
|
||||
├── Dockerfile
|
||||
├── docker-compose.yml
|
||||
└── .env.example
|
||||
├── .env.example
|
||||
└── .gitattributes
|
||||
```
|
||||
|
||||
## 📝 Implementation Steps
|
||||
@@ -88,6 +99,10 @@ CREATE TABLE guild_settings (
|
||||
prefix TEXT DEFAULT '!',
|
||||
mod_log_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_action TEXT DEFAULT 'ban',
|
||||
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
|
||||
// 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);
|
||||
```
|
||||
|
||||
### 6. Twitch Monitoring with Stream ID
|
||||
### 8. Twitch Monitoring with Stream ID
|
||||
|
||||
```typescript
|
||||
// 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:**
|
||||
- `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
|
||||
const unitSeconds: Record<string, number> = {
|
||||
@@ -319,6 +375,7 @@ docker-compose up -d --build
|
||||
4. **Twitch API:** Max 100 channels per request, batch properly.
|
||||
5. **Deploy:** Commands NOT auto-registered on start – use `/owner deploy`.
|
||||
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
|
||||
|
||||
@@ -326,8 +383,10 @@ docker-compose up -d --build
|
||||
|---------|-------------|------------|
|
||||
| `/ping` | – | 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 |
|
||||
| `/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 |
|
||||
| `/owner` | deploy, stats, servers, help | Owner |
|
||||
27
README.md
27
README.md
@@ -59,10 +59,8 @@ npm run deploy
|
||||
- `/twitch online <channel>` – Twitch-Status
|
||||
- `/twitch list` – Überwachte Kanäle
|
||||
- `/twitch help` – Twitch-Hilfe
|
||||
|
||||
### Trigger (Auto-Antworten)
|
||||
- `/trigger add <wort> <antwort>` – Trigger hinzufügen (Mod)
|
||||
- `/trigger remove <wort>` – Trigger entfernen (Mod)
|
||||
- `/timer list` – Timer dieses Kanals
|
||||
- `/timer help` – Timer-Hilfe
|
||||
- `/trigger list` – Alle Trigger anzeigen
|
||||
- `/trigger help` – Trigger-Hilfe
|
||||
|
||||
@@ -73,9 +71,21 @@ npm run deploy
|
||||
- `/timer listall` – Alle Timer (Mod)
|
||||
- `/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
|
||||
- `/twitch add <channel>` – Kanal überwachen
|
||||
- `/twitch remove <channel>` – Kanal entfernen
|
||||
- `/admin kick <user>` – Nutzer kicken
|
||||
- `/admin warn <user> <reason>` – Nutzer verwarnen
|
||||
- `/admin unwarn <user>` – Letzte Warnung entfernen
|
||||
@@ -98,9 +108,10 @@ npm run deploy
|
||||
- ✅ TypeScript
|
||||
- ✅ SQLite Database
|
||||
- ✅ Twitch Monitoring
|
||||
- ✅ Auto-Deploy beim Start
|
||||
- ✅ Moderation Tools
|
||||
- ✅ Konfigurierbares Warn-System
|
||||
- ✅ Auto-Antworten (Trigger)
|
||||
- ✅ Timer & Erinnerungen
|
||||
- ✅ Docker Support
|
||||
- ✅ Welcome/Goodbye Messages
|
||||
- ✅ Event Logging
|
||||
- ✅ Docker Support
|
||||
|
||||
Reference in New Issue
Block a user