Простой бот для отправки сообщений в каналы

Материал из Mindsellers
Перейти к: навигация, поиск

Python


Итак, рассмотрим простого бота, предназначенного для отправки уведомлений в каналы telegram.

В первую очередь, нужно бота создать, делается это с помощью служебного бота @BotFather, который даст нам token нашего бота. Затем, создадим канал, добавим туда нашего бота по имени в качестве администратора. Внимание! Канал нужно создать публичным. Используя любую машину, где есть доступ к телеграму, получим id нашего канала:

https://api.telegram.org/bot<токен>/getChat?chat_id=@<название канала>

В выхлопе будет json, содержащий id. После этого канал можно сделать приватным, id у него уже не изменится.

Поставим все необходимое

apt install python3-pip
pip3 install setuptools
pip3 install pytelegrambotapi 
pip3 install -U requests[socks]

requests[socks] нам будет необходим для того, чтобы наш бот умел работать через socks-прокси. Код поражает своей элементарностью:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
import telebot
from telebot import apihelper
try:
        id,message=sys.argv[1:]
except:
        print('Необходимо 2 аргумента - id и сообщение')
        exit(1)


apihelper.proxy={'https':'socks5h://proxyuser@proxypass@domain.ltd:port'}
token = '10300000:AAGRVSSSSSSSSSSSSS'
bot=telebot.TeleBot(token)
bot.send_message(id, message)


На входе принимаем id чата, группы, канала - не принципиально, на выходе имеем сообщение в канал. Понятно, что любой человек, "знакомый" с ботом, может принимать сообщения себе в личку от этого бота, нужно только указать личный id, узнать который можно методом, описанным в начале, или через бота @userinfobot Естественно, это просто маленькая заготовка, и следует расширить функциональность бота до интерактива, о чем я уже писал ранее.

UPD

А вот так можно отправить сообщение в одну строчку на баше, если вдруг кому надо будет

curl -x socks5h://proxyuser:proxypass@proxydomain.ltd:[proxyport] 
https://api.telegram.org/bot103000000:XXXXXXXXXXXXX/sendMessage?chat_id=[id]&text=[sometext] "