MiroGram
Bot API

Боты на MiroGram

Как создать своего бота и подключить к нему код: ответы на частые вопросы и рабочий пример.

Адрес APIhttps://api.mirogram.bizвместо api.telegram.org

Три шага

  1. 01Создайте ботаНапишите @BotFather команду /newbot и получите токен.
  2. 02Смените адресВ библиотеке укажите api.mirogram.biz вместо Telegram.
  3. 03Запустите кодМетоды те же, что в Bot API: sendMessage, getUpdates и другие.

Частые вопросы

Как создать бота?

Напишите @BotFather прямо в приложении и отправьте команду /newbot. Он спросит имя бота, затем юзернейм (обязательно должен заканчиваться на bot, например my_cool_bot). В конце вы получите токен — строку вида 123456789:AAExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.

Какой адрес API использовать вместо api.telegram.org?

https://api.mirogram.biz. Все методы (sendMessage, getUpdates, getFile и т.д.) работают точно так же, как в оригинальном Bot API — меняется только адрес. Если шлюз вернул ACCESS_TOKEN_INVALID — проверьте токен: он должен быть от @BotFather и не отозван.

На каком языке/библиотеке писать бота?

На любом. Это обычный HTTP JSON API, как оригинальный. Для Python подойдут стандартные библиотеки — у всех есть параметр для смены адреса сервера:

  • python-telegram-bot: ApplicationBuilder().token(TOKEN).base_url("https://api.mirogram.biz/bot")
  • aiogram: TelegramAPIServer.from_base("https://api.mirogram.biz")
  • pyTelegramBotAPI: telebot.apihelper.API_URL = "https://api.mirogram.biz/bot{0}/{1}"
Как скачивать файлы, которые прислали боту?

Как обычно: вызовите getFile, чтобы получить file_path, затем скачайте файл по адресу https://api.mirogram.biz/file/bot<TOKEN>/<file_path>.

Как получать обновления: getUpdates или webhook?

Работают оба способа. Для простых ботов удобнее long polling: getUpdates с параметром offset возвращает события по мере поступления. Для продакшена используйте setWebhook — сервер будет сам доставлять обновления на ваш URL. Состояние проверяется методами getWebhookInfo, deleteWebhook и dropPendingUpdates.

Токен утёк / скомпрометирован, что делать?

Напишите @BotFather команду /revoke и выберите бота — старый токен сразу перестанет действовать, выдастся новый.

Что ещё умеет @BotFather?

/mybots — список ваших ботов, /setname, /setdescription, /setabouttext, /setcommands, /setinline, /setjoingroups, /setprivacy — всё как в оригинальном Telegram.

Можно ли удалить бота насовсем?

Нет — как и в оригинале, ботов нельзя удалить полностью, только отозвать токен (/revoke) или скрыть его функциональность.

Пример: бот-эхо на Python

Рабочий пример без сторонних фреймворков, только requests. Отвечает на /start и повторяет любое сообщение.

import time
import requests

TOKEN = "ВАШ_ТОКЕН_ОТ_BOTFATHER"
API = f"https://api.mirogram.biz/bot{TOKEN}"

def get_updates(offset=None):
    params = {"timeout": 30}
    if offset:
        params["offset"] = offset
    r = requests.get(f"{API}/getUpdates", params=params, timeout=35)
    return r.json()["result"]

def send_message(chat_id, text):
    requests.post(f"{API}/sendMessage", json={"chat_id": chat_id, "text": text})

def main():
    offset = None
    print("Бот запущен...")
    while True:
        for update in get_updates(offset):
            offset = update["update_id"] + 1
            message = update.get("message")
            if not message:
                continue
            chat_id = message["chat"]["id"]
            text = message.get("text", "")
            if text == "/start":
                send_message(chat_id, "Привет! Я бот на MiroGram. Напиши что-нибудь.")
            else:
                send_message(chat_id, f"Ты написал: {text}")

if __name__ == "__main__":
    main()

Сохраните как bot.py, вставьте свой токен и запустите: python3 bot.py. Больше ничего настраивать не нужно.