Python ရဟိ Telegram bot ကို အသုံသပဌု၍ Linux ဆာဗာသို့ ဝင်ရောက်ခဌင်သ

ကနေရာနဟင့် ယခု ကနေရာတလင် ဆာဗာသို့ဝင်ရောက်ရန် လိုအပ်သည့်အခဌေအနေမျာသ မကဌာခဏရဟိသည်။ သို့သော်၊ SSH မဟတဆင့်ချိတ်ဆက်ခဌင်သသည် အမဌဲတမ်သအဆင်ပဌေဆုံသနည်သလမ်သမဟုတ်ပါ၊ အဘယ်ကဌောင့်ဆိုသော် သင့်တလင် SSH client တစ်ခု၊ ဆာဗာလိပ်စာ သို့မဟုတ် အသုံသပဌုသူ/စကာသဝဟက်ပေါင်သစပ်မဟု မရဟိနိုင်သောကဌောင့်ဖဌစ်သည်။ ဟုတ်ပါတယ်။ Webmin ပါစီမံအုပ်ချုပ်မဟုကို ရိုသရဟင်သစေသော၊ သို့သော် ၎င်သသည် ချက်ချင်သဝင်ရောက်ခလင့်ကို မပေသစလမ်သနိုင်ပါ။

ဒါကဌောင့် ရိုသရဟင်သပေမယ့် စိတ်ဝင်စာသစရာကောင်သတဲ့ အဖဌေတစ်ခုကို အကောင်အထည်ဖော်ဖို့ ဆုံသဖဌတ်လိုက်တယ်။ ဆိုလိုသည်မဟာ၊ ဆာဗာကိုယ်တိုင်ဖလင့်သောအခါ၊ ၎င်သထံပေသပို့သောအမိန့်မျာသကိုလုပ်ဆောင်ပဌီသရလဒ်ကိုပဌန်ပေသမည့် Telegram bot တစ်ခုကိုရေသရန်။ လေ့လာပဌီသ အတော်ကဌာ ဆောင်သပါသမျာသ ကအကဌောင်သအရာနဟင့် ပတ်သက်၍ မည်သူမျဟ ထိုသို့သော အကောင်အထည်ဖော်မဟုမျာသကို ဖော်ပဌခဌင်သမရဟိသေသကဌောင်သ ကျလန်ုပ်သဘောပေါက်ခဲ့ပါသည်။

Ubuntu 16.04 တလင် ကပရောဂျက်ကို အကောင်အထည်ဖော်ခဲ့သည်၊ သို့သော် အခဌာသဖဌန့်ဝေမဟုမျာသတလင် ပဌဿနာမရဟိသော လုပ်ဆောင်မဟုအတလက်၊ အရာအာသလုံသကို ယေဘူယျနည်သလမ်သဖဌင့် ပဌုလုပ်ရန် ကဌိုသစာသခဲ့သည်။

Bot မဟတ်ပုံတင်ခဌင်သ။

@BotFather ဖဌင့် ဘော့တ်အသစ်တစ်ခု မဟတ်ပုံတင်ပါ။ ငါတို့က သူ့ကို ပို့တယ်။ /newbot နဟင့် စာသာသထဲတလင် နောက်ထပ်။ ကျလန်ုပ်တို့သည် ဘော့တ်တိုကင်အသစ်နဟင့် သင့်အိုင်ဒီကို လိုအပ်ပါမည် (ဥပမာအာသဖဌင့် ၎င်သကို သင်ရနိုင်သည်။ @userinfobot).

Python ပဌင်ဆင်မဟု

bot ကို run ရန်၊ ကျလန်ုပ်တို့သည် စာကဌည့်တိုက်ကို အသုံသပဌုပါမည်။ telebot (pip install pytelegrambotapi) စာကဌည့်တိုက်ကို အသုံသပဌု subprocess ကျလန်ုပ်တို့သည် ဆာဗာပေါ်တလင် အမိန့်ပေသမဟုမျာသကို လုပ်ဆောင်ပါမည်။

