Переклик

aiogram-бот в Переклике: меняем одну строку

Если у вас есть бот для Telegram, он почти наверняка заработает в Переклике без переписывания: Bot API у нас совместим по методам, типам и формату ответов. Меняется адрес сервера и токен. Ниже — что именно, и где совместимость заканчивается.

Зачем это разработчику

Бот в Telegram живёт в чужом доме: правила меняются, аудитория общая с миллионом других ботов, а если сервис в стране заблокируют или замедлят, бот умирает вместе с ним. Переклик — сервис для сообществ, и бот в нём обслуживает конкретный клуб, школу или компанию. Тот же код, та же библиотека, свой токен.

Шаг 1. Токен

  1. Откройте Переклик (веб-версия или приложение) и войдите.
  2. Найдите @botfather или откройте pereklik.ru/botfather.
  3. /newbot, имя, username (5–32 символа, латиница, цифры и _, заканчивается на bot).
  4. Скопируйте токен. /revoke выдаёт новый, если старый утёк.

Адреса:

API:   https://api.pereklik.ru/bot<TOKEN>/<method>
Файлы: https://api.pereklik.ru/file/bot<TOKEN>/<file_path>

Шаг 2. Одна строка

aiogram 3

from aiogram import Bot
from aiogram.client.session.aiohttp import AiohttpSession
from aiogram.client.telegram import TelegramAPIServer

session = AiohttpSession(api=TelegramAPIServer.from_base("https://api.pereklik.ru"))
bot = Bot(token=TOKEN, session=session)

grammY

const bot = new Bot(TOKEN, { client: { apiRoot: "https://api.pereklik.ru" } });

python-telegram-bot

app = (Application.builder().token(TOKEN)
       .base_url("https://api.pereklik.ru/bot")
       .base_file_url("https://api.pereklik.ru/file/bot")
       .build())

Telegraf

const bot = new Telegraf(TOKEN, { telegram: { apiRoot: "https://api.pereklik.ru" } });

Дальше — getUpdates или webhook, как привыкли.

Шаг 3. Webhook

Только HTTPS, порты 443, 80, 88 или 8443, сертификат от публичного центра (самоподписанные не принимаются). Фильтр по IP-сетям Telegram, если он у вас включён, надо выключить — в aiogram это IPFilter.default(). Подлинность запросов проверяйте через secret_token, он поддерживается.

Где совместимость заканчивается

Это честный список, чтобы не искать по логам:

  • ID другие. Формат тот же (группы отрицательные, каналы -100…), значения свои. Старые chat_id и file_id из Telegram здесь не работают — не зашивайте их в код.
  • Бот не пишет первым. В личку он отвечает только тем, кто ему написал. Это правило сервиса, не ограничение API.
  • Диплинки — https://pereklik.ru/<бот>?start=<payload> вместо t.me/....
  • Апдейты: message, edited_message, channel_post, edited_channel_post, callback_query, my_chat_member.
  • Нет: inline mode, платежей, стикеров, игр, Web Apps, business-режима, форумов, опросов через бота, геопозиции, контактов, реакций, restrictChatMember и promoteChatMember. Такие вызовы отвечают 400 method is not supported by Pereklik Bot API — ловите и деградируйте, библиотека не упадёт.

Полный перечень методов и лимиты — на странице «Перенеси бота».

Что получилось у нас

Первый живой бот в Переклике — семейный: заказ воды и суши кнопками, оплата коммуналки по квитанции. Написан на grammY, и вся «специфика Переклика» в его коде — это apiRoot и токен; остальное — обычный бот, каким его знает любой, кто писал для Telegram.

Если что-то не заработало — напишите на support@pereklik.ru с названием библиотеки и текстом ошибки, разберём.

Открыть Переклик в браузере