YunkiBot/
├─ commands/
│ ├─ moderation/
│ │ ├─ ban.js
│ │ ├─ clear.js
│ │ ├─ kick.js
│ │ ├─ lock.js
│ │ ├─ slowmode.js
│ │ ├─ timeout.js
│ │ ├─ unban.js
│ │ ├─ unlock.js
│ │ ├─ untimeout.js
│ │ ├─ warn.js
│ │ └─ warnings.js
│ └─ utility/
│ ├─ config.js
│ ├─ help.js
│ ├─ ping.js
│ ├─ serverinfo.js
│ ├─ status.js
│ └─ userinfo.js
├─ handlers/
│ └─ moderation.js
├─ data/
│ └─ warnings.json
├─ config.js
├─ deploy-commands.js
├─ index.js
└─ package.json
Tạo các Secret:
- Key:
DISCORD_TOKEN— Bot Token của bạn - Key:
GUILD_ID— ID server Discord dùng để đăng ký Guild Commands
Không gửi Bot Token cho người khác và không đặt Token trong config.js.
DISCORD_GUILD_ID cũng được hỗ trợ như tên thay thế cho GUILD_ID.
config.js lấy các giá trị sau:
botId— ID botGUILD_ID/DISCORD_GUILD_ID— ID serverdefaultChannelId— kênh mặc định nếu command cần dùng
defaultChannelId hiện chỉ để lưu cấu hình; các command không bắt buộc phải dùng nó.
npm installnpm run deployKhi có GUILD_ID, command sẽ được đăng ký riêng cho server và thường cập nhật nhanh hơn Global Commands.
npm startBot cần tối thiểu các quyền phù hợp với command:
- Ban Members
- Kick Members
- Moderate Members
- Manage Messages
- Manage Channels
- View Channels
- Send Messages
- Embed Links
- Read Message History
Ngoài permission, role của bot phải nằm cao hơn các member mà bot cần moderate.
Warning được lưu trong data/warnings.json để không mất dữ liệu khi bot restart. File runtime JSON vẫn được giữ ngoài Git bởi .gitignore.
Giveaway cũng lưu dữ liệu trong data/giveaways.json và store đã có xử lý file JSON lỗi/corrupt an toàn hơn.
Đây là bản rebuild sạch, không phụ thuộc handlers/commandHandler.js cũ.