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
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
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
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:
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:
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