Files
umbrix/TELEGRAM_BOT_SETUP.md

162 lines
5.6 KiB
Markdown
Raw Permalink Normal View History

# 🤖 Настройка Telegram Bot для логов Umbrix
## 📝 Пошаговая инструкция
### 1⃣ Создайте бота
1. Откройте **Telegram**
2. Найдите бота **@BotFather**
3. Отправьте команду: `/newbot`
4. Придумайте **имя** для бота (например: `Umbrix Logs Bot`)
5. Придумайте **username** (например: `umbrix_logs_bot`)
6. Скопируйте полученный **токен** (выглядит как `1234567890:ABCdefGHIjklMNOpqrsTUVwxyz`)
### 2⃣ Настройте приватность
1. Отправьте @BotFather команду: `/mybots`
2. Выберите своего бота
3. Нажмите `Bot Settings`
4. Нажмите `Group Privacy`
5. Нажмите `Turn OFF` (чтобы бот мог читать сообщения в группах)
### 3⃣ Создайте канал/группу для логов
**Вариант A: Приватный канал (РЕКОМЕНДУЮ)**
1. Создайте новый канал в Telegram
2. Назовите его (например, "Umbrix Logs")
3. Сделайте канал **приватным**
4. Добавьте бота в администраторы канала
**Вариант B: Приватная группа**
1. Создайте новую группу
2. Добавьте бота в участники
3. Сделайте бота администратором
**Вариант C: Личные сообщения**
1. Найдите своего бота в Telegram
2. Нажмите `/start`
### 4⃣ Получите Chat ID
**Способ 1: Через API (для каналов/групп)**
1. Отправьте любое сообщение в канал/группу
2. Откройте в браузере:
```
https://api.telegram.org/bot<ВАШ_ТОКЕН>/getUpdates
```
Замените `<ВАШ_ТОКЕН>` на токен от BotFather
3. Найдите в JSON ответе:
```json
"chat": {
"id": -1001234567890, ← ЭТО ВАШ CHAT ID
"title": "Umbrix Logs",
"type": "channel"
}
```
4. Скопируйте этот ID (с минусом!)
**Способ 2: Через бота (для личных сообщений)**
1. Найдите бота **@userinfobot** в Telegram
2. Отправьте ему `/start`
3. Он пришлёт ваш Chat ID
### 5⃣ Вставьте токены в код
Откройте файл: `lib/core/model/secrets.dart`
```dart
abstract class Secrets {
static const String telegramBotToken = "1234567890:ABCdefGHIjklMNOpqrsTUVwxyz"; // ← ВАШ ТОКЕН
static const String telegramChatId = "-1001234567890"; // ← ВАШ CHAT ID
static bool get isConfigured =>
telegramBotToken.isNotEmpty && telegramChatId.isNotEmpty;
}
```
### 6⃣ Добавьте в .gitignore
**ОБЯЗАТЕЛЬНО!** Чтобы токен не попал в GitHub:
Откройте файл: `.gitignore`
Добавьте строку:
```
lib/core/model/secrets.dart
```
Или создайте secrets.dart с шаблоном:
```bash
cp lib/core/model/secrets.dart lib/core/model/secrets.example.dart
```
В secrets.example.dart оставьте пустые строки, а secrets.dart добавьте в .gitignore.
### 7⃣ Проверьте что работает
Запустите приложение и попробуйте отправить тестовый лог через настройки.
Если логи не приходят, проверьте:
- ✅ Токен правильный (скопирован полностью)
- ✅ Chat ID правильный (с минусом для каналов)
- ✅ Бот добавлен в администраторы канала
- ✅ Group Privacy выключен у бота
---
## 🔒 Безопасность
### ❌ НЕ ДЕЛАЙТЕ ТАК:
```dart
// ❌ НЕ хардкодьте токен напрямую!
const token = "1234567890:ABCdef...";
// ❌ НЕ коммитьте secrets.dart в Git!
git add lib/core/model/secrets.dart // НЕТ!
```
### ✅ ПРАВИЛЬНО:
1. Храните токен в `secrets.dart`
2. Добавьте `secrets.dart` в `.gitignore`
3. Создайте `secrets.example.dart` с пустыми значениями для других разработчиков
4. В production сборке: используйте environment variables
---
## 📤 Формат логов
Бот будет отправлять сообщения в таком формате:
```
🐛 Отчёт об ошибке Umbrix
📱 Версия: 2.5.7
🤖 Android: 13 (API 33)
📦 Device: Samsung Galaxy S21
🆔 ID: a3f5c8d1 (анонимный)
📋 Логи:
[ERROR] Connection timeout
[WARN] Retry attempt 3/5
[INFO] Connecting to server...
```
---
## 💡 Советы
1. **Используйте приватный канал** - логи могут содержать технические детали
2. **Настройте уведомления** - чтобы сразу видеть новые логи
3. **Создайте отдельного бота для каждого проекта** - не смешивайте логи разных приложений
4. **Ограничьте размер логов** - отправляйте только последние 50-100 строк
---
**Готово!** Теперь пользователи смогут отправлять анонимные логи, а вы - исправлять баги быстрее! 🚀