Loaʻa i ka server linux me ka hoʻohana ʻana i Telegram bot ma Python

Loaʻa pinepine nā kūlana i ka wā e pono ai ke komo i ke kikowaena ma aneʻi a i kēia manawa. Eia naʻe, ʻaʻole ʻo ka hoʻopili ʻana ma o SSH ke ala maʻalahi loa, no ka mea, ʻaʻohe āu mea kūʻai aku SSH, ka helu kikowaena, a i ʻole ka hui ʻana o ka mea hoʻohana / ʻōlelo huna. Ua loaʻa Webmin, ka mea maʻalahi i ka hoʻokele, akā ʻaʻole ia e hāʻawi i ke komo koke.

No laila ua hoʻoholo wau e hoʻokō i kahi hopena maʻalahi akā hoihoi. ʻO ia hoʻi, e kākau i kahi bot Telegram, i ka wā i hoʻokuʻu ʻia ma ka kikowaena ponoʻī, e hoʻokō i nā kauoha i hoʻouna ʻia iā ia a hoʻihoʻi i ka hopena. Ua aʻo ʻia nui nāʻatikala ma kēia kumuhana, ua ʻike au ʻaʻohe mea i wehewehe i kēlā mau hoʻokō.

Ua hoʻokō au i kēia papahana ma Ubuntu 16.04, akā no ka holo pilikia ʻole ma nā māhele ʻē aʻe, ua hoʻāʻo wau e hana i nā mea āpau ma ke ʻano maʻamau.

Hoʻopaʻa inoa bot

E hoʻopaʻa inoa i kahi bot hou me @BotFather. Hoʻouna mākou iā ia /newbot a ma ka kikokikona. Pono mākou i kahi hōʻailona bot hou a me kāu id (hiki iā ʻoe ke loaʻa, no ka laʻana, mai @userinfobot).

Hoʻomākaukau Python

No ka holo ʻana i ka bot, e hoʻohana mākou i ka waihona telebot (pip install pytelegrambotapi). Ke hoʻohana nei i ka Hale Waihona Puke subprocess e hoʻokō mākou i nā kauoha ma ke kikowaena.

Hoʻokuʻu ʻia ka bot

E hana i kahi faila bot.py ma ke kikowaena:
nano bot.py

A hoʻopili i ke code i loko:

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

Hoʻololi mākou i ka hōʻailona bot i loko me ka mea i hoʻopuka ʻia e @BotFather, a me user_id me ka waiwai id o kāu moʻokāki. Pono ka nānā ʻana i ka mea hoʻohana i hiki i ka bot ke komo i kāu kikowaena iā ʻoe wale nō. Hana check_output() hoʻokō i ke kauoha i hāʻawi ʻia a hoʻihoʻi i ka hopena.

Ke hoʻomaka wale nei ka bot. No ka holo ʻana i nā kaʻina hana ma ke kikowaena, makemake wau e hoʻohana screen (sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

(kahi "ServerBot" ka ID kaʻina hana)

E holo 'akomi ke kaʻina hana ma ke kua. E hele kāua i ke kamaʻilio me ka bot a nānā i ka hana ʻana o nā mea āpau e like me ka mea e pono ai:

Loaʻa i ka server linux me ka hoʻohana ʻana i Telegram bot ma Python

Hoʻomaikaʻi! Hoʻokō ka bot i nā kauoha i hoʻouna ʻia iā ia. I kēia manawa, i mea e komo ai i ke kikowaena, pono ʻoe e wehe i kahi kūkākūkā me ka bot.

Kauoha hou

I ka manawa pinepine, e nānā i ke kūlana o ka server, pono ʻoe e hoʻokō i nā kauoha like. No laila, ʻaʻole i kūpono ka hoʻokō ʻana i nā kauoha me ka hoʻouna ʻole ʻana iā lākou.

E hoʻokō mākou me nā pihi inline ma lalo o nā memo:

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ʻomaka hou i ka bot:

killall python3
screen -dmS ServerBot python3 bot.py

E nānā hou kākou ua holo pono nā mea a pau:

Loaʻa i ka server linux me ka hoʻohana ʻana i Telegram bot ma Python

Ma ke kaomi ʻana i ke pihi ma lalo o ka memo, pono e hana hou ka bot i ke kauoha i hoʻouna ʻia ai kēia leka.

Ma kahi o ka hopena

ʻOiaʻiʻo, ʻaʻole kēia ʻano hana e hoʻololi i nā ʻano pili pili maʻamau, akā naʻe, hiki iā ʻoe ke ʻike wikiwiki e pili ana i ke kūlana o ka server a hoʻouna i nā kauoha iā ia ʻaʻole koi i ka hoʻopuka paʻakikī.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka