Есть некий огромный код
from defs import *
import os
import telebot
from telebot import types
from telebot import apihelper
import sys
import pyAesCrypt
import wget
from telebot.apihelper import ApiException
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton
import pyperclip
from admin_control import *
proxy = {'https':'https://типо прокси'}
apihelper.proxy = proxy
mongo_connect = "типо конект к монго"
mode = '1'
admins = []
main_driver_status='0'
api_token = 'типо апи ключ телеги'
ROOT_DIR = os.path.dirname(os.path.abspath(__file__))+'/'
bot = telebot.TeleBot(api_token)
def downloit (url, path_filename):
global proxy
url_get = requests.get(url,proxies=proxy)
with open(path_filename, 'wb') as f:
f.write(url_get.content)
def rand(n):
p=''
sand = ['1','2','3','4','5','6','7','8','9','0','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
for i in range(0,n):
az = random.choice(sand)
p+=az
return p
admins=admin_refresh(mongo_connect)
print('yes')
@bot.message_handler(content_types=['photo'])
def get_photo_down(message):
global ROOT_DIR, api_token
az1=message.photo[len(message.photo)-1].file_id
az = bot.get_file(az1).file_path
aqe=rand(5)
url = 'https://api.telegram.org/file/bot'+api_token+'/'+az
path = ROOT_DIR+'results/'+aqe+'.jpg'
downloit(url, path)
bot.reply_to(message,f'{aqe}.jpg успешно скачен')
@bot.message_handler(content_types=['video'])
def get_video_down(message):
try:
global ROOT_DIR, api_token
aqe=rand(5)
bot.send_message(message.chat.id, f'начинаю загрузку {aqe}.mp4')
az=bot.get_file(message.video.file_id).file_path
url = 'https://api.telegram.org/file/bot'+api_token+'/'+az
path = ROOT_DIR+'results/'+aqe+'.mp4'
downloit(url, path)
bot.reply_to(message,f'{aqe}.mp4 успешно скачен')
except ApiException:
bot.reply_to(message,'файл слишком большой')
@bot.message_handler(commands=['kill_explorer','explorer_kill'])
def Kill_explorer(message):
global ROOT_DIR
bot.send_message(message.chat.id,'Выполняю')
os.system(ROOT_DIR+'kill_explorer.bat')
@bot.message_handler(commands=['admins'])
def admins1(message):
global admins
if len(admins) == 0:
bot.send_message(message.chat.id,'На данный момент никто не админ')
else:
bot.send_message(message.chat.id,'Привелегию админа имеют:')
for adm in admins:
bot.send_message(message.chat.id,f'{adm}')
@bot.message_handler(commands=['admins_refresh'])
def refresh_admins(message):
global admins, mongo_connect
if message.from_user.username in admins:
bot.send_message(message.chat.id,'Начинаю')
admins=admin_refresh(mongo_connect)
bot.send_message(message.chat.id,'END')
else:
bot.reply_to(message, 'У вас нет прав использовать это')
@bot.message_handler(commands=['admin_add'])
def add_admin_to_bot(message):
if message.from_user.username == 'sadxsadx':
bot.send_message(message.chat.id,'Укажите username человека без @')
bot.register_next_step_handler(message,dobavleniye)
else:
bot.reply_to(message,'у вас нет прв на выполнение этой комманды')
def dobavleniye(message):
if message.text == '/exit':
return
global mongo_connect
a13=admin_add(mongo_connect,message.text)
userme = message.text
if a13==1:
bot.send_message(message.chat.id,"успешно")
else:
bot.send_message(message.chat.id,f'{userme} уже добавлен')
@bot.message_handler(commands=['admin_remove'])
def remove_admin_to_bot(message):
if message.from_user.username == 'sadxsadx':
bot.send_message(message.chat.id,'Укажите username человека без @')
bot.register_next_step_handler(message,removing)
else:
bot.reply_to(message,'у вас нет прав на выполнение этой команды')
def removing(message):
if message.text == '/exit':
return
global mongo_connect
a13=admin_remove(mongo_connect,message.text)
userme = message.text
bot.send_message(message.chat.id,"успешно")
@bot.message_handler(commands=['status'])
def status_pic(message):
bot.send_sticker(message.chat.id,'CAADAgADzcsAAmOLRgwk6mdSdiGvSRYE')
@bot.message_handler(commands=['driver_start','start_driver'])
def driver_start(message):
global main_driver_status, bot
main_driver_status=start_driver(bot , message)
bot.send_message(message.chat.id,'OK')
@bot.message_handler(commands=['driver_stop','stop_driver'])
def bot_driver_stop(message):
bot.send_message(message.chat.id,'Выключаю')
vixod()
bot.send_message(message.chat.id,'OK')
@bot.message_handler(commands=['driver_status','status_driver'])
def bot_driver_status(message):
global bot
driver_info(bot, message)
@bot.message_handler(commands=['quit','exit'])
def ut(message):
if message.from_user.username =='sadxsadx':
bot.send_message(message.chat.id,'Выхожу')
vixod()
os.abort()
else:
bot.reply_to(message, 'У вас нет прав использовать это')
@bot.message_handler(commands=['reboot'])
def reboot(message):
if message.from_user.username == 'sadxsadx':
bot.send_message(message.chat.id,'Будет готово')
import subprocess
subprocess.check_call(['shutdown', '-r' ,'-t' ,'0'])
else:
bot.reply_to(message, 'У вас нет прав использовать это')
@bot.message_handler(commands=['file_list'])
def list_file(message):
global ROOT_DIR
wd = ROOT_DIR+'results/'
files = os.listdir(wd)
p=''
for file in files:
if file == files[0]:
p+=file+' '
else:
p+='| '+file+' '
bot.send_message(message.chat.id,p)
@bot.message_handler(commands=['crypt'])
def spros_pass(message):
global admins
if message.from_user.username in admins:
bot.send_message(message.chat.id,'Введи пароль')
bot.register_next_step_handler(message, crypt)
else:
bot.reply_to(message, 'У вас нет прав использовать это')
def crypt(message):
if message.text == '/exit':
bot.send_message(message.chat.id,'Выхожу')
return
passw=message.text
global ROOT_DIR
wd = ROOT_DIR+'results/'
files = os.listdir(wd)
for file in files:
uy = wd + file
bot.send_message(message.chat.id,file)
if uy[-4:]!='.aes':
pyAesCrypt.encryptFile(uy,uy+'.aes', passw,64*1024)
os.remove(uy)
else:
bot.send_message(message.chat.id,f'Файл {uy} уже закриптован')
bot.send_message(message.chat.id,'Файлы закриптованы')
@bot.message_handler(commands=['decrypt'])
def spros_pass(message):
if message.from_user.username in admins:
bot.send_message(message.chat.id,'Введи пароль')
bot.register_next_step_handler(message, decrypt)
else:
bot.reply_to(message, 'У вас нет прав использовать это')
def decrypt(message):
if message.text == '/exit':
bot.send_message(message.chat.id,'Выхожу')
return
passw=message.text
print(passw)
global ROOT_DIR
wd = ROOT_DIR+'results/'
files = os.listdir(wd)
for file in files:
uy = wd + file
bot.send_message(message.chat.id,file)
if uy[-4:]=='.aes':
try:
pyAesCrypt.decryptFile(uy,uy[:-4],passw,64*1024)
os.remove(uy)
except ValueError:
bot.send_message(message.chat.id,'Неправильный пароль')
else:
bot.send_message(message.chat.id,f'Файл {uy} уже раскриптован')
bot.send_message(message.chat.id,'Файлы декриптованы')
bot.polling()
как в этом коде правильно использовать try: except чтобы KeyboardInterrupt работал во всём коде, пробывал обернуть полностью, после вывода yes уже не работает (мне нужно отключить в defs драйвер когда происходит KeyboardInterrupt)