Взаимодействие с Telegram API - Space-Lords-TG/docs GitHub Wiki
Как обрабатываются входящие сообщения
Бот получает сообщения от пользователей через Polling – это метод регулярного опроса серверов Telegram API для получения обновлений.
- Пользователь отправляет сообщение боту.
- Telegram API принимает сообщение и сохраняет его в своей системе.
- Бот с помощью Polling запрашивает у Telegram API новые сообщения (update).
- Dispatcher Aiogram анализирует входящее сообщение, сравнивает его с заданными обработчиками (команды, текст и т.д.).
- Вызывается нужный обработчик, который выполняет соответствующее действие:
- Отвечает пользователю.
- Записывает данные в базу.
- Отправляет кнопки и меню.
API для взаимодействия пользователя с ботом
Контекстные кнопки и их назначение
Кнопка |
Назначение |
Где используется |
Назад |
Возвращает на предыдущий экран |
Везде |
Результат боя |
Показывает итоги боя |
Арена, Битвы |
Выйти из очереди |
Отменяет участие в поиске боя |
Арена |
Встать в очередь |
Добавляет игрока в список ожидающих бой |
Арена |
Ремонт |
Начинает процесс починки корабля |
Меню корабля, После боя |
Оружие |
Меню управления оружием на корабле |
Меню корабля |
Корпус |
Меню управления корпусом корабля |
Меню корабля |
Заменить |
Подтверждение выбора нового оружия или корпуса |
Замена оборудования |
Улучшить |
Улучшает выбранное оборудование |
Оружие, Корпус |
В путь! |
Подтверждает перемещение к планете |
Карта, Перемещение |
Сектора |
Отображает список доступных секторов |
Карта, Перемещение |
К %ПЛАНЕТЕ% |
Возвращает игрока к захваченной планете |
После боя |
Построить аванпост |
Создает базу на свободной планете |
Планета |
Собрать ресурсы |
Забирает накопленные ресурсы с планеты |
Планета |
Захватить планету (бой) |
Начинает сражение за планету |
Планета |
Просмотр планеты |
Показывает детали планеты |
Главный экран |
Альфа 1, Альфа 2 и т. д. |
Позволяет выбрать конкретную планету для перемещения |
Карта |
Абоба, Амогус, Чебупель и т. д. |
Позволяет выбрать конкретную систему для перемещения |
Карта |
Команды для взаимодействия с ботом
Команда |
Описание |
Соответствующая кнопка |
/start |
Запуск бота, начало игры |
- |
/profile |
Просмотр информации о пользователе |
- |
/ship |
Управление кораблем (просмотр, настройка) |
Оружие, Корпус, Ремонт |
/repair |
Починка корабля |
Ремонт |
/weapon |
Меню управления оружием |
Оружие |
/hull |
Меню управления корпусом |
Корпус |
/replace |
Замена оборудования (оружия, корпуса) |
Заменить |
/upgrade |
Улучшение оборудования (оружие, корпус) |
Улучшить |
/attack |
Вступить в бой (арена) |
Встать в очередь |
/leave_queue |
Выйти из очереди на бой |
Выйти из очереди |
/battle_result |
Просмотр результата боя |
Результат боя |
/explore |
Исследование галактики (перемещение) |
Альфа 1, Альфа 2, Абоба и т. д. |
/travel |
Перемещение к выбранной планете |
В путь! |
/sectors |
Просмотр доступных секторов |
Сектора |
/capture |
Захват планеты (начало боя за планету) |
Захватить планету (бой) |
/planet_info |
Просмотр информации о планете |
Просмотр планеты |
/build_outpost |
Постройка аванпоста на свободной планете |
Построить аванпост |
/collect_resources |
Сбор ресурсов с планеты |
Собрать ресурсы |
/return_to_planet |
Возвращение к захваченной планете |
К %ПЛАНЕТЕ% |
/inventory |
Просмотр инвентаря и ресурсов |
- |
/leaderboard |
Таблица лидеров |
- |
/help |
Список доступных команд |
- |
Методы Telegram Bot API
Методы Telegram Bot API |
getUpdates |
getChat |
getMe |
sendMessage |
sendPhoto |
sendDocument |
sendChatAction |
sendSticker |
editMessageText |
editMessageReplyMarkup |
deleteMessage |
answerCallbackQuery |
sendDice |
getChatMember |
banChatMember |
Получение сообщений
- getUpdates - Получение входящих сообщений
- использует Polling для обработки сообщений
- позволяет запрашивать новые сообщения от пользователей и передавать их в диспетчер
- getChat – Получение информации о пользователе или группе
- позволяет определить, с кем взаимодействует бот
- используется для проверки информации о пользователе или группе
- getMe – Получение информации о боте
- можно использовать при инициализации бота или отладке
Взаимодействие с игроками (отправка сообщений)
- sendMessage – Отправка текстовых сообщений
- основной метод общения с игроком
- используется для отправки логов боя, информации о корабле, статусе планет и других игровых событий
- применяется для отправки игровых уведомлений
- sendPhoto – Отправка изображений
- используется для отображения карты, кораблей, планет
- помогает визуализировать игровые элементы
- sendDocument – Отправка файлов
- позволяет отправлять игровые логи
- может использоваться для передачи текстовых данных, например, статистики боя или истории сражений
- пригодится для выгрузки игровых отчетов (например, список захваченных планет)
- sendChatAction – Показывает статус "бот печатает..." перед ответом
- используется при обработке длительных операций
- помогает избежать ощущения "зависшего" бота при загрузке данных
- sendSticker – Отправка стикеров (+-)
- можно использовать для поздравлений
Изменение и управление сообщениями
- editMessageText – Обновление текста сообщений
- изменение статуса боя, обновление информации о планете, обновление карты
- editMessageReplyMarkup – Обновление inline-кнопок в уже отправленном сообщении
- обновление inline-кнопок в бою (например, после атаки кнопка "Атаковать" меняется на "Ожидание")
- изменение доступных действий на планете (например, если планета уже захвачена)
- обновление доступных опций в меню корабля (замена, улучшение, ремонт)
- deleteMessage – Удаление сообщений
- удаление устаревших сообщений, чтобы избежать загромождения чата
Работа с inline-кнопками
- sendMessage + reply_markup – Отправка сообщений с inline-кнопками
- позволяет прикрепить inline-кнопки к сообщению
- используется для интерактивного взаимодействия с игроками
- answerCallbackQuery – Ответ на нажатие inline-кнопки
- позволяет реагировать на нажатие inline-кнопки без отправки нового сообщения
- в бою: обработка выбора атаки ("Вы атаковали противника!")
- в магазине: покупка модулей для корабля ("Вы купили новую пушку!")
- в перемещении: подтверждение маршрута ("Вы отправились в путь!")
Перемещение по карте
- editMessageText – Обновление карты при перемещении игрока
- обновление положения корабля на карте
- изменение доступных маршрутов при перемещении
- sendPhoto – Отображение карты в виде изображения
- отправка изображения карты с отметками планет и систем
- отображение космических объектов (планеты, астероиды, базы)
Боевая система
- sendMessage – Отправка логов боя
- отправка подробных логов сражений в текстовом формате
- editMessageText – Обновление информации о ходе боя
- обновление статистики боя в реальном времени
- обновление состояния HP кораблей
- sendDice – Использование случайных чисел
- реализация случайных значений (например, крит. удары, уклонение)
- answerCallbackQuery – Реакция на кнопки боя
- обработка выбора игрока во время боя ("Вы нанесли 200 урона!")
Управление планетами
- sendMessage – Отправка информации о планете
- показать ресурсы планеты, владельца, уровень
- "Ресурсы: Металл (500), Кристаллы (200)"
- editMessageText – Обновление информации о планете
- изменение владельца планеты после боя ("Планета теперь принадлежит вам!")
- обновление добычи ресурсов и уровня планеты
Экономика и крафт
- sendMessage – Сообщение об улучшении корабля
- уведомление об успешном улучшении корабля ("Защита +20")
- editMessageText – Обновление инвентаря
- обновление списка модулей и их характеристик ("Ваш новый корпус установлен!")
- answerCallbackQuery – Реакция на выбор улучшений
- подтверждение выбора игрока в крафте ("Вы улучшили двигатель! Скорость +50%")
Лидерборды и статистика
- sendMessage – Отправка рейтингов игроков
- отображение списка лучших игроков
- editMessageText – Обновление списка лидеров
- динамическое обновление рейтинга без отправки новых сообщений
Администрирование
- getChatMember – Получение информации о пользователе
- проверка статуса игрока (админ, пользователь)
- banChatMember – Блокировка игрока
- использование в админ-панели для управления пользователями
Как пользователь будет выбирать конкретный корабль?
Выбор через кнопки (Inline-клавиатура)
- Бот выводит список кораблей с inline-кнопками.
- Игрок нажимает на кнопку с названием корабля.
- Бот активирует корабль и отправляет подтверждение.