Bootstrap

Как отправлять сообщения в приватный канал telegram из проекта на django

Как отправлять сообщения в приватный канал telegram из проекта на django

Открываем приложение telegram, через поиск по имени находим @BotFather в него отправляем команду /start и следуем инструкциям для создания своего бота.

В итоге получаем наш токен, такого типа, и имя своего бота:

614714608SDFASDsdssdxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXE
@botname

Теперь, чтобы иметь доступ ботом в закрытый(приватный) канал, в который мы желаем отправлять сообщения этим ботом, для начала нужно добавить бота в этот канал и назначить его администратором, после этого нам нужно будет узнать id канала.

Это можно сделать так:

Сперва через telegram, через настройки канала, сделаем на время, этот канал публичным, чтобы дать ему имя. Допустим это будет @cannelname, по которому его можно найти в телеграм. Этим свойством обладают все публичные каналы.

Теперь откройте браузер и вставьте в адресную строку, в точности, только заменив на свой токен и на своё имя канала, места указанные здесь в квадратных скобках и нажмите Enter

https://api.telegram.org/bot[ТОКЕН_БОТА]/sendMessage?chat_id=@[USERNAME_КАНАЛА]&text=тест

в этом случае для примера, это был бы такой адрес:

https://api.telegram.org/bot614714608SDFASDsdssdxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXE/sendMessage?chat_id=@cannelname&text=тест

После перехода по этой ссылке в окне браузера, в 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:

https://api.telegram.org/bot614714608SDFASDsdssdxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXE/sendMessage?chat_id=-10011111111111&chat_type=private&text=тест.

Для дальнейшего расширения функционала, лучше сразу выделить пространство для управления своим ботом в отдельное приложение в проекте, поэтому в каталоге проекта через окружение создаём приложение для примера назовём его telbot




python manage.py startapp 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 и индексируемой прямой ссылкой на сайт (http://itdid.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/sahroman.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/sahroman.

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как настроить свой компьютер

  2. Текстовая ссылка:

    Она выглядит вот так: Как настроить свой компьютер

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

крипто-донат, на развитие сайта itdid.ru:

В новом окне с терминалом itdid.ru, введите любую сумму: