Nkag mus rau linux server siv Telegram bot hauv Python

Feem ntau muaj cov xwm txheej thaum nkag mus rau lub server xav tau ntawm no thiab tam sim no. Txawm li cas los xij, kev sib txuas ntawm SSH tsis yog qhov yooj yim tshaj plaws, vim tias koj yuav tsis muaj SSH tus neeg siv khoom, chaw nyob server, lossis tus neeg siv / tus password ua ke ntawm tes. Tau kawg muaj Webmin, uas yooj yim rau kev tswj hwm, tab sis nws kuj tsis muab kev nkag tau sai.

Yog li kuv txiav txim siab los siv cov kev daws teeb meem yooj yim tab sis nthuav. Namely, los sau Telegram bot uas, thaum pib ntawm lub server nws tus kheej, yuav ua tiav cov lus txib xa mus rau nws thiab rov qab cov txiaj ntsig. Muaj kev kawm ntau cov ntawv ntawm lub ncauj lus no, kuv pom tau tias tsis muaj leej twg tau piav qhia txog qhov kev siv ntawd.

Kuv tau siv qhov project no ntawm Ubuntu 16.04, tab sis kom tsis muaj teeb meem khiav ntawm lwm qhov kev faib tawm, kuv tau sim ua txhua yam hauv txoj hauv kev.

Bot npe

Sau npe tus bot tshiab nrog @BotFather. Peb xa nws /newbot thiab ntxiv rau hauv cov ntawv nyeem. Peb yuav xav tau ib tug tshiab bot token thiab koj tus ID (koj tuaj yeem tau txais nws, piv txwv li, los ntawm @userinfobot).

Python kev npaj

Txhawm rau khiav lub bot, peb yuav siv lub tsev qiv ntawv telebot (pip install pytelegrambotapi). Siv lub tsev qiv ntawv subprocess peb yuav ua cov lus txib ntawm lub server.

Bot tso tawm

Tsim cov ntaub ntawv bot.py ntawm lub server:
nano bot.py

Thiab paste lub code rau hauv nws:

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

Peb hloov lub bot token nyob rau hauv nws nrog ib tug muab los ntawm @BotFather, thiab user_id nrog tus nqi id ntawm koj tus account. Kev kuaj xyuas tus neeg siv id yog xav tau kom lub bot muab kev nkag mus rau koj lub server nkaus xwb rau koj. Muaj nuj nqi check_output() executes cov lus txib muab thiab xa cov txiaj ntsig.

Nws tseem tsuas yog pib lub bot. Rau kev khiav cov txheej txheem ntawm lub server, kuv nyiam siv screen (sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

(qhov twg "ServerBot" yog tus txheej txheem ID)

Cov txheej txheem yuav cia li khiav hauv keeb kwm yav dhau. Cia peb mus rau kev sib tham nrog bot thiab xyuas tias txhua yam ua haujlwm raws li nws yuav tsum:

Nkag mus rau linux server siv Telegram bot hauv Python

Nrog koj zoo siab! Lub bot ua haujlwm cov lus txib xa mus rau nws. Tam sim no, nkag mus rau lub server, koj tsuas yog yuav tsum qhib kev sib tham nrog bot.

Hais kom rov ua dua

Feem ntau, txhawm rau saib xyuas lub xeev ntawm lub server, koj yuav tsum ua raws li cov lus txib tib yam. Yog li ntawd, kev ua raws li cov lus txib rov ua dua yam tsis tau xa lawv rov qab yuav tawm ntawm qhov chaw.

Peb yuav siv nws siv cov nyees khawm inline hauv qab cov lus:

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

Restarting lub bot:

killall python3
screen -dmS ServerBot python3 bot.py

Cia peb rov xyuas dua tias txhua yam ua haujlwm raug:

Nkag mus rau linux server siv Telegram bot hauv Python

Los ntawm nias lub pob hauv qab cov lus, bot yuav tsum rov hais dua cov lus txib los ntawm cov lus no tau xa mus.

Es tsis txhob ib tug xaus

Tau kawg, txoj kev no tsis yog ua piv txwv los ua ib qho kev hloov pauv rau txoj kev sib txuas classic, txawm li cas los xij, nws tso cai rau koj kom paub sai sai txog lub xeev ntawm cov neeg rau zaub mov thiab xa cov lus txib rau nws uas tsis tas yuav muaj cov khoom tsim tawm.

Tau qhov twg los: www.hab.com

Ntxiv ib saib