Ho fihlella seva sa linux ho sebelisa Telegraph bot ho Python

Hangata ho na le maemo ha phihlello ea seva e hlokahala mona le hona joale. Leha ho le joalo, ho hokahanya ka SSH hase kamehla ho leng bonolo ka ho fetisisa, hobane u ka 'na ua se ke ua ba le mofani oa SSH, aterese ea seva, kapa motsoako oa mosebedisi / password. Ehlile u entse joalo web min, e nolofatsang tsamaiso, empa hape ha e fane ka phihlelo ea hang-hang.

Kahoo ke ile ka etsa qeto ea ho kenya ts'ebetsong tharollo e bonolo empa e thahasellisang. E leng, ho ngola bot ea Telegraph eo, ha e qala ho seva ka boeona, e tla phethahatsa litaelo tse rometsoeng ho eona ebe e khutlisetsa sephetho. Kaha o ithutile tse 'maloa lihlooho tabeng ena, ke ile ka hlokomela hore ha ho motho ea e-s'o hlalose ts'ebetsong e joalo.

Ke kentse ts'ebetso ea morero ona ho Ubuntu 16.04, empa bakeng sa ts'ebetso e se nang mathata liphaellong tse ling, ke lekile ho etsa ntho e 'ngoe le e' ngoe ka mokhoa o akaretsang.

Ngoliso ea bot

Ngolisa bot e ncha le @BotFather. Rea mo romela /newbot le ho feta temeng. Re tla hloka token e ncha ea bot le id ea hau (o ka e fumana, mohlala, ho tloha @userinfobot).

Tokiso ea python

Ho tsamaisa bot, re tla sebelisa laeborari telebot (pip install pytelegrambotapi). Ho Sebelisa Laebrari subprocess re tla phethahatsa litaelo ho seva.

Bot qala

Theha faele ea bot.py ho seva:
nano bot.py

Ebe u kenya khoutu ho eona:

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

Re khutlisa tokene ea bot ho eona ka e fanoeng ke @BotFather, le user_id ka boleng ba id ea ak'haonte ea hau. Ho hlahloba ID ea mosebelisi hoa hlokahala e le hore bot e fane ka phihlello ho seva sa hau ho uena feela. Mosebetsi check_output() e phethahatsa taelo e fanoeng mme e khutlisetsa sephetho.

E sala feela ho qala bot. Bakeng sa lits'ebetso tse sebetsang ho seva, ke khetha ho e sebelisa screen (sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

(moo "ServerBot" e leng ID ea ts'ebetso)

Tshebetso e tla matha ka tsela e iketsang ka morao. Ha re ee moqoqong le bot mme re hlahlobe hore ntho e 'ngoe le e' ngoe e sebetsa kamoo e lokelang:

Ho fihlella seva sa linux ho sebelisa Telegraph bot ho Python

Kea u babatsa! Bot e phethahatsa litaelo tse rometsoeng ho eona. Hona joale, e le hore u fihlele seva, u hloka feela ho bula moqoqo le bot.

Laela ho pheta-pheta

Hangata, ho beha leihlo boemo ba seva, o tlameha ho phethahatsa litaelo tse tšoanang. Ka hona, ts'ebetsong ea ho pheta-pheta litaelo ntle le ho li romela hape e tla be e le ntle haholo.

Re tla e kenya ts'ebetsong ka li-buttons tsa inline tlas'a melaetsa:

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

Ho qala bot hape:

killall python3
screen -dmS ServerBot python3 bot.py

Ha re hlahlobeng hape hore na tsohle li sebetsa hantle:

Ho fihlella seva sa linux ho sebelisa Telegraph bot ho Python

Ka ho tobetsa konopo tlas'a molaetsa, bot e tlameha ho pheta taelo eo molaetsa ona o rometsoeng ho eona.

Ho e-na phetheha

Ha e le hantle, mokhoa ona ha o etse eka o nka sebaka sa mekhoa ea khale ea ho hokahanya, leha ho le joalo, e u lumella ho tseba kapele boemo ba seva le ho romela litaelo ho eona tse sa hlokeng tlhahiso e rarahaneng.

Source: www.habr.com

Eketsa ka tlhaloso