ααΆααΉαααΆααααΆαααααΆαααΆααα
ααααααααΆαα
αΌαααααΎαααΆαααΈαααααΊα
αΆαααΆα
ααα
ααΈααα αα·αα₯α‘αΌααααα αααααΆαααΆαααΆααααα ααΆαααααΆααααΆαααα SSH αα·αααααααααααΆαααααααΆαααΆααααα½ααααα»αααααα αααααα’ααααααα ααααΆαα·αααΆααααΆαααΈαααααα SSH α’αΆααααααΆααααΆαααΈααα α¬ααΆααα½ααααα
αΌαααααΆαααΆαα’αααααααΎααααΆαα/ααΆααααααααΆαααα
αααα»ααααααααα ααΆααΆααα·αααΆααααΆα
ααΌα
αααααααα»αααΆααααααα
α
α·αααα’αα»αααααααααααααΆαααααΆαααα ααα»αααααα½αα±ααα
αΆααα’αΆααααααα ααΆααααααΆ ααΎααααΈααααα Telegram bot ααααα
αααααΎαααααΎαααΆααα
ααΎ server αααα½αααΆααΉαααααα·ααααα·ααΆααααααααΆαααααΆαααααΎαα
ααΆ α αΎααααα‘αααααααααα·αα αααααΆααα·ααααΆ
αααα»αααΆαα’αα»ααααααααααααααα ααΎα’ααΌααα»αααΌ 16.04 ααα»αααααααααΆααααΆαααααΎαααΆααααααααΆααααα αΆααΎααΆαα ααα αΆααααααααα αααα»αααΆαααααΆααΆααααααΎαα’αααΈαααααααααΆαααΆαααααααΌαα α
ααΆαα α»ααααααααΌα
α
α»αααααα bot ααααΈααΆαα½α @BotFather α ααΎααααααΌαααΆαα /newbot
αα·αααααααααααα
αααα»αα’αααααα ααΎαααΉαααααΌαααΆααα·αα·ααααααααΆααΌαααααααααΈ αα·αααααααααΆααααααα’ααα (α§ααΆα ααα α’αααα’αΆα
ααα½αααΆαααΆααΈ
ααΆααααα α Python
ααΎααααΈααααΎαααΆα bot ααΎαααΉαααααΎαααααΆααα telebot
(pip install pytelegrambotapi
) ααΆαααααΎααααΆαααααααΆααα subprocess
ααΎαααΉαααααα·ααααα·ααΆααααααααΆαα
ααΎαααΆαααΈαααα
ααΆαααΎαααααΎαααΆαααΌα
αααααΎαα―αααΆα bot.py αα
ααΎαααΆαααΈαααα
nano bot.py
α αΎααα·αααααΆααααΌααα αααα»αααΆα
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)#Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ
ααΎααααα½α bot token αα
αααα»αααΆααΆαα½αααΉαα’αααΈαααα
ααααα @BotFather α αΎα user_id ααΆαα½αααΉαααααα id ααααααΈααααα’αααα ααΆααα·αα·αααααΎαααααααααΆααα’αααααααΎααααΆααααΊα
αΆαααΆα
αααΎααααΈα±αα bot αααααααΌαααΆαα
αΌαααααΎαααΆαααΈαααααααα’ααααααααΆααααα’αααααα»αααααα αα»αααΆα check_output()
ααααα·ααααα·ααΆααααααααΆαααααΆααααααα±ααα αΎααααα‘ααααααααα
ααΆαα
αααααααΎααααΈα
αΆααααααΎα bot ααα»αααααα αααααΆααααααΎαααΆαααααΎαααΆααα
ααΎαααΆαααΈααα αααα»αα
αΌαα
α·αααααααΎ screen
(sudo apt-get install screen
):
screen -dmS ServerBot python3 bot.py
(ααα "ServerBot" ααΊααΆααααααααΆααααααΎαααΆα)
ααααΎαααΆαααΉαααααΎαααΆααααααααααααααααα·αααα»αααααααΆααααααα ααααα ααΆαααααααΆααΆαα½α bot α αΎααα·αα·αααααΎαααΆα’αααΈαααααΎαααΆαααΌα αααααΆαα½αααα
α’αα’αααΆαα! bot ααααα·ααααα·ααΆααααααααΆαααααΆαααααΎαα
ααΆα α₯α‘αΌαααα ααΎααααΈα
αΌαααααΎαααΆαααΈααα α’αααααααΆααααααααΌαααΆαααΎαααΆαααααααΆααΆαα½α bot ααα»αααααα
ααΆααααααααΆααΆαααααααα
ααΆααΉαααΆαα ααΎααααΈααΆαααΆαααααΆαααΆααααααααΆαααΈααα α’αααααααΌαααααααα·ααααα·ααΆααααααααΆααΌα ααααΆα ααΌα αααα ααΆαβα’αα»ααααβααΆαααβαααααΆβαααααβαααβαα·αβααΆαβαααααΌαβααΆβα‘αΎαβαα·αβααΉαβααΆαβααΆαβαα»αβααααααααΈβααααΆααβααΆααα
ααΎαααΉαα’αα»ααααααΆαααααααΎαααΌαα»ααααα»ααααααΆαααααααααΆαα
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)#Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ
α αΆααααααΎαααΌαα‘αΎααα·αα
killall python3
screen -dmS ServerBot python3 bot.py
ααΌααα·αα·αααααΎααααααααααΆα’αααΈαααααΎαααΆαααΆαααααΉαααααΌαα
αααα
α»α
αααΌαα»ααα
αααααααΆα bot ααααΌαααααααΎαααααααααΌαααΆααααααααΆαααααΆααααααααΌαααΆαααααΎα
αααα½αα±ααααΆαααααα·ααααΆααα½α
ααΆααΆααα·αααΆαα αα·ααΈααΆαααααααααα·αααααΎαα»αααΆαααα½ααα·ααΈααΆααααααααααΆααααααα»ααΆαααααα αααααΆαααΆαααΆααααα ααΆα’αα»ααααΆαα±ααα’αααααααααααααΆααα ααα’αααΈααααΆαααΆααααααααΆαααΈααα α αΎαααααΎααΆααααααααΆαα ααΆααααα·αααααΌαααΆααααααααααα»αααααΆαα
ααααα: www.habr.com