Cothrom air frithealaiche linux a’ cleachdadh Telegram bot ann am Python

Gu math tric bidh suidheachaidhean ann nuair a tha feum air cothrom air an fhrithealaiche an seo agus an-dràsta. Ach, chan e ceangal tro SSH an-còmhnaidh an dòigh as freagarraiche, oir is dòcha nach eil teachdaiche SSH, seòladh frithealaiche, no measgachadh cleachdaiche / facal-faire agad ri làimh. Gu dearbh tha Lìn eile, a tha a’ sìmpleachadh rianachd, ach chan eil e cuideachd a’ toirt seachad ruigsinneachd sa bhad.

Mar sin cho-dhùin mi fuasgladh sìmplidh ach inntinneach a chuir an gnìomh. Is e sin, bot Telegram a sgrìobhadh a chuireas, nuair a thèid a chuir air bhog air an fhrithealaiche fhèin, na h-òrdughan a chaidh a chuir thuige agus a thilleas an toradh. An dèidh sgrùdadh grunnan artaigilean air a’ chuspair seo, thuig mi nach eil duine air cunntas a thoirt air buileachadh mar sin.

Chuir mi am pròiseact seo an gnìomh air Ubuntu 16.04, ach airson ruith gun trioblaid air sgaoilidhean eile, dh’ fheuch mi ris a h-uile càil a dhèanamh ann an dòigh choitcheann.

Clàradh bot

Clàraich bot ùr le @BotFather. Bidh sinn ga chuir /newbot agus nas fhaide air adhart anns an teacsa. Bidh feum againn air tòcan bot ùr agus an id agad (gheibh thu e, mar eisimpleir, bho @userinfobot).

Ag ullachadh python

Gus am bot a ruith, cleachdaidh sinn an leabharlann telebot (pip install pytelegrambotapi). A ' cleachdadh an leabharlainn subprocess cuiridh sinn an gnìomh àitheantan air an fhrithealaiche.

Cur air bhog bot

Cruthaich faidhle bot.py air an fhrithealaiche:
nano bot.py

Agus cuir a-steach an còd ann:

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

Bidh sinn a’ dol an àite an tòcan bot a th’ ann leis an fhear a chuir @BotFather a-mach, agus user_id le luach id a’ chunntais agad. Tha feum air sgrùdadh a dhèanamh air id an neach-cleachdaidh gus am bi am bot a’ toirt cothrom don t-seirbheisiche agad a-mhàin dhutsa. Gnìomh check_output() cuir an gnìomh an àithne a chaidh a thoirt seachad agus tillidh e an toradh.

Chan eil air fhàgail ach airson am bot a thòiseachadh. Airson pròiseasan ruith air an fhrithealaiche, is fheàrr leam a chleachdadh screen (sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

(far a bheil “ServerBot” na ID pròiseas)

Bidh am pròiseas a 'ruith gu fèin-obrachail air a' chùl. Rachamaid chun a 'chòmhraidh leis a' bot agus dèan cinnteach gu bheil a h-uile càil ag obair mar a bu chòir:

Cothrom air frithealaiche linux a’ cleachdadh Telegram bot ann am Python

Mealaibh ur naidheachd! Bidh am bot a' cur an gnìomh nan òrduighean a chaidh a chur thuige. A-nis, gus faighinn chun t-seirbheisiche, cha leig thu leas ach còmhradh fhosgladh leis a’ bot.

Ath-aithris àithne

Gu tric, gus sùil a chumail air staid an fhrithealaiche, feumaidh tu na h-aon òrdughan a chuir an gnìomh. Mar sin, bidh buileachadh òrdughan ath-aithris gun a bhith gan ath-shuidheachadh gu math a-mach à àite.

Cuiridh sinn an gnìomh e le putanan in-loidhne fo na teachdaireachdan:

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

Ag ath-thòiseachadh am bot:

killall python3
screen -dmS ServerBot python3 bot.py

Feuch an dèan sinn cinnteach a-rithist gu bheil a h-uile dad ag obair ceart:

Cothrom air frithealaiche linux a’ cleachdadh Telegram bot ann am Python

Le putadh air a’ phutan fon teachdaireachd, feumaidh am bot an àithne às an deach am brath seo a chuir a-rithist.

An àite a bhith co-dhùnadh

Gu dearbh, chan eil an dòigh seo a 'leigeil a-mach gu bheil e na àite nan dòighean ceangail clasaigeach, ge-tà, leigidh e leat faighinn a-mach gu luath mu staid an fhrithealaiche agus cuiridh e òrdughan thuige nach eil feumach air toradh iom-fhillte.

Source: www.habr.com

Cuir beachd ann