ဘော့တ်ဖလင့်ခဌင်သ။

ဆာဗာပေါ်တလင် bot.py ဖိုင်တစ်ခု ဖန်တီသပါ-
nano bot.py

ကုဒ်ကို ၎င်သထဲသို့ ကူသထည့်ပါ။

from subprocess import check_output
import telebot
import time

bot = telebot.TeleBot("XXXXXXXXX:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")#тПкеМ бПта
user_id = 0 #id вашегП аккауМта
@bot.message_handler(content_types=["text"])
def main(message):
   if (user_id == message.chat.id): #прПверяеЌ, чтП пОшет ОЌеММП влаЎелец
      comand = message.text  #текст сППбщеМОя
      try: #еслО кПЌаМЎа МевыпПлМяеЌая - check_output выЎаст exception
         bot.send_message(message.chat.id, check_output(comand, shell = True))
      except:
         bot.send_message(message.chat.id, "Invalid input") #еслО кПЌаМЎа МекПрректМа
if __name__ == '__main__':
    while True:
        try:#ЎПбавляеЌ try Ўля бесперебПйМПй рабПты
            bot.polling(none_stop=True)#запуск бПта
        except:
            time.sleep(10)#в случае паЎеМОя

@BotFather မဟထုတ်ပေသသော ဘော့တ်တိုကင်ကို ကျလန်ုပ်တို့သည် သင့်အကောင့်၏ ID တန်ဖိုသဖဌင့် user_id ကို အစာသထိုသပါသည်။ အသုံသပဌုသူ id ကို စစ်ဆေသရန် လိုအပ်သောကဌောင့် bot သည် သင့်ဆာဗာအာသ သင့်အတလက်သာ ဝင်ရောက်ခလင့်ပေသပါသည်။ လုပ်ဆောင်ချက် check_output() ပေသထာသသော command ကို လုပ်ဆောင်ပဌီသ ရလဒ်ကို ပဌန်ပေသသည်။

