Fidirana amin'ny mpizara linux mampiasa Telegram bot amin'ny Python

Matetika dia misy toe-javatra izay ilaina ny fidirana amin'ny mpizara eto sy ankehitriny. Na izany aza, ny fifandraisana amin'ny alΓ lan'ny SSH dia tsy fomba mora indrindra, satria mety tsy manana mpanjifa SSH, adiresy mpizara, na fitambaran'ny mpampiasa / tenimiafina ianao. Mazava ho azy fa manana Webmin, izay manamora ny fitantanana, nefa tsy manome fidirana eo noho eo ihany koa.

Noho izany dia nanapa-kevitra ny hampihatra vahaolana tsotra nefa mahaliana aho. Izany hoe, hanoratra bot Telegram izay, rehefa natomboka tao amin'ny server mihitsy, dia hanatanteraka ny baiko alefa aminy ary hamerina ny valiny. Rehefa nianatra maro lahatsoratra amin'ity lohahevitra ity dia tsapako fa tsy mbola nisy nilaza ny fampiharana toy izany.

Nanatanteraka ity tetikasa ity tao amin'ny Ubuntu 16.04 aho, fa ho an'ny fampandehanana tsy misy olana amin'ny fizarana hafa dia nanandrana nanao ny zava-drehetra tamin'ny fomba ankapobeny aho.

fisoratana anarana bot

Manorata bot vaovao miaraka amin'i @BotFather. Irahinay izy /newbot ary bebe kokoa amin'ny lahatsoratra. Mila marika bot vaovao sy id-nao izahay (azonao atao izany, ohatra, avy amin'ny @userinfobot).

Fiomanana Python

Mba hampandehanana ny bot dia hampiasa ny tranomboky izahay telebot (pip install pytelegrambotapi). Mampiasa ny Tranomboky subprocess hanatanteraka baiko amin'ny mpizara izahay.

Famoahana bot

Mamorona rakitra bot.py amin'ny mpizara:
nano bot.py

Ary apetaho ao ny code:

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)#Π² случаС падСния

Soloinay ilay mari-pamantarana bot ao amin'ilay navoakan'i @BotFather, ary ny user_id amin'ny sandan'ny kaontinao. Ilaina ny manamarina ny id mpampiasa mba hanomezana fidirana amin'ny mpizara anao irery ihany ny bot. asa check_output() manatanteraka ny baiko nomena ary mamerina ny vokatra.

Ny fanombohana ny bot ihany no sisa. Ho an'ny fampandehanana dingana amin'ny mpizara dia aleoko mampiasa screen (sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

(izay misy ny "ServerBot" ny ID process)

Ny dingana dia mandeha ho azy ao ambadika. Andao handeha amin'ny fifanakalozan-kevitra miaraka amin'ny bot ary jereo fa mandeha araka ny tokony ho izy ny zava-drehetra:

Fidirana amin'ny mpizara linux mampiasa Telegram bot amin'ny Python

Arahabaina! Ny bot dia manatanteraka ny baiko alefa aminy. Ankehitriny, raha te hiditra amin'ny mpizara dia mila manokatra fifanakalozan-kevitra miaraka amin'ny bot ianao.

Famerimberenana baiko

Matetika, mba hanaraha-maso ny toetry ny mpizara dia tsy maintsy manatanteraka ny baiko mitovy. Noho izany, ny fampiharana ny famerimberenana baiko nefa tsy mandefa azy ireo dia ho tena tsy amin'ny toerany.

Hampihatra izany amin'ny alalan'ny bokotra inline eo ambanin'ny hafatra izahay:

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)#Π² случаС падСния

Mamerina ny bot:

killall python3
screen -dmS ServerBot python3 bot.py

Andeha hojerentsika indray fa mandeha tsara ny zava-drehetra:

Fidirana amin'ny mpizara linux mampiasa Telegram bot amin'ny Python

Amin'ny fanindriana ny bokotra eo ambanin'ny hafatra, ny bot dia tsy maintsy mamerina ny baiko nandefasana ity hafatra ity.

Raha tokony ny famaranana

Mazava ho azy, ity fomba ity dia tsy mody ho fanoloana ny fomba fifandraisana mahazatra, na izany aza, mamela anao hahafantatra haingana ny toetry ny mpizara ary mandefa baiko aminy izay tsy mitaky vokatra sarotra.

Source: www.habr.com

Add a comment