Files
virtus-bot/README_MULTI_CHANNEL.md
T

109 lines
2.9 KiB
Markdown

# Hướng dẫn sử dụng Bot với nhiều Channel
## Tổng quan
Bot đã được refactor để hỗ trợ chạy game nối từ trên nhiều channel đồng thời với cùng một bot token.
## Cấu hình Environment Variables
### Format đơn giản với dấu phẩy
```bash
# Nhiều channel, phân cách bằng dấu phẩy (không có khoảng trắng)
CHANNEL_NOI_TU_ID=1383424686708363336,9876543210987654321,5555555555555555555
```
### Ví dụ thực tế
```bash
# 1 channel
CHANNEL_NOI_TU_ID=1383424686708363336
# 2 channel
CHANNEL_NOI_TU_ID=1383424686708363336,9876543210987654321
# 3 channel
CHANNEL_NOI_TU_ID=1383424686708363336,9876543210987654321,5555555555555555555
```
### Lưu ý
- Không có khoảng trắng xung quanh dấu phẩy
- Mỗi ID phải là số nguyên hợp lệ
- Bot sẽ tự động parse và hỗ trợ tất cả channel trong danh sách
## Cách hoạt động
### Game State riêng biệt
- Mỗi channel có game state hoàn toàn độc lập
- Channel A có thể đang chơi game với từ "âm cao" → "cao độ"
- Channel B có thể đang chơi game khác với từ "mặt trời" → "trời mưa"
- Không có xung đột giữa các game
### Database chung
- Tất cả channel sử dụng chung database PostgreSQL
- Từ điển nối từ được chia sẻ giữa các channel
- Admin có thể thêm/xóa từ từ bất kỳ channel nào
## Lệnh hỗ trợ
### Lệnh cơ bản
- `!start` - Bắt đầu game nối từ
- `!end` - Kết thúc game nối từ
### Lệnh admin (chỉ admin server)
- `!add <từ>` - Thêm từ mới vào database
- `!remove <từ>` - Xóa từ khỏi database
### Lệnh khác
- `/help` - Hiển thị danh sách lệnh cho channel hiện tại
## Ví dụ sử dụng
### Server A (Channel #game-1)
```
User: !start
Bot: 🎮 Trò chơi Nối Từ đã bắt đầu!
Từ đầu tiên: âm cao
User: cao độ
Bot: ✅
User: độ cao
Bot: ✅
```
### Server B (Channel #game-2) - Đồng thời
```
User: !start
Bot: 🎮 Trò chơi Nối Từ đã bắt đầu!
Từ đầu tiên: mặt trời
User: trời mưa
Bot: ✅
User: mưa gió
Bot: ✅
```
## Lưu ý quan trọng
1. **Bot Token**: Chỉ cần 1 bot token duy nhất
2. **Database**: Tất cả channel dùng chung database
3. **Game State**: Mỗi channel có game state riêng biệt
4. **Admin**: Admin của server có thể quản lý từ điển
5. **Timeout**: Mỗi game có timeout 30 giây độc lập
## Troubleshooting
### Bot không phản hồi trong channel
- Kiểm tra channel ID có trong `CHANNEL_NOI_TU_IDS` không
- Kiểm tra bot có quyền gửi tin nhắn trong channel không
### Game không bắt đầu được
- Kiểm tra xem đã có game đang chạy trong channel đó chưa
- Kiểm tra database có từ nào không
### Lỗi database
- Kiểm tra kết nối PostgreSQL
- Kiểm tra biến môi trường database