Как отправлять сообщения в приватный канал telegram из проекта на django
Открываем приложение telegram, через поиск по имени находим @BotFather в него отправляем команду /start и следуем инструкциям для создания своего бота.
В итоге получаем наш токен, такого типа, и имя своего бота:
@botname
Теперь, чтобы иметь доступ ботом в закрытый(приватный) канал, в который мы желаем отправлять сообщения этим ботом, для начала нужно добавить бота в этот канал и назначить его администратором, после этого нам нужно будет узнать id канала.
Это можно сделать так:
Сперва через telegram, через настройки канала, сделаем на время, этот канал публичным, чтобы дать ему имя. Допустим это будет @cannelname, по которому его можно найти в телеграм. Этим свойством обладают все публичные каналы.
Теперь откройте браузер и вставьте в адресную строку, в точности, только заменив на свой токен и на своё имя канала, места указанные здесь в квадратных скобках и нажмите Enter
в этом случае для примера, это был бы такой адрес:
После перехода по этой ссылке в окне браузера, в json формате, будет выведен id канала. Таким образом в этом месте мы имеем все нужные нам данные, для осуществления задуманного.
☯
Terminal:
⌕
≡
✕
{"ok":true,"result":{"message_id":3,"sender_chat":{"id":-10011111111111,"title":"cannel-name","username":"cannelname","type":"channel"},"chat":{"id":-10011111111111,"title":"cannel-name","username":"cannelname","type":"channel"},"date":1684042912,"text":"тест"}}
В каталоге с нашим проектом на django, в котором находится и файл settings.py, создаём специальный файл .env, и сразу добавляем его в .gitignore, если используется система контроля версий. После этого записываем в него все нужные данные, в свои имена констант, например эти:
☯
Terminal:
⌕
≡
✕
TELEGRAM_BOT_API_KEY=614714608SDFASDsdssdxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXE TG_CANNEL=-10011111111111
Теперь снова открываем телеграм и через настройки канала, делаем его обратно приватным. Id канала при этом не изменится.
Отправлять сообщения в этот канал теперь можно так, обратите внимание на добавление ещё одного get параметра &chat_type=private:
Для дальнейшего расширения функционала, лучше сразу выделить пространство для управления своим ботом в отдельное приложение в проекте, поэтому в каталоге проекта через окружение создаём приложение для примера назовём его telbot
в главном файле настроек проекта settings.py обязательно, нужно уже считывать содержимое закрытого от посторонних глаз содержимое файла .env. Делается это так:
☯
Terminal:
⌕
≡
✕
import environ env = environ.Env() # reading .env file environ.Env.read_env() ENV=env
Не забывая, добавить его в settings.py проекта в INSTALLED_APPS =[ 'telbot.apps.TelbotConfig',], в будущем это может пригодится, лучше сразу сделать, чтобы не забыть.
После, добавляем внутрь приложения telbot файл main.py
☯
Terminal:
⌕
≡
✕
import requests from django.conf import settings env = settings.ENV bot_api_key=env('TELEGRAM_BOT_API_KEY') channel_name=env('TG_CANNEL') url = f'https://api.telegram.org/bot{bot_api_key}/sendMessage?chat_id={channel_name}&chat_type=private' if __name__ == "__main__": #произойдёт отправка тестового сообщения в канал если просто запустить этот скрипт в своём окружении requests.get(url+'&text=проверка скрипта для бота').content
Текущая цель, данного скрипта это просто получать основной url запроса из секретного файла .env
затем в любом нужном нам месте, во view, любого из приложений проекта отправляем сообщение в канал, предварительно импортировав этот url из файла main.py, созданного приложения telbot. Добавив к этому url гет параметр с текстом сообщения.
☯
Terminal:
⌕
≡
✕
from telbot.main import url as telega_url mess=str1+' || '+str2+' || '+str3+' || '+str4+' || '+str5 # отправка сообщения в приватный служебный канал телеграмм requests.get(telega_url+'&text='+mess).content
-
- Roman Sakhno
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.