Bhrùth Alexander Koryukin mi chun a’ bhuileachadh seo
Agus beachd ann am fear de na buidhnean VK le Kirill Kazakov:
Yeah, chan eil e sàbhailte idir. B’ fheàrr leam bot teileagram a sgrìobhadh nach gabh ach ri òrdughan gnìomhachaidh bhon chunntas agam.
Cho-dhùin mi a leithid de bot a sgrìobhadh.
Mar sin, is e a’ chiad rud a nì thu bot a chruthachadh ann an teileagram.
- Lorg sinn san rannsachadh cunntas leis an ainm @botfather
- Cliog air a 'phutan Tòisich aig bonn na sgrìn
- An uairsin bidh sinn a’ sgrìobhadh an àithne / newbot dha
An uairsin freagraidh sinn 2 cheist shìmplidh:
- Is e a’ chiad cheist ainm a’ bhot a thèid a chruthachadh. MyMicrotikRouter
- Is e an dàrna ceist am far-ainm a tha air a’ bot a thathar a’ cruthachadh (bu chòir dha crìochnachadh le bot) MikrotikROuter_bot
Mar fhreagairt, gheibh sinn comharra ar bot, na mo chùis tha e:
Cleachd an tòcan seo gus faighinn gu HTTP API: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4
An uairsin, feumaidh tu ar bot a lorg san rannsachadh le ainm @MikrotikROuter_bot agus brùth air a’ phutan Tòisich.
Às deidh sin, feumaidh tu am brabhsair fhosgladh agus cuir a-steach an loidhne a leanas:
https://api.telegram.org/botXXXXXXXXXXXXXXXXXX/getUpdates
Far a bheil XXXXXXXXXXXXXXXXXX comharradh do bot.
Fosglaidh duilleag coltach ris na leanas:
Lorgaidh sinn an teacsa a leanas air:
"chat":{ "id":631290,
Mar sin, tha a h-uile fiosrachadh riatanach againn airson sgrìobhadh sgriobtaichean airson Mikrotik, is iad sin:
Comharra bot: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4
ID còmhraidh far am bu chòir dha sgrìobhadh: 631290
Gus sgrùdadh a dhèanamh, is urrainn dhuinn a dhol tron bhrobhsair:
https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=test
Bu chòir an toradh fhaighinn:
Airson ar goireasachd, cuiridh sinn òrdughan airson a’ bot sa bhad:
Lorg cunntas le ainm @botathair
An uairsin bidh sinn a’ sgrìobhadh àithne dha / setcommands
- Bidh e a’ faighneachd dè am bot
Bidh sinn a’ sgrìobhadh:
@MikrotikROuter_bot
Cuir òrdughan ris:
- helloworld < - Teachdaireachd deuchainn air cabadaich 1
- an obair aige-Teachdaireachd deuchainn air cabadaich 2
- wolmypc-dùisg mo PC
A-nis ma tha thu a’ sgrìobhadh “/” sa chat, bu chòir dhut:
A-nis gluaisidh sinn air adhart gu MikroTik.
Tha goireas tòcan aig RouterOS airson faidhlichean a chopaigeadh tro ftp no http / https, canar fetch ris a’ ghoireas, agus is e sin a chleachdas sinn.
Fosgailte crìochnachadh agus cuir a-steach:
/tool fetch url="https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=test " keep-result=no
Thoir an aire gu bheil feum aig MikroTik air "» teicheadh bhon t-soidhne «?' anns an URL.
Bu chòir an toradh fhaighinn:
A-nis gluaisidh sinn air adhart gu sgriobtaichean:
Hàlo a Shaoghail
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}
a h-obair
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"
Na dìochuimhnich an t-ainm ceart mac agus eadar-aghaidh a shònrachadh, a bharrachd air bot-token agus chat_id.
A-nis mìnichidh mi beagan dè a nì iad:
Bidh an sgriobt "helloworld" a 'cur teachdaireachd: "Hello, world!" don chat againn leis a’ bhot.
Bidh an sgriobt “itsworking” a’ cur teachdaireachd: “Deuch ceart gu leòr, tha e ag obair!” don chat againn leis a’ bhot.
Tha na sgriobtaichean seo airson adhbharan taisbeanaidh.
Chuir mi an sgriobt “wolmypc” ris mar aon de na gnìomhan a dh’ fhaodadh a bhith ann.
Nuair a thèid an sgriobt a chuir gu bàs, sgrìobhaidh am bot “wol OK” chun chat.
Gu dearbh, faodaidh tu sgriobt sam bith a ruith.
Cruthaich obair:
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
Sealladh a ghabhas leughadhchan eil e soilleir carson, ach bhon sgriobt obrach chan eil e a’ foillseachadh dàta cruinneil, chuir e ris an sgriobt nuair a thòisicheas an siostam.
Tòiseachadh 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") ;
teileagram
: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;
}
Ciamar a tha an obair seo
Luchdaich sìos na teachdaireachdan “getUpdates” againn a h-uile 30 diog, an uairsin parse gus faighinn a-mach ùrachadh_id (àireamh teachdaireachd) agus teacsa (na sgiobaidhean againn) agus chat_id . Gu gnàthach, bidh getUpdates a’ taisbeanadh bho 1 gu 100 teachdaireachdan, airson goireasachd, às deidh dhuinn an àithne a leughadh, sguabaidh sinn às an teachdaireachd. Tha Telegram api ag ràdh airson teachdaireachd a leughadh feumaidh tu an àireamh teachdaireachd + 1
/getUpdates?offset=update_id + 1
Uile air a dhearbhadh air Mikrotik rb915 RouterOS 6.37.1
Ma chuireas tu mòran òrdughan aig an aon àm, thèid iad uile a chur an gnìomh mu seach le eadar-ama de 30 diog.
PS Mòran taing do Kirill Kazakov airson a’ bheachd agus mo charaid Alexander airson cuideachadh leis na sgriobtaichean.
iomraidhean
suas:
03:11:16
Sgriobtaichean leasaichte:
Chaidh seic a chur ris airson chat_id
A’ coimhead airson amadan, ma sgrìobhas cuideigin chun bot againn, freagraidh e e: “Chan urrainn dhomh bruidhinn riut. “, freagraidh e sinn mar an ceudna mura aithnich e an àithne.
Às deidh an àithne a chuir an gnìomh, bidh am bot a’ dì-chlàradh don chat (faic sgriobt wolmypc)
ÙRACHADH
Fhuaras le
ÙRACHADH 08.12.2016
ann an Telegram, a rèir choltais, dh’ atharraich iad beagan an “teàrnadh” de getUpdate. a-nis sa phrìomh sgriobt feumaidh tu an teachdaireachd a cheartachadh bho 2 gu 1
atharrachadh
:local message [:pick $content ($startLoc + 2) $endLoc] ;
заменить на :
:local message [:pick $content ($startLoc + 1) $endLoc] ;
Source: www.habr.com