Avanoa i le linux server e faʻaaoga ai le Telegram bot i le Python

E masani lava e iai tulaga e manaʻomia ai le avanoa i le 'auʻaunaga iinei ma le taimi nei. Ae ui i lea, o le fesoʻotaʻi e ala i le SSH e le o taimi uma e sili ona faigofie, aua atonu e leai sau SSH client, tuatusi server, poʻo le faʻaoga faʻaoga / upu faʻapipiʻi i lima. Ioe ua i ai 'Upega tafaʻilagi, lea e faafaigofie ai le pulega, ae e le maua ai foi se avanoa vave.

O lea na ou filifili ai e faatino se fofo faigofie ae manaia. O lona uiga, ia tusia se Telegram bot lea, pe a faʻalauiloa i luga o le server lava ia, o le a faʻatinoina poloaiga na lafoina i ai ma toe faʻafoʻi le iʻuga. Ua uma ona su'esu'e tele tusiga i luga o lenei autu, na ou iloa ai e leʻi faʻamatalaina e se tasi ia faʻatinoga.

Na ou faʻatinoina lenei poloketi ile Ubuntu 16.04, ae mo se faʻalavelave e leai se faʻalavelave i luga o isi tufatufaga, na ou taumafai e faia mea uma i se auala lautele.

Faamauina o bot

Resitala se bot fou ma @BotFather. Matou te auina atu o ia /newbot ma isi i le tusitusiga. Matou te manaʻomia se faʻailoga bot fou ma lau id (e mafai ona e mauaina, mo se faʻataʻitaʻiga, mai @userinfobot).

Sauniuniga Python

Ina ia faʻatautaia le bot, matou te faʻaogaina le faletusi telebot (pip install pytelegrambotapi). Fa'aaogāina o le faletusi subprocess o le a matou faia poloaiga i luga o le server.

Fa'aliga bot

Fausia se faila bot.py i le server:
nano bot.py

Ma faapipii le code i totonu:

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

Matou te suia le faʻailoga bot i totonu ma le mea na tuʻuina atu e @BotFather, ma le user_id ma le id tau o lau teugatupe. E mana'omia le siakiina o le ID fa'aoga ina ia maua ai e le bot le avanoa i lau 'au'aunaga na'o oe. Galuega check_output() fa'atino le fa'atonuga ma toe fa'afo'i le taunu'uga.

E na'o le amataina o le bot. Mo le faʻatinoina o faiga i luga o le 'auʻaunaga, ou te manaʻo e faʻaoga screen (sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

(lea o le "ServerBot" o le ID o le faagasologa)

O le a otometi lava ona alu le faagasologa i tua. Sei o tatou o i le talanoaga ma le bot ma siaki o mea uma e aoga e pei ona tatau ai:

Avanoa i le linux server e faʻaaoga ai le Telegram bot i le Python

Fa'afetai! O le bot e faʻatino poloaiga na lafoina i ai. I le taimi nei, ina ia maua le 'auʻaunaga, e tatau ona e tatalaina se talanoaga ma le bot.

Faatonu le toe fai

E masani lava, ina ia mataʻituina le tulaga o le 'auʻaunaga, e tatau ona e faʻatinoina ia lava poloaiga. O le mea lea, o le faʻatinoina o le toe faia o faʻatonuga e aunoa ma le toe tuʻuina atu o le a matua le talafeagai.

O le a matou faʻatinoina i le faʻaogaina o faʻamau i lalo o feʻau:

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

Toe amata le bot:

killall python3
screen -dmS ServerBot python3 bot.py

Sei o tatou toe siaki pe sa'o lelei mea uma:

Avanoa i le linux server e faʻaaoga ai le Telegram bot i le Python

E ala i le oomiina o le ki i lalo o le savali, e tatau i le bot ona toe fai le poloaiga na auina mai ai lenei feʻau.

Nai lo o se faaiuga

O le mea moni, o lenei metotia e le fa'afoliga e suitulaga i auala masani o feso'ota'iga, peita'i, e mafai ai ona e vave su'esu'e i le tulaga o le 'au'aunaga ma tu'uina atu fa'atonuga e le mana'omia ai galuega fa'alavelave.

puna: www.habr.com

Faaopoopo i ai se faamatalaga