Kufikira kwa seva ya linux pogwiritsa ntchito Telegraph bot ku Python

Nthawi zambiri pamakhala zochitika pomwe kupeza seva kumafunika pano komanso pano. Komabe, kulumikiza kudzera pa SSH si nthawi zonse njira yabwino kwambiri, chifukwa mwina mulibe kasitomala wa SSH, adilesi ya seva kapena kuphatikiza kwa ogwiritsa / mawu achinsinsi. Zoonadi Webmin, zomwe zimathandizira kasamalidwe, koma sizimapereka mwayi wopezeka pompopompo.

Choncho ndinaganiza zogwiritsa ntchito njira yosavuta koma yosangalatsa. Mwakutero, lembani boti ya Telegraph yomwe, ikakhazikitsidwa pa seva yokha, ipereka malamulo otumizidwa kwa iyo ndikubweza zotsatira zake. Ataphunzira angapo zolemba pamutuwu, ndidazindikira kuti palibe amene adafotokozapo izi.

Ndinakhazikitsa pulojekitiyi pa Ubuntu 16.04, koma kuti ndiyambitse popanda zovuta pazogawa zina ndidayesa kuchita chilichonse mwanjira wamba.

Kulembetsa kwa bot

Kulembetsa bot yatsopano ndi @BotFather. Timatumiza kwa iye /newbot ndi kupitilira mulemba. Tidzafunika chizindikiro cha bot yatsopano ndi id yanu (mutha kuipeza, mwachitsanzo, kuchokera @userinfobot).

Kukonzekera kwa Python

Kuti tiyambitse bot tidzagwiritsa ntchito laibulale telebot (pip install pytelegrambotapi). Kugwiritsa ntchito laibulale subprocess Tidzachita malamulo pa seva.

Kuyendetsa bot

Pa seva timapanga fayilo ya bot.py:
nano bot.py

Ndipo ikani code mmenemo:

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

Timalowetsa chizindikiro cha bot mmenemo ndi chomwe chinaperekedwa ndi @BotFather, ndi user_id ndi mtengo wa id wa akaunti yanu. Kutsimikizira ID ya wogwiritsa ntchito ndikofunikira kuti bot ipereke mwayi wopeza seva yanu kwa inu nokha. Ntchito check_output() imagwira ntchito yodutsa ndikubwezeretsa zotsatira.

Zomwe zatsala ndikuyambitsa bot. Kuti mugwiritse ntchito ma seva omwe ndimakonda kugwiritsa ntchito screen (sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

(komwe "ServerBot" ndi ID ya ndondomeko)

Njirayi imangoyambira kumbuyo. Tiyeni tikambirane ndi bot ndikuwona kuti zonse zikuyenda momwe ziyenera kukhalira:

Kufikira kwa seva ya linux pogwiritsa ntchito Telegraph bot ku Python

Zabwino zonse! Bot imapanga malamulo omwe amatumizidwa kwa iwo. Tsopano, kuti mupeze seva, muyenera kungotsegula zokambirana ndi bot.

Kubwereza malamulo

Nthawi zambiri, kuti muwone momwe seva ilili, muyenera kuyendetsa malamulo omwewo. Choncho, kukhazikitsidwa kwa malamulo obwerezabwereza popanda kuwatumizanso kungakhale koyenera kwambiri.

Tidzagwiritsa ntchito mabatani apaintaneti pansi pa mauthenga:

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

Yambitsaninso bot:

killall python3
screen -dmS ServerBot python3 bot.py

Tiyeni tiwonenso kuti zonse zikuyenda bwino:

Kufikira kwa seva ya linux pogwiritsa ntchito Telegraph bot ku Python

Mukadina batani pansi pa uthengawo, bot iyenera kubwereza lamulo lomwe uthengawo udatumizidwa.

M'malo mapeto

Zoonadi, njirayi sichidziyesa kukhala m'malo mwa njira zamakono zogwirizanitsa, komabe, zimakulolani kuti mudziwe mwamsanga za momwe seva imakhalira ndikuitumiza malamulo omwe safuna kutulutsa zovuta.

Source: www.habr.com

Kuwonjezera ndemanga