ከቴሌግራም የሚክሮቲክ ስክሪፕቶችን የርቀት ማንቃት

አሌክሳንደር ኮርዩኪን ወደዚህ ትግበራ ገፋፋኝ። GeXoGen ከህትመቱ ጋር "ሚክሮቲክን በመጠቀም ያለ ኤስኤምኤስ እና ያለ ደመና ኮምፒውተርዎን ከርቀት ያብሩት።".

እና በኪሪል ካዛኮቭ ከ VK ቡድኖች ውስጥ በአንዱ አስተያየት:

አዎ፣ በፍፁም ደህንነቱ የተጠበቀ አይደለም። ከመለያዬ የማግበር ትዕዛዞችን ብቻ የሚቀበል የቴሌግራም ቦት መፃፍ እመርጣለሁ።

እንደዚህ አይነት ቦት ለመጻፍ ወሰንኩ.

ስለዚህ, መጀመሪያ ማድረግ ያለብዎት ነገር በቴሌግራም ውስጥ ቦት መፍጠር ነው.

  • በፍለጋው ውስጥ @botfather የሚል ስም ያለው መለያ እናገኛለን
  • በማያ ገጹ ግርጌ ላይ ያለውን የጀምር ቁልፍን ጠቅ ያድርጉ
  • ከዚያም ትዕዛዙን / newbot እንጽፋለን

ከዚያ 2 ቀላል ጥያቄዎችን እንመልሳለን-

  • የመጀመሪያው ጥያቄ የሚፈጠረው ቦት ስም ነው MyMikrotikROuter
  • ሁለተኛው ጥያቄ ቦት የሚፈጠረው ቅጽል ስም ነው (በ bot ውስጥ ማለቅ አለበት) MikrotikROuter_bot

በምላሹ፣ የቦታችንን ማስመሰያ እንቀበላለን፣ በእኔ ሁኔታ ይህ ነው፡-

የኤችቲቲፒ ኤፒአይን ለመድረስ ይህን ማስመሰያ ይጠቀሙ፡- 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4

ከቴሌግራም የሚክሮቲክ ስክሪፕቶችን የርቀት ማንቃት
ከዚያ የእኛን ቦት በስም ፍለጋ ውስጥ ማግኘት አለብዎት @MikrotikROuter_bot እና የጀምር ቁልፍን ጠቅ ያድርጉ።

ከዚህ በኋላ አሳሽዎን መክፈት እና የሚከተለውን መስመር ማስገባት ያስፈልግዎታል:

 https://api.telegram.org/botXXXXXXXXXXXXXXXXXX/getUpdates

XXXXXXXXXXXXXXXXXX የእርስዎ የቦት ምልክት የት እንደሆነ።

ከሚከተለው ጋር ተመሳሳይ የሆነ ገጽ ይከፈታል፡-

ከቴሌግራም የሚክሮቲክ ስክሪፕቶችን የርቀት ማንቃት

በላዩ ላይ የሚከተለውን ጽሑፍ እናገኛለን።

"ቻት":{"id":631290,

ስለዚህ፣ ለሚክሮቲክ ስክሪፕቶችን ለመፃፍ ሁሉም አስፈላጊ መረጃ አለን።

ቦት ማስመሰያ፡- 265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4

መፃፍ ያለበት የውይይት መታወቂያ፡- 631290

ለማጣራት በአሳሹ ውስጥ ማለፍ እንችላለን፡-

https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=test

ውጤቱን ማግኘት አለብዎት:

ከቴሌግራም የሚክሮቲክ ስክሪፕቶችን የርቀት ማንቃት

ለእኛ ምቾት፣ ወዲያውኑ ለቦት ትዕዛዞችን እንጨምር፡-

ስም ያለው መለያ ማግኘት @የቦት አባት
ከዚያም ትእዛዝ እንጽፋለን / የተቀመጡ መመሪያዎች

  • የትኛውን ቦት ይጠይቃል

እኛ እንጽፋለን፡-
@MikrotikROuter_bot

ትዕዛዞችን ማከል

  • helloworld<- በውይይት 1 ላይ የሙከራ መልእክት
  • እየሰራ ነው - በውይይት ላይ የሙከራ መልእክት 2
  • wolmypc - የእኔን ፒሲ አንቃ

አሁን በቻት ውስጥ "/" ብለው ከተየቡ የሚከተሉትን ማግኘት አለብዎት:

ከቴሌግራም የሚክሮቲክ ስክሪፕቶችን የርቀት ማንቃት

አሁን ወደ ሚክሮቲክ እንሂድ።

ራውተርኦኤስ በftp ወይም http/https በኩል ፋይሎችን ለመቅዳት የኮንሶል መገልገያ አለው፣ መገልገያው ፌች ይባላል፣ ይህም የምንጠቀመው ነው።

ክፈት። ተርሚናል እና አስገባ:

/tool fetch url="https://api.telegram.org/bot265373548:AAFyGCqJCei9mvcxvXOWBfnjSt1p3sX1XH4/sendmessage?chat_id=631290&text=test " keep-result=no

እባክዎን MikroTik እንደሚፈልግ ያስተውሉ""ምልክቱን ለማምለጥ"?"በዩአርኤል ውስጥ።

ውጤቱን ማግኘት አለብዎት:

ከቴሌግራም የሚክሮቲክ ስክሪፕቶችን የርቀት ማንቃት

አሁን ወደ ስክሪፕቶቹ እንሂድ፡-

ሰላም ልዑል

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}

