Боты на MiroGram
Как создать своего бота и подключить к нему код: ответы на частые вопросы и рабочий пример.
Три шага
- 01Создайте ботаНапишите
@BotFatherкоманду/newbotи получите токен. - 02Смените адресВ библиотеке укажите
api.mirogram.bizвместо Telegram. - 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. Больше ничего настраивать не нужно.
