237 lines
6.0 KiB
Markdown
237 lines
6.0 KiB
Markdown
|
|
# 🔍 Отладка админского чата
|
|||
|
|
|
|||
|
|
## Проблема
|
|||
|
|
|
|||
|
|
Админский чат не подключается в системе модерации.
|
|||
|
|
|
|||
|
|
## Что проверить
|
|||
|
|
|
|||
|
|
### 1. Откройте DevTools в системе модерации
|
|||
|
|
|
|||
|
|
Нажмите F12 и откройте вкладку **Console**
|
|||
|
|
|
|||
|
|
### 2. Перейдите на вкладку "Чат"
|
|||
|
|
|
|||
|
|
Должны увидеть логи:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[Chat] Инициализация чата
|
|||
|
|
[Chat] User данные: { username: "glpshchn00", telegramId: "...", hasUsername: true, hasTelegramId: true }
|
|||
|
|
[Chat] Подключение к: http://localhost:3000/mod-chat
|
|||
|
|
[Chat] ✅ WebSocket подключен, ID: abc123
|
|||
|
|
[Chat] Отправка auth с данными: { username: "glpshchn00", telegramId: "..." }
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Затем должно быть:**
|
|||
|
|
|
|||
|
|
✅ **Успех:**
|
|||
|
|
```
|
|||
|
|
[Chat] ✅ Авторизация успешна!
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
❌ **Ошибка - нет прав:**
|
|||
|
|
```
|
|||
|
|
[Chat] ❌ Нет прав для доступа к чату
|
|||
|
|
[Chat] user.username: glpshchn00
|
|||
|
|
[Chat] user.telegramId: 123456789
|
|||
|
|
[Chat] Вы должны быть в списке MODERATION_OWNER_USERNAMES
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
❌ **Ошибка подключения:**
|
|||
|
|
```
|
|||
|
|
[Chat] ❌ Ошибка подключения: timeout
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Решения
|
|||
|
|
|
|||
|
|
### Проблема: "Нет прав доступа"
|
|||
|
|
|
|||
|
|
**Причина:** Ваш username не в списке админов на сервере.
|
|||
|
|
|
|||
|
|
**Решение:**
|
|||
|
|
|
|||
|
|
1. Откройте `.env` на сервере:
|
|||
|
|
```bash
|
|||
|
|
nano .env
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. Проверьте/добавьте:
|
|||
|
|
```env
|
|||
|
|
MODERATION_OWNER_USERNAMES=glpshchn00
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. Перезапустите backend:
|
|||
|
|
```bash
|
|||
|
|
docker-compose restart backend
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
4. Проверьте логи:
|
|||
|
|
```bash
|
|||
|
|
docker-compose logs backend | grep "Mod chat"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Должно быть:
|
|||
|
|
```
|
|||
|
|
[INFO] Mod chat auth success { username: 'glpshchn00', isOwner: true }
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Проблема: "Ошибка подключения: timeout"
|
|||
|
|
|
|||
|
|
**Причина:** Backend недоступен или неправильный URL.
|
|||
|
|
|
|||
|
|
**Решение:**
|
|||
|
|
|
|||
|
|
1. Проверьте что backend запущен:
|
|||
|
|
```bash
|
|||
|
|
docker-compose ps backend
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. Проверьте `VITE_API_URL` в moderation frontend:
|
|||
|
|
```bash
|
|||
|
|
# В docker-compose.yml
|
|||
|
|
environment:
|
|||
|
|
- VITE_API_URL=http://localhost:3000 # Для локальной разработки
|
|||
|
|
- VITE_API_URL=https://ваш-домен.com # Для production
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. Проверьте CORS в backend `.env`:
|
|||
|
|
```env
|
|||
|
|
CORS_ORIGIN=http://localhost:5174,https://ваш-домен.com
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Проблема: user.username или user.telegramId пустые
|
|||
|
|
|
|||
|
|
**Причина:** Пользователь не авторизован.
|
|||
|
|
|
|||
|
|
**Решение:**
|
|||
|
|
|
|||
|
|
1. Убедитесь что открыли через Telegram бота
|
|||
|
|
2. Проверьте логи auth:
|
|||
|
|
```
|
|||
|
|
[Chat] user.username: undefined ← ПРОБЛЕМА!
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. Попробуйте переоткрыть систему модерации из бота
|
|||
|
|
|
|||
|
|
### Проблема: WebSocket вообще не подключается
|
|||
|
|
|
|||
|
|
**Причина:** CORS блокирует WebSocket.
|
|||
|
|
|
|||
|
|
**Решение:**
|
|||
|
|
|
|||
|
|
1. Проверьте browser console на ошибки CORS:
|
|||
|
|
```
|
|||
|
|
Access to XMLHttpRequest at 'http://...' from origin '...' has been blocked by CORS
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. Добавьте origin в `.env`:
|
|||
|
|
```env
|
|||
|
|
CORS_ORIGIN=http://localhost:5173,http://localhost:5174,https://web.telegram.org
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. Перезапустите:
|
|||
|
|
```bash
|
|||
|
|
docker-compose restart backend
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Backend логи
|
|||
|
|
|
|||
|
|
### Успешное подключение:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
docker-compose logs backend | tail -20
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Должно быть:
|
|||
|
|
```
|
|||
|
|
✅ WebSocket подключен: abc123
|
|||
|
|
[INFO] Mod chat auth success { username: 'glpshchn00', isOwner: true, isAdmin: false }
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Ошибка авторизации:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[WARN] Mod chat auth failed: no username/telegramId
|
|||
|
|
# или
|
|||
|
|
[WARN] Mod chat access denied { username: '...', telegramId: '...' }
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Быстрая проверка
|
|||
|
|
|
|||
|
|
### 1. Backend работает?
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl http://localhost:3000/health
|
|||
|
|
# Должен вернуть 200 OK
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. WebSocket работает?
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl http://localhost:3000/socket.io/
|
|||
|
|
# Должен вернуть: {"code":0,"message":"Transport unknown"}
|
|||
|
|
# Это нормально - значит WebSocket сервер работает
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Username в списке?
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Проверьте переменную
|
|||
|
|
docker-compose exec backend printenv | grep MODERATION_OWNER
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Должно быть:
|
|||
|
|
```
|
|||
|
|
MODERATION_OWNER_USERNAMES=glpshchn00
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Полная перезагрузка
|
|||
|
|
|
|||
|
|
Если ничего не помогло:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. Остановите всё
|
|||
|
|
docker-compose down
|
|||
|
|
|
|||
|
|
# 2. Проверьте .env
|
|||
|
|
cat .env | grep -E "MODERATION|CORS"
|
|||
|
|
|
|||
|
|
# 3. Запустите заново
|
|||
|
|
docker-compose up -d
|
|||
|
|
|
|||
|
|
# 4. Смотрите логи
|
|||
|
|
docker-compose logs -f backend
|
|||
|
|
|
|||
|
|
# 5. Переоткройте систему модерации из бота
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Контрольный список
|
|||
|
|
|
|||
|
|
- [ ] Backend запущен (`docker-compose ps`)
|
|||
|
|
- [ ] MODERATION_OWNER_USERNAMES содержит ваш username
|
|||
|
|
- [ ] CORS_ORIGIN включает домен системы модерации
|
|||
|
|
- [ ] User авторизован (есть username и telegramId)
|
|||
|
|
- [ ] VITE_API_URL указывает на правильный backend
|
|||
|
|
- [ ] Нет ошибок CORS в browser console
|
|||
|
|
- [ ] WebSocket сервер инициализирован (логи backend)
|
|||
|
|
- [ ] Firewall не блокирует WebSocket порты
|
|||
|
|
|
|||
|
|
## Если всё еще не работает
|
|||
|
|
|
|||
|
|
Отправьте в @NakamaReportbot:
|
|||
|
|
|
|||
|
|
1. Скриншот DevTools Console (вкладка Чат)
|
|||
|
|
2. Логи backend:
|
|||
|
|
```bash
|
|||
|
|
docker-compose logs backend > backend-logs.txt
|
|||
|
|
```
|
|||
|
|
3. Переменные окружения (без секретов):
|
|||
|
|
```bash
|
|||
|
|
cat .env | grep -v SECRET | grep -v KEY | grep -v PASSWORD > env-safe.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**После исправления чат должен подключиться автоматически при открытии вкладки "Чат"!** ✅
|
|||
|
|
|