162 lines
5.6 KiB
Markdown
162 lines
5.6 KiB
Markdown
|
|
# 🤖 Настройка 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 строк
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Готово!** Теперь пользователи смогут отправлять анонимные логи, а вы - исправлять баги быстрее! 🚀
|