Alexander Koryukin ayaa igu riixay hirgelintan
Iyo faallo ka mid ah kooxaha VK ee Kirill Kazakov:
Haa, gabi ahaanba ammaan maaha. Waxaan doorbidi lahaa in aan qoro bot telegram oo kaliya aqbala amarrada firfircoonida akoonkayga.
Waxaan go'aansaday inaan qoro bot noocan oo kale ah.
Marka, waxa ugu horreeya ee la sameeyo waa in la abuuro bot telegram.
- Waxaan ka helnay raadinta akoon lagu magacaabo @botfather
- Guji badhanka Start ee hoose ee shaashadda
- Kadib waxaan u qornaa amarka / newbot
Kadib waxaan ka jawaabeynaa 2 su'aalood oo fudud:
- Su'aasha ugu horeysa waa magaca bot la abuurayo. MyMikrotikROuter
- Su'aasha labaad waa naaneyska bot-ka la abuuray (waa inay ku dhammaato bot) MikrotikROuter_bot
Jawaabta, waxaan heli doonaa calaamada bot-kayaga, xaaladdeyda waa:
Isticmaal calaamadan si aad u gasho HTTP API: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4
Kadib, waxaad u baahan tahay inaad ka hesho bot-kayaga raadinta magaca @MikrotikROuter_bot oo taabo badhanka Start.
Intaa ka dib, waxaad u baahan tahay inaad furto browserka oo geli khadka soo socda:
https://api.telegram.org/botXXXXXXXXXXXXXXXXXX/getUpdates
Meesha XXXXXXXXXXXXXXXXXX ay tahay astaanta bot-ka.
Bog la mid ah kuwan ayaa furmi doona:
Waxaan ka helaynaa qoraalkan soo socda:
"chat":{"id":631290,
Markaa, waxaan haynaa dhammaan macluumaadka lagama maarmaanka u ah qorista qoraallada Mikrotik, kuwaas oo ah:
Bot token: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4
Aqoonsiga wada sheekaysiga meesha uu ku qori karo: 631290
Si loo hubiyo, waxaan mari karnaa browserka:
https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=test
Waa in la helaa natiijada:
Si ay noogu fududaato, waxaanu isla markiiba ku dari doonaa amarada bot-ka:
Helitaanka akoon magac leh @botaabkii
Markaasaan u qornaa amar / amarro
- Wuxuu weydiin doonaa botkee
Waxaan qoreynaa:
@MikrotikROuter_bot
Ku dar amarrada:
- helloworld<- Fariinta tijaabada ee wada sheekaysiga 1
- Farriinta tijaabada shaqadeeda ee chat 2
- wolmypc-kac PC-gayga
Hadda haddii aad ku qorto "/" sheekeysiga, waa inaad heshaa:
Hadda aan u gudubno MikroTik.
RouterOS waxay leedahay utility console ah oo loogu talagalay koobiyaynta faylasha iyada oo loo marayo ftp ama http / https, utility waxaa loo yaqaan fetch, taas oo ah waxa aan isticmaali doono.
Furo terminal oo geli:
/tool fetch url="https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=test " keep-result=no
Fadlan la soco in MikroTik uu u baahan yahay"Β» si looga baxsado calaamada?' URL-ka
Waa in la helaa natiijada:
Hadda aan u gudubno qoraallada:
Helloworld
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}
shaqadeeda
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"
Ha iloobin inaad sheegto magaca saxda ah ee mac iyo interface, iyo sidoo kale bot-token iyo chat_id.
Hadda waxaan sharxi doonaa wax yar waxay qabtaan:
Qoraalka "helloworld" wuxuu soo dirayaa fariin: "Hello, adduunyo!" si aan ula sheekeysano bot-ka.
Qoraalka "shaqayntiisa" wuxuu soo dirayaa fariin: "Tijaabi OK, way shaqaynaysaa!" si aan ula sheekeysano bot-ka.
Qoraalladan waxaa loogu talagalay ujeeddooyin muujinaya.
Waxaan ku daray qoraalka "wolmypc" mid ka mid ah hirgelinta suurtagalka ah.
Marka la fuliyo qoraalka, bot-ku wuxuu ku qori doonaa "wol OK" sheekada.
Dhab ahaantii, waxaad gabi ahaanba wadi kartaa qoraal kasta.
Samee hawl:
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
Muuqaal la akhriyi karoMa cadda sababta, laakiin laga soo bilaabo qoraalka shaqada ma soo bandhigto xogta caalamiga ah, ayaa ku daray qoraalka marka nidaamka kabaha.
Bilowga Telegram
: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") ;
telegraam
: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;
}
Sidee tani u shaqaysaa
Soo deji fariimahayaga "getUpdates" 30kii ilbiriqsi kasta, ka dib baar si aad u ogaato update_id (lambarka fariinta) iyo text (Kooxahayada) iyo chat_id . Sida caadiga ah, getUpdates waxay soo bandhigaysaa 1 ilaa 100 farriimo, si ay ugu habboonaato, ka dib markaad akhrido amarka, waxaanu tirtirnaa fariinta. Telegram api wuxuu leeyahay si aad u akhrido fariin waxaad u baahan tahay lambarka fariinta + 1
/getUpdates?offset=update_id + 1
Dhammaan waxaa lagu tijaabiyay Mikrotik rb915 RouterOS 6.37.1
Haddii aad dirto amarro badan hal mar, dhamaantood waa la fulin doonaa iyadoo ay u dhaxayso 30 ilbiriqsi.
PS Aad ayaan ugu mahadcelinayaa Kirill Kazakov fikradda iyo saaxiibkay Alexander oo gacan ka helay qoraallada.
tixraacyada
cusboonaysii:
03:11:16
Qoraallada la hagaajiyay:
jeeg lagu daray chat_id
Hubinta nacas, haddii qof u soo qoro bot-kayaga, wuxuu u jawaabi doonaa: "Lama hadli karo. ", si la mid ah ayaa noogu jawaabi doonta haddii ay aqoonsan waydo amarka.
Kadib fulinta amarka, bot-ku wuu ka baxayaa sheekeysiga (eeg qoraalka wolmypc)
DUP
La helay
UPD 08.12.2016/XNUMX/XNUMX
Telegram-ka, sida muuqata, waxay waxyar ka beddeleen "daalkii" getUpdate. Hadda qoraalka ugu weyn waxaad u baahan tahay inaad ku saxdo fariinta la dhimay 2 ilaa 1
isbedel
:local message [:pick $content ($startLoc + 2) $endLoc] ;
Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° :
:local message [:pick $content ($startLoc + 1) $endLoc] ;
Source: www.habr.com