Alexander Koryukin no nanosika ahy hanao izany fampiharana izany
Ary fanehoan-kevitra tao amin'ny iray amin'ireo vondrona VK nataon'i Kirill Kazakov:
Eny, tsy azo antoka mihitsy. Aleoko manoratra bot telegrama izay manaiky baiko fampahavitrihana avy amin'ny kaontiko.
Nanapa-kevitra ny hanoratra bot toy izany aho.
Noho izany, ny zavatra voalohany tokony hatao dia ny mamorona bot amin'ny telegrama.
- Hitanay ao amin'ny fikarohana ny kaonty iray antsoina hoe @botfather
- Tsindrio ny bokotra Start eo amin'ny faran'ny efijery
- Avy eo dia soratanay aminy ny baiko / newbot
Dia mamaly fanontaniana tsotra 2 izahay:
- Ny fanontaniana voalohany dia ny anaran'ny bot hoforonina. MyMikrotikROuter
- Ny fanontaniana faharoa dia ny anaram-bositra noforonina (tokony hifarana amin'ny bot) MikrotikROuter_bot
Ho setrin'izany dia hahazo ny mariky ny bot-nay izahay, raha ny amiko dia:
Ampiasao ity famantarana ity hidirana amin'ny HTTP API: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4
Avy eo, mila mahita ny bot-nay ianao amin'ny fikarohana amin'ny anarana @MikrotikROuter_bot ary tsindrio ny bokotra Start.
Aorian'izay dia mila manokatra ny navigateur ianao ary miditra amin'ity andalana manaraka ity:
https://api.telegram.org/botXXXXXXXXXXXXXXXXXX/getUpdates
Aiza ny XXXXXXXXXXXXXXXXXX no famantarana ny bot-nao.
Pejy mitovy amin'ity manaraka ity no hisokatra:
Hitantsika ao anatin'izany ity lahatsoratra manaraka ity:
"chat":{"id":631290,
Noho izany, manana ny fampahalalana rehetra ilaina amin'ny fanoratana script ho an'ny Mikrotik isika, izany hoe:
Bot famantarana: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4
Chat ID izay tokony hanoratany: 631290
Mba hanamarinana dia afaka mandeha amin'ny navigateur isika:
https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=test
Tokony hahazo ny vokatra:
Ho fanamorana anay dia hampiditra baiko avy hatrany ho an'ny bot izahay:
Mitady kaonty misy anarana @botray
Dia manoratra baiko ho azy izahay / setcommands
- Hanontany izay bot izy
Manoratra izahay:
@MikrotikROuter_bot
Ampio baiko:
- helloworld< β Hafatra andrana amin'ny chat 1
- itsworking-Test Message on chat 2
- wolmypc-mifohaza ny PC-ko
Ankehitriny raha manoratra "/" ao amin'ny chat ianao dia tokony hahazo:
Andeha isika hifindra amin'ny MikroTik.
RouterOS dia manana fitaovana fampiononana ho an'ny kopia rakitra amin'ny ftp na http / https, ilay fitaovana dia antsoina hoe fetch, izay no hampiasainay.
sokafy ny alalan'ny terminal ary midira:
/tool fetch url="https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=test " keep-result=no
Mariho fa mila "MikroTik"Β» handosirana ny famantarana Β«?' ao amin'ny URL.
Tokony hahazo ny vokatra:
Andeha isika hifindra amin'ny scripts:
Hello World
system script add name="helloworld" policy=read source={/tool fetch url="https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=Hello,world! " keep-result=no}
ny asany
system script add name="itsworking" policy=read source={/tool fetch url="https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=Test OK, it's Working " keep-result=no}
wolmypc
system script add name="wolmypc" policy=read source="/tool wol mac=XX:XX:XX:XX:XX:XX interface=ifnamer
n/tool fetch url="https://api.telegram.org/boXXXXXXXXXXXXXXXXXXX?chat_id=631290&text=wol OK" keep-resul
t=no"
Aza adino ny mamaritra ny anarana mac sy interface tsara, ary koa ny bot-token sy chat_id.
Hazavaiko kely izao ny ataon'izy ireo:
Ny script "helloworld" dia mandefa hafatra: "Manahoana, izao tontolo izao!" amin'ny resakay miaraka amin'ny bot.
Ny script "itsworking" dia mandefa hafatra: "Test OK, miasa izany!" amin'ny resakay miaraka amin'ny bot.
Ireo script ireo dia natao ho an'ny tanjona fampisehoana.
Nampiako ny script "wolmypc" ho iray amin'ireo fampiharana azo atao.
Rehefa vita ny script dia hanoratra "wol OK" amin'ny chat ny bot.
Raha ny marina, azonao atao ny mampandeha ny script rehetra.
Mamorona asa:
Telegram.src
/system scheduler
add interval=30s name=Telegram on-event=":tool fetch url=("https://api.telegr
am.org/".$botID."/getUpdates") ;r
n:global content [/file get [/file find name=getUpdates] contents] ;r
n:global startLoc 0;r
n:global endLoc 0;r
nr
n:if ( [/file get [/file find name=getUpdates] size] > 50 ) do={r
nr
n:set startLoc [:find $content "update_id" $lastEnd ] ;r
n:set startLoc ( $startLoc + 11 ) ;r
n:local endLoc [:find $content "," $startLoc] ;r
n:local messageId ([:pick $content $startLoc $endLoc] + (1));r
n:put [$messageId] ;r
n:#log info message="updateID $messageId" ;r
nr
n:set startLoc [:find $content "text" $lastEnd ] ;r
n:set startLoc ( $startLoc + 7 ) ;r
n:local endLoc [:find $content "," ($startLoc)] ;r
n:set endLoc ( $endLoc - 1 ) ;r
n:local message [:pick $content ($startLoc + 2) $endLoc] ;r
n:put [$message] ;r
n:#log info message="message $message ";r
nr
n:set startLoc [:find $content "chat" $lastEnd ] ;r
n:set startLoc ( $startLoc + 12 ) ;r
n:local endLoc [:find $content "," $startLoc] ;r
n:local chatId ([:pick $content $startLoc $endLoc]);r
n:put [$chatId] ;r
n:#log info message="chatID $chatId ";r
nr
n:if (($chatId = $myChatID) and (:put [/system script find name=$messa
ge] != "")) do={r
n:system script run $message} else={:tool fetch url=("https://api.teleg
ram.org/".$botID."/sendmessage?chat_id=".$chatId."&text=I can't t
alk with you. ") keep-result=no} ;r
n:tool fetch url=("https://api.telegram.org/".$botID."/getUpdates?
offset=$messageId") keep-result=no; r
n} r
n" policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon
start-date=nov/02/2010 start-time=00:00:00
add name=Telegram-startup on-event=":delay 5r
n:global botID "botXXXXXXXXXXXXXXXXXX" ;r
n:global myChatID "631290" ;r
n:global startLoc 0;r
n:global endLoc 0;r
n:tool fetch url=("https://api.telegram.org/".$botID."/getUpdates")
;" policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon
start-time=startup
Fijery azo vakianatsy mazava ny antony, fa avy amin'ny script miasa dia tsy manambara angon-drakitra manerantany, nanampy ny script rehefa boot ny rafitra.
Telegram fanombohana
:delay 5
:global botID "botXXXXXXXXXXXXXXXXXX" ; token bot
:global myChatID "xxxxxx" ; chat_id
:global startLoc 0;
:global endLoc 0;
:tool fetch url=("https://api.telegram.org/".$botID."/getUpdates") ;
telegrama
:tool fetch url=("https://api.telegram.org/".$botID."/getUpdates") ;
:global content [/file get [/file find name=getUpdates] contents] ;
:global startLoc 0;
:global endLoc 0;
:if ( [/file get [/file find name=getUpdates] size] > 50 ) do={
:set startLoc [:find $content "update_id" $lastEnd ] ;
:set startLoc ( $startLoc + 11 ) ;
:local endLoc [:find $content "," $startLoc] ;
:local messageId ([:pick $content $startLoc $endLoc] + (1));
:put [$messageId] ;
#:log info message="updateID $messageId" ;
:set startLoc [:find $content "text" $lastEnd ] ;
:set startLoc ( $startLoc + 7 ) ;
:local endLoc [:find $content "," ($startLoc)] ;
:set endLoc ( $endLoc - 1 ) ;
:local message [:pick $content ($startLoc + 2) $endLoc] ;
:put [$message] ;
#:log info message="message $message ";
:set startLoc [:find $content "chat" $lastEnd ] ;
:set startLoc ( $startLoc + 12 ) ;
:local endLoc [:find $content "," $startLoc] ;
:local chatId ([:pick $content $startLoc $endLoc]);
:put [$chatId] ;
#:log info message="chatID $chatId ";
:if (($chatId = $myChatID) and (:put [/system script find name=$message] != "")) do={
:system script run $message} else={:tool fetch url=("https://api.telegram.org/".$botID."/sendmessage?chat_id=".$chatId."&text=I can't talk with you. ") keep-result=no} ;
:tool fetch url=("https://api.telegram.org/".$botID."/getUpdates?offset=$messageId") keep-result=no;
}
Inona no manao izany asa
Ampidino ny hafatray "getUpdates" isaky ny 30 segondra, avy eo dia diniho mba hahitana izany update_id (numero hafatra) ary lahatsoratra (ny ekipanay) ary chat_id . Amin'ny alΓ lan'ny default, ny getUpdates dia mampiseho hafatra 1 ka hatramin'ny 100, ho fanamorana, rehefa avy mamaky ny baiko izahay dia mamafa ilay hafatra. Telegram api dia milaza fa mamaky hafatra ianao dia mila ny laharana hafatra + 1
/getUpdates?offset=update_id + 1
Nosedraina avokoa tamin'ny Mikrotik rb915 RouterOS 6.37.1
Raha mandefa baiko maro indray mandeha ianao dia hotanterahina miaraka amin'ny elanelana 30 segondra izy rehetra.
PS Misaotra betsaka an'i Kirill Kazakov tamin'ny hevitra sy Alexander namako tamin'ny fanampiana tamin'ny script.
soratra masina
upd:
03:11:16
Soraty nohatsaraina:
Fanamarinana fanampiny ho an'ny chat_id
Manamarina ny adala, raha misy manoratra amin'ny boty, dia hamaly azy izy hoe: "Tsy afaka miresaka aminao aho. β, dia hamaly antsika toy izany koa raha tsy mahafantatra ny baiko.
Aorian'ny fanatanterahana ny baiko dia miala amin'ny chat ny bot (jereo ny script wolmypc)
DUP
Hita tamin'ny
UPD 08.12.2016/XNUMX/XNUMX
ao amin'ny Telegram, toa nanova kely ny "setroka" an'ny getUpdate izy ireo. Amin'izao fotoana izao ao amin'ny script lehibe dia mila manitsy ny offset amin'ny 2 ka hatramin'ny 1 ianao
fanovana
:local message [:pick $content ($startLoc + 2) $endLoc] ;
Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° :
:local message [:pick $content ($startLoc + 1) $endLoc] ;
Source: www.habr.com