На удивление оказалось, что публикация в канал 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
Интернет