# Диагностика проблем с Telegram уведомлениями

## Проверка настройки

### 1. Проверка переменных окружения

Убедитесь, что в файле `.env` на сервере добавлены:

```env
TELEGRAM_BOT_TOKEN=ваш_токен_бота
TELEGRAM_CHAT_ID=ваш_chat_id
```

### 2. Тестирование через API

Выполните GET запрос (требуется авторизация админа):

```
GET /api/admin/telegram/test
Authorization: Bearer YOUR_TOKEN
```

Или через браузер (если авторизованы как админ):
```
https://kartulirest.de/api/admin/telegram/test
```

Ответ покажет:
- Настроен ли bot token
- Настроен ли chat ID
- Успешно ли отправлено тестовое сообщение

### 3. Проверка логов

Проверьте логи Laravel на наличие ошибок:

```bash
cd ~/public_html/kartulirest.de/kartulirest
tail -f storage/logs/laravel.log | grep -i telegram
```

Ищите сообщения:
- `Telegram bot token is not configured` - не настроен токен
- `Telegram chat ID is not configured` - не настроен chat ID
- `Failed to send Telegram message` - ошибка отправки

## Частые проблемы и решения

### Проблема 1: "Telegram bot token is not configured"

**Причина:** В `.env` файле отсутствует или пустой `TELEGRAM_BOT_TOKEN`

**Решение:**
1. Создайте бота через [@BotFather](https://t.me/botfather)
2. Получите токен
3. Добавьте в `.env`:
   ```env
   TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz
   ```
4. Очистите кеш конфигурации:
   ```bash
   php artisan config:clear
   ```

### Проблема 2: "Telegram chat ID is not configured"

**Причина:** В `.env` файле отсутствует или пустой `TELEGRAM_CHAT_ID`

**Решение:**
1. Найдите свой Chat ID через [@userinfobot](https://t.me/userinfobot)
2. Или создайте группу, добавьте бота, отправьте сообщение
3. Получите Chat ID группы через API или бота [@getidsbot](https://t.me/getidsbot)
4. Добавьте в `.env`:
   ```env
   TELEGRAM_CHAT_ID=123456789
   ```
5. Очистите кеш:
   ```bash
   php artisan config:clear
   ```

### Проблема 3: "Failed to send Telegram message" с ошибкой 401

**Причина:** Неверный bot token

**Решение:**
1. Проверьте правильность токена в `.env`
2. Убедитесь, что токен не содержит лишних пробелов
3. Получите новый токен через [@BotFather](https://t.me/botfather) если нужно

### Проблема 4: "Failed to send Telegram message" с ошибкой 400

**Причина:** Неверный chat ID или бот не добавлен в чат/группу

**Решение:**
1. Убедитесь, что бот добавлен в чат/группу
2. Отправьте боту любое сообщение (если личный чат)
3. Проверьте правильность chat ID
4. Для группы: убедитесь, что бот является участником группы

### Проблема 5: "Failed to send Telegram message" с ошибкой 403

**Причина:** Бот заблокирован пользователем или удален из группы

**Решение:**
1. Разблокируйте бота (если личный чат)
2. Добавьте бота обратно в группу
3. Убедитесь, что бот имеет права на отправку сообщений

### Проблема 6: Уведомления не приходят, но ошибок в логах нет

**Причина:** Возможно, ошибки не логируются или заказ не создается

**Решение:**
1. Проверьте, что заказ действительно создается
2. Проверьте логи на наличие записей о Telegram
3. Выполните тест через `/api/admin/telegram/test`
4. Проверьте, что код вызывается в `OrderController::store()`

## Ручное тестирование

### Тест через PHP

Создайте временный файл `test-telegram.php` в корне проекта:

```php
<?php
require __DIR__ . '/vendor/autoload.php';

$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();

$botToken = $_ENV['TELEGRAM_BOT_TOKEN'] ?? '';
$chatId = $_ENV['TELEGRAM_CHAT_ID'] ?? '';

if (empty($botToken) || empty($chatId)) {
    die("Ошибка: TELEGRAM_BOT_TOKEN или TELEGRAM_CHAT_ID не настроены\n");
}

$message = "🧪 Тестовое сообщение\nВремя: " . date('Y-m-d H:i:s');

$url = "https://api.telegram.org/bot{$botToken}/sendMessage";
$data = [
    'chat_id' => $chatId,
    'text' => $message,
    'parse_mode' => 'HTML',
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo "HTTP Code: $httpCode\n";
echo "Response: $response\n";

if ($httpCode === 200) {
    echo "\n✅ Сообщение успешно отправлено!\n";
} else {
    echo "\n❌ Ошибка при отправке сообщения\n";
}
```

Выполните:
```bash
php test-telegram.php
```

**⚠️ ВАЖНО: Удалите файл `test-telegram.php` после тестирования!**

## Проверка через cURL

```bash
curl -X POST "https://api.telegram.org/botВАШ_ТОКЕН/sendMessage" \
  -H "Content-Type: application/json" \
  -d '{
    "chat_id": "ВАШ_CHAT_ID",
    "text": "Тестовое сообщение",
    "parse_mode": "HTML"
  }'
```

## Дополнительная информация

- [Telegram Bot API Documentation](https://core.telegram.org/bots/api)
- [@BotFather](https://t.me/botfather) - создание и управление ботами
- [@userinfobot](https://t.me/userinfobot) - получение Chat ID
- [@getidsbot](https://t.me/getidsbot) - получение ID чатов и групп