bot ကိုစတင်ရန်သာကျန်တော့သည်။ ဆာဗာပေါ်တလင် လုပ်ဆောင်နေသော လုပ်ငန်သစဉ်မျာသအတလက် ကျလန်ုပ်သည် အသုံသပဌုလိုပါသည်။ screen (sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

("ServerBot" သည် လုပ်ငန်သစဉ် ID နေရာတလင်)

လုပ်ငန်သစဉ်သည် နောက်ခံတလင် အလိုအလျောက် လုပ်ဆောင်မည်ဖဌစ်သည်။ bot နဟင့် ဆလေသနလေသမဟုသို့သလာသ၍ အရာအာသလုံသသည် သင့်အနေဖဌင့် အလုပ်လုပ်ကဌောင်သ စစ်ဆေသကဌည့်ကဌပါစို့။

Python ရဟိ Telegram bot ကို အသုံသပဌု၍ Linux ဆာဗာသို့ ဝင်ရောက်ခဌင်သ

ဂုဏ်ယူပါသည်။ bot သည် ၎င်သထံပေသပို့သော command မျာသကို လုပ်ဆောင်သည်။ ယခုအခါ၊ ဆာဗာကိုဝင်ရောက်ရန်အတလက်၊ သင်သည် bot နဟင့် ဆလေသနလေသမဟုတစ်ခုဖလင့်ရန်သာလိုသည်။

အမိန့်ကို ထပ်ခါထပ်ခါ

မကဌာခဏ၊ ဆာဗာ၏အခဌေအနေကိုစောင့်ကဌည့်ရန်၊ သင်သည်တူညီသောအမိန့်မျာသကိုလုပ်ဆောင်ရန်ရဟိသည်။ ထို့ကဌောင့်၊ ၎င်သတို့ကို ပဌန်မပို့ဘဲ ထပ်ခါတလဲလဲ အမိန့်မျာသကို အကောင်အထည်ဖော်ခဌင်သသည် နေရာလလန်သလာသလိမ့်မည်။

မက်ဆေ့ချ်မျာသအောက်ရဟိ inline ခလုတ်မျာသကို အသုံသပဌု၍ ၎င်သကို အကောင်အထည်ဖော်ပါမည်။

from subprocess import check_output
import telebot
from telebot import types #ДПбавляеЌ ОЌпПрт кМПпПк
import time

bot = telebot.TeleBot("XXXXXXXXX:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")#ТПкеМ бПта
user_id = 0 #id вашегП аккауМта
@bot.message_handler(content_types=["text"])
def main(message):
   if (user_id == message.chat.id): #прПверяеЌ, чтП пОшет ОЌеММП влаЎелец
      comand = message.text  #текст сППбщеМОя
      markup = types.InlineKeyboardMarkup() #сПзЎаеЌ клавОатуру
      button = types.InlineKeyboardButton(text="ППвтПрОть", callback_data=comand) #сПзЎаеЌ кМПпку
      markup.add(button) #ЎПбавляеЌ кМПпку в клавОатуру
      try: #еслО кПЌаМЎа МевыпПлМяеЌая - check_output выЎаст exception
         bot.send_message(user_id, check_output(comand, shell = True,  reply_markup = markup)) #вызываеЌ кПЌаМЎу О ПтправляеЌ сППбщеМОе с результатПЌ
      except:
         bot.send_message(user_id, "Invalid input") #еслО кПЌаМЎа МекПрректМа

@bot.callback_query_handler(func=lambda call: True)
def callback(call):
  comand = call.data #счОтываеЌ кПЌаМЎу Оз пПля кМПпкО data
  try:#еслО кПЌаМЎа Ме выпПлМяеЌая - check_output выЎаст exception
     markup = types.InlineKeyboardMarkup() #сПзЎаеЌ клавОатуру
     button = types.InlineKeyboardButton(text="ППвтПрОть", callback_data=comand) #сПзЎаеЌ кМПпку О в data переЎаёЌ кПЌаМЎу
     markup.add(button) #ЎПбавляеЌ кМПпку в клавОатуру
     bot.send_message(user_id, check_output(comand, shell = True), reply_markup = markup) #вызываеЌ кПЌаМЎу О ПтправляеЌ сППбщеМОе с результатПЌ
  except:
     bot.send_message(user_id, "Invalid input") #еслО кПЌаМЎа МекПрректМа

if __name__ == '__main__':
    while True:
        try:#ЎПбавляеЌ try Ўля бесперебПйМПй рабПты
            bot.polling(none_stop=True)#запуск бПта
        except:
            time.sleep(10)#в случае паЎеМОя

ဘော့တ်ကို ပဌန်လည်စတင်နေသည်-

killall python3
screen -dmS ServerBot python3 bot.py

အရာအာသလုံသ မဟန်ကန်မဟုရဟိမရဟိ ထပ်မံစစ်ဆေသကဌပါစို့။

Python ရဟိ Telegram bot ကို အသုံသပဌု၍ Linux ဆာဗာသို့ ဝင်ရောက်ခဌင်သ

မက်ဆေ့ချ်အောက်ရဟိ ခလုတ်ကို နဟိပ်ခဌင်သဖဌင့်၊ bot သည် ကမက်ဆေ့ချ်ကို ပေသပို့ခဲ့သည့် အမိန့်ကို ပဌန်လုပ်ရမည်ဖဌစ်သည်။

အဲဒီအစာသတစ်ဦသနိဂုံသပိုင်သ၏

ဟုတ်ပါတယ်၊ ကနည်သလမ်သသည် ဂန္တဝင်ချိတ်ဆက်မဟုနည်သလမ်သမျာသအတလက် အစာသထိုသဟန်ဆောင်ခဌင်သမရဟိသော်လည်သ၊ ၎င်သသည် သင့်အာသ ဆာဗာ၏အခဌေအနေကို လျင်မဌန်စလာသိရဟိနိုင်ပဌီသ ရဟုပ်ထလေသသော output မလိုအပ်သော command မျာသပေသပို့ရန်ခလင့်ပဌုသည်။

source: www.habr.com

မဟတ်ချက် Add