Te uru ki te tūmau linux ma te whakamahi i te Telegram bot i Python

He maha tonu nga waahi ka hiahiatia te uru ki te tūmau i konei me inaianei. Heoi, ko te hono ma te SSH ehara i te huarahi tino watea, na te mea kaore pea he kaihoko SSH, he wahitau tūmau, he huinga kaiwhakamahi/kupuhipa ranei kei a koe. O te akoranga kua Paetukutuku, e whakangwari ana i te whakahaere, engari kaore ano i te tuku urunga tere.

Na ka whakatau ahau ki te whakatinana i tetahi otinga ngawari engari whakamere. Ara, ki te tuhi i te karetao Telegram, ka whakarewahia i runga i te kaimau tonu, ka mahia nga whakahau i tukuna atu ki a ia ka whakahokia mai te hua. Kua ako maha Tuhinga i runga i tenei kaupapa, i mohio ahau kaore ano tetahi i korero mo enei whakatinanatanga.

I whakatinanahia e ahau tenei kaupapa i runga i te Ubuntu 16.04, engari mo te whakahaere kore raruraru i runga i etahi atu tohatoha, ka ngana ahau ki te hanga i nga mea katoa i roto i te huarahi whanui.

Te rehitatanga bot

Rēhita he karetao hou me @BotFather. Ka tukuna ia e matou /newbot me etahi atu i roto i te tuhinga. Ka hiahia matou he tohu karetao hou me to id (ka taea e koe te tiki, hei tauira, mai i @userinfobot).

Te whakarite Python

Hei whakahaere i te bot, ka whakamahia e matou te whare pukapuka telebot (pip install pytelegrambotapi). Te whakamahi i te whare pukapuka subprocess ka mahia e matou nga whakahau i runga i te tūmau.

Whakarewa bot

Waihangahia he kōnae bot.py i runga i te tūmau:
nano bot.py

Ka whakapiri i te waehere ki roto:

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

Ka whakakapihia e matou te tohu karetao ki roto me te mea i tukuna e @BotFather, me te user_id me te uara id o to putea. Ko te tirotiro i te id kaiwhakamahi e hiahiatia ana kia taea ai e te karetao te uru ki to tuumau ki a koe anake. Mahi check_output() ka mahia te whakahau i homai, ka whakahoki i te hua.

Ka noho tonu ki te tiimata i te karetao. Mo nga tukanga whakahaere i runga i te tūmau, he pai ake ahau ki te whakamahi screen (sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

(kei hea "ServerBot" te ID tukanga)

Ka rere aunoa te tukanga i te papamuri. Me haere ki te korerorero me te karetao me te tirotiro kei te mahi nga mea katoa:

Te uru ki te tūmau linux ma te whakamahi i te Telegram bot i Python

Kia ora! Ka mahia e te bot nga whakahau i tukuna ki a ia. Inaianei, kia uru atu koe ki te tūmau, me whakatuwhera noa koe i tetahi korero me te karetao.

Whakahaua te tukurua

I te nuinga o nga wa, ki te aroturuki i te ahua o te tūmau, me whakahaere e koe nga whakahau ano. Na reira, ko te whakatinanatanga o nga whakahau tukurua me te kore e tukuna ano ka tino kore.

Ka whakatinanahia e matou ma te whakamahi i nga paatene roraina i raro i nga karere:

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

Ka timata ano te bot:

killall python3
screen -dmS ServerBot python3 bot.py

Me titiro ano kei te mahi tika nga mea katoa:

Te uru ki te tūmau linux ma te whakamahi i te Telegram bot i Python

Ma te pehi i te paatene i raro i te karere, me whakahoki ano e te karetao te whakahau i tukuna mai ai tenei karere.

Engari o te mutunga

Ko te tikanga, kaore tenei tikanga e kii hei whakakapi mo nga tikanga honohono matarohia, engari, ka taea e koe te rapu tere mo te ahuatanga o te tūmau me te tuku whakahau ki a ia kaore e hiahiatia he putanga uaua.

Source: will.com

Tāpiri i te kōrero