Cкрипт на AutoIt для отправки сообщений через Bot-a в Telegram
Позволяет, имея зарегистрированного Телеграм Бота (нужен токен и id чата), отправлять сообщения ботом прямо из командной строки.
Размер программы меньше 852Kb. В системе может оставлять только файл настроек %Tempr%\~tgbot.tmp
В обращении очень прост.
Использует несколько параметров командной строки /h, /s, /d, /m
TelegbamBot_v2.exe /h — вывод помощи в консоль (на английском)
TelegbamBot_v2.exe /s token chat_id — записывает токен и id чата во временный файл для дальнейшего использования, файл записывается в каталог темп и содержит в открытом виде ваши token и chat_id, поэтому позаботьтесь о его удалении командой /d
TelegbamBot_v2.exe /d — удаляет данные записанные параметром /s
TelegbamBot_v2.exe /m token chat_id message — отправляет сообщение используя только данные коммандной строки. если в сообщении присутствуют пробелы — то все сообщение ОБЯЗАТЕЛЬНО поместить в кавычки: TelegbamBot_v2.exe /m 328765:ldbflshdgblb 8374658 «ваше сообщение»
TelegbamBot_v2.exe message — отправляет сообщение message используя, заранее сохраненные командой /s, token и chat_id
Можно легко сделать различные уведомления от программ, служб, сообщения от систем аудита и т.п.
Собственно сам код AutoIt
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\..\..\Desktop\МАСТЕРСКАЯ\ICONs\PluginHost-#100.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Res_Fileversion=2.0.0.22
#AutoIt3Wrapper_Change2CUI=y
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_Description=Программа для отправки сообщения через сервис Telegram Bot V2.
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------
Author: RedX@mail.ru
Программа для отправки сообщения через сервис Telegram Bot V2.
Вариант запуска №1:
TelegramBot_v2.exe /m token chat_id "строка сообщения"
"строка сообщения" - то, что будет отправлено ботом.
Обязательно строку помещать в кавычки
token - токен бота
chat_id - id чата
Вариант запуска №2:
TelegramBot_v2.exe /s token chat_id
сохранение токена и чат id во временном файле
TelegramBot_v2.exe /d
удаление сохраненных данных
TelegramBot_v2.exe "сообщение"
Отправка сообщения по заранее сохраненным данным
Пример выполнения:
1:
TelegramBot_v2.exe /m 1234567890:ABCDEGSBDJDGSG 3874652 "Welcome to my bot"
2:
TelegramBot_v2.exe /s 1234567890:ABCDEGSBDJDGSG 3874652
TelegramBot_v2.exe "Welcome to my bot"
TelegramBot_v2.exe /d
#ce ----------------------------------------------------------------------------
if $CmdLine[0]=0 Then
ConsoleWrite("There are no paramayetr."&@CRLF&"Start the program with parameter ""/h"" for receiving the help")
exit 1
endif
if $CmdLine[1]=="/h" Then
GetHelp()
exit 0
EndIf
if $CmdLine[1]=="/m" Then
if $CmdLine[0]<>4 then
ConsoleWrite("Wrong number of parameters. Run the program with the /h option for help.")
exit 2
EndIf
$token = $CmdLine[2]
$chat_id = $CmdLine[3]
$TXT = $CmdLine[4]
ConsoleWrite(BotMsg($TXT))
exit 0
EndIf
if $CmdLine[1]=="/s" Then
if $CmdLine[0]<>3 then
ConsoleWrite("Wrong number of parameters. Run the program with the /h option for help.")
exit 2
EndIf
$token = $CmdLine[2]
$chat_id = $CmdLine[3]
$err=IniWrite(@TempDir&"\~tgbot.tmp","settings","token",$token)
$err=$err and IniWrite(@TempDir&"\~tgbot.tmp","settings","chat_id",$chat_id)
if $err then
ConsoleWrite("Ok"&@CRLF)
exit 0
Else
ConsoleWrite("Error: settings are not saved."&@CRLF&"It is impossible to write the file: "&@TempDir&"\~tgbot.tmp"&@CRLF)
exit 1
endif
if $CmdLine[1]=="/d" Then
FileDelete(@TempDir&"\~tgbot.tmp")
exit 0
endif
if $CmdLine[0]=1 Then
$token=IniRead(@TempDir&"\~tgbot.tmp","settings","token",0)
$chat_id=IniRead(@TempDir&"\~tgbot.tmp","settings","chat_id",0)
if ($token=0 or $chat_id=0) then
ConsoleWrite("Error. Data from settings file - ""token"" and ""chat_id"" not found.")
exit 1
endif
$TXT = $CmdLine[1]
ConsoleWrite(BotMsg($TXT))
exit 0
EndIf
endif
exit 2
Func BotMsg($_TXT)
local $URL = "https://api.telegram.org/bot" & $token & "/sendMessage"
local $DATA = "chat_id="&$chat_id&"&text=" & $_TXT
$ret = HTTPS_Request($URL,$DATA)
return $ret
EndFunc
Func HTTPS_Request($_URL, $_Data) ;~ http запрос
$WinHttpReq = ObjCreate('WinHttp.WinHttpRequest.5.1')
$WinHttpReq.open("POST", $_URL, false)
$WinHttpReq.Option(4) = 13056
$WinHttpReq.SetRequestHeader('Referrer', 'http://www.slenergo.ru')
$WinHttpReq.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
$WinHttpReq.send($_Data)
$ret = $WinHttpReq.ResponseText
Return $ret
EndFunc
Func GetHelp()
$help = @CRLF& _
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"&@CRLF& _
"* Author: RedX@mail.ru"&@CRLF& _
"* WEB: https://www.neo-techno.ru/os/windows/autoit/telegrambot"&@CRLF& _
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"&@CRLF&@CRLF&@CRLF& _
"Program to send messages via the Telegram service Bot V2."&@CRLF&@CRLF& _
"Option run No. 1:"&@CRLF& _
"TelegramBot_v2.exe /m token chat_id ""message string"""&@CRLF& _
" ""message string"" - that will be sent to the bot."&@CRLF& _
" Be sure to put the string in quotes"&@CRLF& _
" token - token-bot"&@CRLF& _
" chat_id - id of the chat"&@CRLF&@CRLF& _
"Option run No. 2:"& _
"TelegramBot_v2.exe /s token chat_id"&@CRLF& _
" saving token and chat id in a temporary file"&@CRLF& _
"TelegramBot_v2.exe /d"& _
" deleting saved data"&@CRLF& _
"TelegramBot_v2.exe ""message"""& _
" sending a message according to a pre-stored data"&@CRLF&@CRLF& _
"Example:"&@CRLF& _
"1:"&@CRLF& _
" TelegramBot_v2.exe /m 1234567890:ABCDEGSBDJDGSG 3874652 ""Welcome to my bot"""&@CRLF&@CRLF& _
"2:"&@CRLF& _
" TelegramBot_v2.exe /s 1234567890:ABCDEGSBDJDGSG 3874652"&@CRLF& _
" TelegramBot_v2.exe ""Welcome to my bot"""&@CRLF& _
" TelegramBot_v2.exe /d"&@CRLF
ConsoleWrite($help)
EndFunc
В архиве файл исходника на AutoIt и скомпилированный консольный бинарный (.exe) под x86 TelegramBot_v2.zip version=2.0.0.21 from Yandex.Disk
______________________________________________________________________
UPD. 15-12-2017
программа обновлена до версии 2.0.0.21
Что изменено:
1.Полностью переписан способ передачи в программу token-a и chat_id
2.Программа переделана в консольную версию. Убраны все GUI сообщения.
Как зарегистрировать своего бота и получить token и chat_id
Открываем Телеграм и ищем контакт @BotFather, открываем с ним чат и нажимаем внизу Начать.
Пишем боту /newbot , он ответит «Alright, a new bot. How are we going to call it? Please choose a name for your bot.» — он говорит, что бот создан и спрашивает, как его назвать — пишем ему имя нашего будущего бота, конечно же на английском, например: mylitlebot
Бот напишет вам «Good. Now let’s choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.» — просит указать username нашего бота. напишем ему имя, причем в конце обязательно должны быть символы bot, например myseperlitle_bot (ошибка сделана намерено, потому что @mysuperlitle_bot уже был кем то зарегистрирован на момент написания данной статьи)
Бот ответит вам следующим текстом Done! Congratulations on your new bot. You will find it at t.me/myseperlitle_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you’ve finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.Use this token to access the HTTP API: 505718974:AAHYpDfIaIJNRWY1KDiMrDagP-YqsUQE6ts For a description of the Bot API, see this page:
https://core.telegram.org/bots/api505718974:AAHYpDfIaIJNRWY1KDiMrDagP-YqsUQE6ts — это и есть ваш токен нового бота. Теперь можно создать чат с ботом и получить его chat_id
Ищем чат по userame указанном нами в п.3 @myseperlitle_bot или перейдем по ссылке, которую нам прислал бот в последнем сообщении http://t.me/myseperlitle_bot , словом открывем чат с ботом и пишем ему что-нибудь. Далее берем наш токен вставляем его в следующую строку вместо строки {token}
https://api.telegram.org/bot{token}/getUpdates
в моем случае это был такой url: https://api.telegram.org/bot505718974:AAHYpDfIaIJNRWY1KDiMrDagP-YqsUQE6ts/getUpdates отправляем запрос через браузер и получаем ответ: