Nweta sava Linux site na iji Telegram bot na Python

Ọtụtụ mgbe, a na-enwe ọnọdụ mgbe ịnweta ihe nkesa dị ebe a na ugbu a. Otú ọ dị, ijikọ site na SSH abụghị mgbe niile ka usoro kachasị adaba, n'ihi na ị nwere ike ị gaghị enwe onye ahịa SSH, adreesị ihe nkesa ma ọ bụ njirimara / okwuntughe n'aka. N'ezie nwere Webmin, nke na-eme ka nchịkwa dị mfe, mana ọ naghị enye ohere ozugbo.

N'ihi ya, m kpebiri mejuputa a mfe ma na-akpali ngwọta. Ya bụ, dee a Telegram bot na, mgbe a malitere na sava n'onwe ya, ga-emezu iwu ezigara ya wee weghachi nsonaazụ ya. N'ịbụ onye gụrụ akwụkwọ ọtụtụ isiokwu N'okwu a, achọpụtara m na ọ dịghị onye akọwapụtabeghị mmejuputa dị otú ahụ.

Emere m ọrụ a na Ubuntu 16.04, mana maka mmalite enweghị nsogbu na nkesa ndị ọzọ, agbalịrị m ime ihe niile n'ụzọ zuru oke.

Ndebanye aha bot

Iji @BotFather na-edebanye bot ọhụrụ. Anyị na-ezitere ya ya /newbot na n'ihu na ederede. Anyị ga-achọ akara maka bot ọhụrụ na id gị (ị nwere ike nweta ya, ọmụmaatụ, site na @userinfobot).

Nkwadebe Python

Iji malite bot anyị ga-eji ọbá akwụkwọ telebot (pip install pytelegrambotapi). Iji ụlọ akwụkwọ subprocess Anyị ga-eme iwu na sava ahụ.

Na-agba ọsọ bot

Na sava anyị na-emepụta faịlụ bot.py:
nano bot.py

Ma tinye koodu n'ime ya:

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

Anyị dochie akara bot dị na ya nke @BotFather nyere, yana user_id nwere uru id nke akaụntụ gị. Ịkwado ID onye ọrụ dị mkpa ka bot na-enye naanị gị ohere ịnweta ihe nkesa gị. Ọrụ check_output() na-eme iwu gafere wee weghachi nsonaazụ ya.

Naanị ihe fọdụrụ bụ ịmalite bot. Iji mee usoro na ihe nkesa na-amasị m iji screen (sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

(ebe "ServerBot" bụ NJ usoro)

Usoro ga-amalite na-akpaghị aka na ndabere. Ka anyị banye na mkparịta ụka bot wee lelee na ihe niile na-arụ ọrụ dịka o kwesịrị:

Nweta sava Linux site na iji Telegram bot na Python

Ekele! Bot ahụ na-emezu iwu ezigara ya. Ugbu a, iji nweta ihe nkesa, naanị ị ga-emepe mkparịta ụka na bot.

Na-ekwughachi iwu

Ọtụtụ mgbe, iji nyochaa ọnọdụ nke ihe nkesa, ị ga-agba ọsọ otu iwu. Ya mere, mmejuputa iwu ugboro ugboro na-enweghị izipu ha ọzọ ga-adabara nke ọma.

Anyị ga-eme ya site na iji bọtịnụ inline n'okpuru ozi:

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

Malitegharịa bot:

killall python3
screen -dmS ServerBot python3 bot.py

Ka anyị lelee ọzọ na ihe niile na-arụ ọrụ nke ọma:

Nweta sava Linux site na iji Telegram bot na Python

Mgbe ị pịrị bọtịnụ n'okpuru ozi ahụ, bot ga-emerịrị iwu nke ezitere ozi ahụ.

Kama nkwubi okwu

N'ezie, usoro a anaghị eme ka ọ bụrụ onye na-anọchi anya ụzọ njikọ oge ochie, Otú ọ dị, ọ na-enye gị ohere ịchọta ngwa ngwa banyere ọnọdụ nke ihe nkesa ahụ ma zipụ ya iwu na-adịghị achọ mmepụta mgbagwoju anya.

isi: www.habr.com

Tinye a comment