#!/usr/bin/python3 # -- coding: utf-8 -- import func, telebot, os TOKEN = os.environ["TOKEN"] bot = telebot.TeleBot(TOKEN) # Start @bot.message_handler(commands=['start']) def welcome(message): id = message.from_user.id if func.auth_check(id): bot.reply_to(message,'Choose download type:',reply_markup=home()) else: bot.reply_to(message,'Log in to use bot /login ') # Keyboard: Homepage def home(): keyboard = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) file = telebot.types.KeyboardButton('File') magnet = telebot.types.KeyboardButton('MagnetLink') keyboard.add(file,magnet) return keyboard # Login @bot.message_handler(commands=['login']) def login(message): id = message.from_user.id passwd = message.text.replace('/login ', '') f = func.u_auth(id,passwd) if f == 'Success' or f == 'You already logged in': bot.reply_to(message,f,reply_markup=home()) else: bot.reply_to(message,f) # Folders def folder_menu(): folders = func.dirlist() if len(folders) == 0: return None else: keyboard = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) i = 0 global folder_list folder_list = [] lst = [] for folder in folders.keys(): globals()[f'var_{i}'] = telebot.types.KeyboardButton(f'{folder}') lst.append(f'var_{i}') folder_list.append(folder) i += 1 for var in lst: keyboard.add(globals()[var]) return keyboard # Folder add @bot.message_handler(commands=['add']) def add(message): id = message.from_user.id txt = message.text.split(' ', 2) if len(txt) == 3: key = txt[1] path = txt[2] f = func.add_dir(id,key,path) else: f = 'Invalid args' bot.reply_to(message,f,reply_markup=home()) # Folder del @bot.message_handler(commands=['del']) def rm(message): id = message.from_user.id folder = message.text.replace('/del ', '') f = func.del_dir(id,folder) bot.reply_to(message,str(f),reply_markup=home()) # Magnet @bot.message_handler(func=lambda message: message.text == 'MagnetLink') def magnet(message): id = message.from_user.id if func.auth_check(id): global type type = 'magnet' f = folder_menu() if f == None: bot.reply_to(message,'No folders, use /add ') else: bot.reply_to(message,'Choose dir:',reply_markup=f) else: bot.reply_to(message,'Log in to use bot /login ') # Dir choose def dirchoose(message): global dir dir = message.text if type == 'magnet': bot.reply_to(message,'Send magnet link') # Unknown message @bot.message_handler(func=lambda message: True) def unknown(message): global type, dir, folder_list id = message.from_user.id if func.auth_check(id): txt = message.text if txt in folder_list: dirchoose(message) return None if dir != None and type == 'magnet': f = func.magnet(id,txt,dir) dir, type, folder_list = None,None,[] bot.reply_to(message,f) bot.reply_to(message,'Choose download type:',reply_markup=home()) else: bot.reply_to(message,'Log in to use bot /login ') bot.polling()