Как перенести бота на pyTelegramBotAPI в MAX
pyTelegramBotAPI, он же telebot, — простая библиотека для ботов на Python с декораторами @bot.message_handler. Адрес API в ней задаётся глобальной настройкой apihelper.
Коротко: замените адрес api.telegram.org на api.bothop.ru. Токен, хендлеры и база остаются прежними, а бот начинает работать в MAX.
Что поменять в коде pyTelegramBotAPI
До создания TeleBot, в самом начале файла с ботом. Зачёркнутая строка — как было, подсвеченная — как станет.
import telebot
Стало: from telebot import apihelper
Стало: apihelper.API_URL = "https://api.bothop.ru/bot{0}/{1}"Стало: apihelper.FILE_URL = "https://api.bothop.ru/file/bot{0}/{1}"bot = telebot.TeleBot(TOKEN)
Если библиотека ещё не установлена: pip install pyTelegramBotAPI.
Long polling и вебхук
bot.infinity_polling() работает как раньше.
Если бот на вебхуке через bot.set_webhook(url), адрес вебхука останется вашим, а шлюз будет присылать на него события из MAX.
MAX сам по себе требует вебхук на порту 443 с сертификатом доверенного центра и повторяет доставку, если не получил ответ вовремя. Эту часть берёт на себя шлюз: он держит вебхук MAX и отсекает дубли до того, как событие дойдёт до вашего бота.
Файлы
Для асинхронной версии AsyncTeleBot поменяйте те же адреса в telebot.asyncio_helper.
Что заработает сразу
- Текст с форматированием, ответы, пересылка, правка и удаление сообщений
- Inline-кнопки с callback и ссылками, всплывающие уведомления после нажатия
- Фото, видео, аудио, документы, альбомы, контакты и геоточки
- Команды
/startс меткой из ссылки и меню команд - Группы и каналы: участники, администраторы, события входа и выхода
Чего нет в MAX и что сделает шлюз
| В Telegram | Что сделает шлюз | Как |
|---|---|---|
| Клавиатура под полем ввода | Покажет те же кнопки под сообщением. Нажатие отправит боту тот же текст, как в Telegram | Аналог |
| Опросы | Соберёт опрос на кнопках, сам посчитает голоса и обновит результат | Аналог |
| GIF, голосовые, кружки | Отправит как видео и аудио | Аналог |
| Спойлеры и свои эмодзи | Покажет как обычный текст | Аналог |
| Реакции и кубик | Пропустит. Бот получит ok: true и не упадёт | Пропуск |
| Стикеры из Telegram | Пропустит или заменит на эмодзи, который вы выберете | Пропуск |
| Темы в группах | Отправит сообщение в общий чат | Пропуск |
| Inline-режим, игры, звёзды | Вернёт понятную ошибку в формате Telegram | Ошибка |
| Платежи | Переделаем на оплату по ссылке через вашу платёжную систему, например ЮKassa или CloudPayments | Под ключ |
| Мини-приложения | Кнопка откроет приложение. Само приложение адаптируем под MAX | Под ключ |
Как проверить
- Создайте бота в кабинете «MAX для бизнеса» и получите токен.
- Добавьте токен в кабинет BotHop: он выдаст токен в формате Telegram.
- Поменяйте адрес API в коде pyTelegramBotAPI, как в примере выше, и перезапустите бота.
- Напишите боту в MAX
/startи пройдите основные сценарии.
Нет своего разработчика? Перенесём бота сами за 4 990 ₽: напишите в Telegram @svintsovyan.
Частые вопросы
Чем это отличается от telebot-maxapi-adapter?
Адаптер работает только с AsyncTeleBot и не поддерживает часть возможностей. Шлюз не трогает код и работает с любой версией библиотеки.
Работает ли `register_next_step_handler`?
Да. Это логика вашего бота, она не зависит от мессенджера.
Как быть с `reply_markup=ReplyKeyboardMarkup`?
В MAX нет клавиатуры под полем ввода. Шлюз покажет те же кнопки под сообщением, и нажатие отправит боту тот же текст.