Kuwana kune linux server uchishandisa Telegraph bot muPython

Kazhinji pane mamiriro ezvinhu apo kuwana kune server kunodiwa pano uye ikozvino. Nekudaro, kubatanidza kuburikidza neSSH haisiyo nguva dzose nzira iri nyore, nekuti unogona kunge usina SSH mutengi, server kero kana mushandisi/password musanganiswa iripo. Chokwadi vadaro web min, iyo inorerutsa manejimendi, asi zvakare haipe mukana wekukurumidza.

Saka ndakasarudza kushandisa mhinduro iri nyore asi inofadza. Sezvineiwo, nyora Telegraph bot iyo, kana yatangwa pane server pachayo, ichaita mirairo yakatumirwa kwairi uye kudzosera mhedzisiro. Ndadzidza akawanda nyaya Panyaya iyi, ndakaona kuti hapana ati atsanangura mashandisirwo akadai.

Ndakaita chirongwa ichi paUbuntu 16.04, asi nekuda kwekutangisa-kusununguka pane kumwe kugovera ndakaedza kuita zvese nenzira yakajairika.

Bot kunyoresa

Kunyoresa bot nyowani ne @BotFather. Tinozvitumira kwaari /newbot uyezve muchinyorwa. Tichada chiratidzo cheiyo bot nyowani uye id yako (unogona kuiwana, semuenzaniso, kubva @userinfobot).

Python kugadzirira

Kuvhura bot isu tichashandisa raibhurari telebot (pip install pytelegrambotapi) Kushandisa raibhurari subprocess Isu tichaita mirairo pane server.

Kumhanya bot

Pane sevha tinogadzira bot.py faira:
nano bot.py

Uye isa kodhi mairi:

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

Isu tinotsiva iyo bot tokeni mairi neiyo yakapihwa na @BotFather, uye mushandisi_id ine id kukosha kweakaundi yako. Kuongorora ID yemushandisi kunodiwa kuitira kuti bot ipe mukana kune server yako chete kwauri. Function check_output() inoita iyo yakapfuura command uye inodzosera mhedzisiro.

Chasara kuvhura bot. Kumhanyisa maitiro pane server yandinofarira kushandisa screen (sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

(uko "ServerBot" ndiyo nzira ID)

Maitiro acho anozotanga kuseri. Ngatiendei munhaurirano ne bot uye tarisa kuti zvese zviri kushanda sezvazvinofanira:

Kuwana kune linux server uchishandisa Telegraph bot muPython

Makorokoto! Iyo bot inoita mirairo yakatumirwa kwairi. Zvino, kuti uwane sevha, iwe unongoda kuvhura nhaurirano ne bot.

Kudzokorora mirairo

Kazhinji, kutarisa mamiriro evhavha, unofanirwa kumhanyisa mirairo yakafanana. Nokudaro, kushandiswa kwekudzokorora mirairo pasina kuitumira zvakare kwaizova kwakakodzera zvikuru.

Tichaishandisa tichishandisa inline mabhatani pasi pemashoko:

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

Tangazve bot:

killall python3
screen -dmS ServerBot python3 bot.py

Ngatitarisei zvakare kuti zvese zviri kushanda nemazvo:

Kuwana kune linux server uchishandisa Telegraph bot muPython

Paunodzvanya bhatani riri pasi pemeseji, iyo bot inofanira kudzokorora murairo kubva kune iyo meseji yakatumirwa.

Pane mhedziso

Ehezve, iyi nzira haiite kunge inotsiva yemhando dzekubatanidza nzira, zvisinei, inobvumidza iwe kukurumidza kuziva nezve mamiriro evhavha uye utumire iyo mirairo isingade yakaoma kuburitsa.

Source: www.habr.com

Voeg