Alexander Koryukin ya tura ni zuwa wannan aiwatarwa
Kuma sharhi a cikin ɗayan ƙungiyoyin VK na Kirill Kazakov:
Ee, ba shi da tsaro kwata-kwata. Na fi so in rubuta bot na telegram wanda kawai ke karɓar umarnin kunnawa daga asusuna.
Na yanke shawarar rubuta irin wannan bot.
Don haka, abu na farko da za a yi shine ƙirƙirar bot a cikin telegram.
- Mun sami a cikin binciken wani asusu mai suna @botfather
- Danna maɓallin Fara a kasan allon
- Sai mu rubuta masa umurnin / newbot
Sai mu amsa tambayoyi guda 2 masu sauki:
- Tambaya ta farko ita ce sunan bot ɗin da za a ƙirƙira. MyMikrotikROuter
- Tambaya ta biyu ita ce laƙabin bot ɗin da ake ƙirƙira (ya kamata ya ƙare da bot) MikrotikROuter_bot
A cikin martani, za mu karɓi alamar bot ɗin mu, a cikin yanayina shine:
Yi amfani da wannan alamar don samun damar HTTP API: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4
Bayan haka, kuna buƙatar nemo bot ɗin mu a cikin binciken da suna @MikrotikROuter_bot kuma danna maɓallin Fara.
Bayan haka, kuna buƙatar buɗe mai binciken kuma shigar da layi mai zuwa:
https://api.telegram.org/botXXXXXXXXXXXXXXXXXX/getUpdates
Inda XXXXXXXXXXXXXXXXXX shine alamar bot ɗin ku.
Shafi mai kama da mai zuwa zai buɗe:
Muna samun rubutu mai zuwa akansa:
"chat":{"id":631290,
Don haka, muna da duk mahimman bayanan da ake buƙata don rubuta rubutun na Mikrotik, wato:
Alamar Bot: 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4
Taɗi ID inda ya kamata ya rubuta: 631290
Don bincika, za mu iya shiga cikin browser:
https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=test
Ya kamata a sami sakamako:
Don dacewarmu, nan da nan za mu ƙara umarni don bot:
Neman asusu mai suna @baba
Sai mu rubuta masa umarni / umarni
- Zai tambayi wane bot
Mun rubuta:
@MikrotikROuter_bot
Ƙara umarni:
- helloworld<- Gwajin saƙo akan taɗi 1
- Saƙon Gwaji yana aiki akan taɗi 2
- wolmypc-tashi PC na
Yanzu idan ka buga "/" a cikin hira, ya kamata ka samu:
Yanzu bari mu matsa zuwa MikroTik.
RouterOS yana da kayan aikin wasan bidiyo don kwafin fayiloli ta hanyar ftp ko http / https, mai amfani ana kiransa fetch, wanda shine abin da za mu yi amfani da shi.
Bude m kuma shiga:
/tool fetch url="https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=test " keep-result=no
Lura cewa MikroTik yana buƙatar "» don tserewa alamar "?'a cikin URL.
Ya kamata a sami sakamako:
Yanzu bari mu matsa zuwa rubutun:
Sannu Duniya
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}
aikinsa
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"
Kar a manta a saka madaidaicin sunan mac da interface, da kuma bot-token da chat_id.
Yanzu zan yi bayani kadan abin da suke yi:
Rubutun "helloworld" yana aika sako: "Sannu, duniya!" zuwa tattaunawar mu da bot.
Rubutun "mai aiki" yana aika sako: "Gwaji yayi kyau, yana Aiki!" zuwa tattaunawar mu da bot.
Waɗannan rubutun don dalilai ne na nunawa.
Na ƙara rubutun "wolmypc" a matsayin ɗaya daga cikin yiwuwar aiwatarwa.
Bayan aiwatar da rubutun, bot ɗin zai rubuta "wol OK" zuwa hira.
A zahiri, zaku iya gudanar da cikakken kowane rubutun.
Ƙirƙiri ɗawainiya:
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
Duban Karatuba a bayyana dalilin da ya sa ba, amma daga rubutun aiki ba ya bayyana bayanan duniya ba, ya kara da rubutun lokacin da tsarin ya tashi.
Farawa ta 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") ;
sakon waya
: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;
}
Ta yaya wannan aikin
Zazzage saƙon "getUpdates" ɗin mu kowane sakan 30, sannan ku bita don ganowa update_id (lambar sakon) da rubutu (kungiyoyin mu) da chat_id . Ta hanyar tsoho, getUpdates yana nunawa daga saƙonni 1 zuwa 100, don dacewa, bayan karanta umarnin, muna share saƙon. Telegram api ya ce don karanta sako kuna buƙatar lambar saƙon + 1
/getUpdates?offset=update_id + 1
Duk an gwada su akan Mikrotik rb915 RouterOS 6.37.1
Idan ka aika umarni da yawa lokaci guda, za a aiwatar da su bi da bi tare da tazarar daƙiƙa 30.
PS Yawancin godiya ga Kirill Kazakov don ra'ayin da abokina Alexander don taimako tare da rubutun.
nassoshi
sabuntawa:
03:11:16
Ingantattun rubutun:
Ƙara duba don chat_id
Binciken wawa, idan wani ya rubuta wa bot ɗinmu, zai amsa masa: "Ba zan iya magana da ku ba. ", Hakanan zai amsa mana idan bai gane umarnin ba.
Bayan aiwatar da umarnin, bot ɗin ya cire rajista zuwa tattaunawar (duba rubutun wolmypc)
DUP
An same shi da
UPD 08.12.2016/XNUMX/XNUMX
a cikin Telegram, a fili, sun ɗan canza "ƙarewa" na getUpdate. yanzu a cikin babban rubutun kuna buƙatar gyara gyara saƙon daga 2 zuwa 1
canji
:local message [:pick $content ($startLoc + 2) $endLoc] ;
заменить на :
:local message [:pick $content ($startLoc + 1) $endLoc] ;
source: www.habr.com