እየሰራ ነው።

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"

ትክክለኛውን የማክ እና የበይነገጽ ስም፣እንዲሁም bot-token እና chat_id መግለፅን አይርሱ።

አሁን የሚያደርጉትን ትንሽ እገልጻለሁ፡-

የ"ሄሎአለም" ስክሪፕት መልእክቱን ይልካል፡ "ሄሎ አለም!" ከቦት ጋር ለምናደርገው ውይይት።
"የሚሰራ" ስክሪፕት መልዕክቱን ይልካል፡ "እሺን ይሞክሩ፣ እየሰራ ነው!" ከቦት ጋር ለምናደርገው ውይይት።
እነዚህ ስክሪፕቶች ስራውን ለማሳየት ናቸው።
የ"wolmypc" ስክሪፕት ሊሆኑ ከሚችሉ ትግበራዎች ውስጥ ጨምሬያለሁ።
ስክሪፕቱ ሲጠናቀቅ, ቦት ወደ ቻቱ "wol OK" ይጽፋል.
እንደ እውነቱ ከሆነ, ማንኛውንም ስክሪፕት ማሄድ ይችላሉ.

ተግባር ፍጠር፡-

ቴሌግራም.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

ሊነበብ የሚችል እይታለምን እንደሆነ ግልጽ አይደለም, ነገር ግን ከስራው ስክሪፕት አለም አቀፋዊ መረጃን አያሳውቅም, ስርዓቱ ሲነሳ ስክሪፕቱ ተጨምሯል.
ቴሌግራም-ጅምር

: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") ;

ቴሌግራም

: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; 
} 

ይህን ሥራ የሚያደርገው እንዴት ነው?

በየ30 ሰከንድ የ"getUpdates" መልእክቶቻችንን እናወርዳለን፣ከዚያም ለማወቅ እንተነተነዋለን update_id (የመልእክት ቁጥር) እና ጽሑፍ (ቡድኖቻችን) እና ውይይት_መታወቂያ . በነባሪ, getUpdates ከ 1 እስከ 100 መልዕክቶችን ያሳያል, ለመመቻቸት, ትዕዛዙን ካነበቡ በኋላ, መልእክቱ ይሰረዛል. ቴሌግራም አፒ መልእክት ለማንበብ የመልእክት ቁጥሩ + 1 ያስፈልግዎታል ይላል።

/getUpdates?offset=update_id + 1

ሁሉም ነገር በ Mikrotik rb915 RouterOS 6.37.1 ላይ ተፈትኗል
ብዙ ትዕዛዞችን በአንድ ጊዜ ከላኩ ሁሉም በ 30 ሰከንድ ጊዜ ውስጥ አንድ በአንድ ይፈጸማሉ.

ፒ.ኤስ. ለኪሪል ካዛኮቭ ሀሳቡ እና ለጓደኛዬ አሌክሳንደር በስክሪፕት ፅሁፎች ላይ ስላደረገው እገዛ ብዙ አመሰግናለሁ።

ማጣቀሻዎች

habrahabr.ru/post/313794
1spla.ru/index.php/blog/telegram_bot_for_mikrotik
core.telegram.org/bots/api
wiki.mikrotik.com/wiki/ማንዋል: ስክሪፕት ማድረግ

የዘመነ

03:11:16

የተሻሻሉ ስክሪፕቶች፡

ለቻት_id ቼክ ታክሏል።
የሞኝ ቼክ፣ አንድ ሰው ለቦታችን ቢጽፍ፣ “ከእርስዎ ጋር መነጋገር አልችልም” በማለት ይመልሳል። ", ትዕዛዙን ካላወቀ በተመሳሳይ መልኩ ይመልስልናል.
ትዕዛዙ ሲፈፀም ቦቱ ከቻቱ ደንበኝነት ምዝገባ ይወጣል (የዎልሚፕክ ስክሪፕት ይመልከቱ)

DUP

ጋር ተገኝቷል 7Stuntman7 ከ ~ 14 መልዕክቶች በላይ ያለው ፋይል በፍለጋ ትዕዛዝ (በሚክሮቲክ ገደቦች) አይካሄድም። ስለዚ፡ ወደፊት ስክሪፕቱን በሉኣ እሰራለሁ፡ አመሰግናለሁ 7Stuntman7 ለዚህም ስለ ሉአ አላውቅም ነበር።

ዩፒዲ 08.12.2016

ቴሌግራም GetUpdateን "ጭስ ማውጫ" በጥቂቱ የቀየረው ይመስላል። አሁን በዋናው ስክሪፕት ውስጥ የመልዕክት ማካካሻውን ከ 2 ወደ 1 ማስተካከል ያስፈልግዎታል

ለውጥ

:local message [:pick $content ($startLoc + 2) $endLoc] ;

заменить на :

:local message [:pick $content ($startLoc + 1) $endLoc] ;

ምንጭ: hab.com