На удивление оказалось, что публикация в канал telegram через API — это довольно простой процесс. Тут не надо проходить OAuth. Токен выдаётся боту, который состоит в списке администраторов канала. Через него происходят все публикации.
Последовательность действий для программного создания публикаций в канале telegram:
- Создаём бота у @BotFather, сохраняем токен бота в функции get_token()
- Создаём канал, сохраняем адрес канала (с @ перед названием) в функции get_channel_id()
- Добавляем бота администратором в канал
- Публикуем текст через функцию send_text(text), а фото через функцию send_photo(text, photo)
Описание API: core.telegram.org/bots/api
Код на Python:
import requests def get_token(): """Возвращает токен, который был получен при создании бота""" return '61140174:GjSbsn7mV.....MKuTxYL' # тут надо вставить свой токен def get_channel_id(): """Возвращает id канала, куда надо публиковать сообщения""" return '@название_канала' # тут надо вставить своё название канала def send_text(text): """Отправляет текстовое сообщение в канал телеграма :param text: текст """ try: return requests.post( url=f'https://api.telegram.org/bot{get_token()}/sendMessage', data={'chat_id': get_channel_id(), 'text': text} ).json() except Exception as error: return error def send_photo(text, photo): """Отправляет фото в канал телеграма :param photo: поный путь к файлу изображения в системе Условия: - не больше 5 мегабайт, - отношение ширины/высоты (и наоборот) не больше 20 - высота менее 10000 пикселей :param text: текст, который будет подписью к фото """ try: return requests.post( url=f'https://api.telegram.org/bot{get_token()}/sendPhoto', data={'chat_id': get_channel_id(), 'caption': text}, files={'photo': open(photo,'rb')} ).json() except Exception as error: return error
2023-03-05T05:00:49
Интернет