diff --git a/Readme.md b/Readme.md index e36db6a..22ad2a4 100644 --- a/Readme.md +++ b/Readme.md @@ -53,7 +53,7 @@ docker run \ -e QUSER="" \ -e QPASS="" \ -e LANG="YOUR_LANG" \ - -d your_image_here + -d -it your_image_here ``` ##### or @@ -63,6 +63,7 @@ docker run \ services: qbitdl_bot: image: + tty: true container_name: qbitdl_bot volumes: - /path/to/config:/etc/bot diff --git a/bot/bot.py b/bot/bot.py index 0ef6f87..aa6a87f 100755 --- a/bot/bot.py +++ b/bot/bot.py @@ -1,11 +1,11 @@ #!/usr/bin/python3 # -- coding: utf-8 -- -import func, telebot, os +import func, telebot, os, log, sys from db import PATH from lang import LANG as msg -TOKEN = os.environ["TOKEN"] +TOKEN = os.environ.get('TOKEN','None') bot = telebot.TeleBot(TOKEN) folder_list = [] dir = None @@ -159,5 +159,20 @@ def unknown(message): else: bot.reply_to(message,str(msg.get('adeny'))) -func.qbt() -bot.polling() +def run(): + if os.path.exists(PATH) == False: + os.mkdir(PATH) + log.start() + try: + func.qbt() + except: + log.errqbt() + sys.exit(1) + try: + bot.polling() + except: + log.errtelebot() + sys.exit(1) + +if __name__ == "__main__": + run() diff --git a/bot/func.py b/bot/func.py index de33a22..8a9024d 100644 --- a/bot/func.py +++ b/bot/func.py @@ -1,7 +1,7 @@ #!/usr/bin/python3 # -- coding: utf-8 -- -import db, os +import db, os, log, subprocess from db import * from lang import LANG as msg @@ -12,10 +12,12 @@ def qbt(): commands = [ f"qbt settings set url {url}", f"qbt settings set username {username}", - f"echo {password} | qbt settings set password --no-warn" + f"echo {password} | qbt settings set password --no-warn", + f"qbt server info " ] for command in commands: os.system(f"bash -c '{command}'") + output = subprocess.run(command, shell=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) def u_auth(id,passwd): list = [] @@ -27,6 +29,7 @@ def u_auth(id,passwd): if passwd == os.environ['PASS']: list.append(id) db.write(list,AUTH_FILE) + log.auth(id) return msg.get('sucauth') else: return msg.get('wrauth') @@ -49,6 +52,7 @@ def add_dir(id,dir,path): dict = {} dict.setdefault(dir,path) db.write(dict,DIR_FILE) + log.add(id,dir,path) return str(msg.get('fsa')).format(dir) else: return msg.get('adeny') @@ -62,6 +66,7 @@ def del_dir(id,dir): if dir in dict: del dict[dir] db.write(dict,DIR_FILE) + log.rm(id,dir) return str(msg.get('frm')).format(dir) else: return str(msg.get('fne')).format(dir) @@ -74,6 +79,7 @@ def magnet(id,link,dir): path = dict[dir] command = f'''qbt torrent add url "{link}" -f "{path}"''' os.system(f"bash -c '{command}'") + log.addmagnet(id,link) return msg.get('add') else: return msg.get('adeny') @@ -85,6 +91,7 @@ def file(id,file,dir): command = f'''qbt torrent add file "{file}" -f {path}''' os.system(f"bash -c '{command}'") os.remove(file) + log.addfile(id,file) return msg.get('add') else: return msg.get('adeny') diff --git a/bot/lang.py b/bot/lang.py index 9db759c..b72ca63 100644 --- a/bot/lang.py +++ b/bot/lang.py @@ -24,7 +24,17 @@ RU = { 'ntorr': 'Неверное расширение файла', 'sendm': 'Отправте Magnet-ссылку', 'sendf': 'Отправте .torrent файл', - 'adeny': 'Этот бот запривачен, гнида, блять' + 'adeny': 'Этот бот запривачен, гнида, блять', + # Logs + 'l_create': "Log Файл '{}' создан", + 'l_start': 'Запуск бота...', + 'l_auth': "Пользователь '{}' успешно авторизировался", + 'l_add': "Пользователь '{}' добавил папку '{}' по пути '{}'", + 'l_rm': "Пользователь '{}' удалил папку '{}'", + 'l_file': "Пользователь '{}' добавил в очередь файл '{}'", + 'l_magnet': "Пользователь '{}' добавил в очередь ссылку '{}'", + 'l_errqbt': "Ошибка подключения к qBitTorrent", + 'l_errtele': "Ошибка подключения к Telegram API, проверьте ваш токен", } # English @@ -46,7 +56,17 @@ ENG = { 'ntorr': 'Incorrect file extension', 'sendm': 'Send Magnet link', 'sendf': 'Send .torrent file', - 'adeny': "You do not have access, first authorize '/login '" + 'adeny': "You do not have access, first authorize '/login '", + # Logs + 'l_create': "Log File '{}' created", + 'l_start': 'Start bot polling...', + 'l_auth': "User '{}' successfully authorized", + 'l_add': "User '{}' added a folder '{}' with the path '{}'", + 'l_rm': "User '{}' deleted '{}' folder", + 'l_file': "User '{}' added file '{}' to the queue", + 'l_magnet': "User '{}' added the link '{}' to the queue", + 'l_errqbt': "Error connecting to qBitTorrent", + 'l_errtele': "Error connecting to Telegram API, check your token" } for i in langs: diff --git a/bot/log.py b/bot/log.py new file mode 100644 index 0000000..5b6cb4e --- /dev/null +++ b/bot/log.py @@ -0,0 +1,65 @@ +#!/usr/bin/python3 +# -- coding: utf-8 -- + +import os, uuid +from datetime import datetime +from lang import LANG as msg +from db import PATH + +def dt(): + date = datetime.now().date() + time = datetime.now().time() + str = f'{date} | {time.strftime("%H:%M:%S")}' + return str + +DEFAULT = f'{dt()} LOG: ' +ID = str(uuid.uuid1())[0:7] +FILE = f'{ID}.txt' + +def file(log): + if os.path.exists(f'{PATH}logs') == False: + os.mkdir(f'{PATH}logs') + with open(f'{PATH}logs/{FILE}','a') as logfile: + logfile.write(f'{log}\n') + logfile.close() + +def start(): + log1 = DEFAULT + str(msg.get('l_create').format(FILE)) + log2 = DEFAULT + str(msg.get('l_start')) + file(log2) + print(f'{log1}\n{log2}') + +def auth(id): + log = DEFAULT + str(msg.get('l_auth').format(id)) + file(log) + print(log) + +def add(id,folder,path): + log = DEFAULT + str(msg.get('l_add').format(id,folder,path)) + file(log) + print(log) + +def rm(id,folder): + log = DEFAULT + str(msg.get('l_rm').format(id,folder)) + file(log) + print(log) + +def addfile(id,filename): + log = DEFAULT + str(msg.get('l_file').format(id,filename[9:])) + file(log) + print(log) + +def addmagnet(id,link): + log = DEFAULT + str(msg.get('l_magnet').format(id,link)) + file(log) + print(log) + +def errqbt(): + log = DEFAULT + str(msg.get('l_errqbt')) + file(log) + print(log) + +def errtelebot(): + log = DEFAULT + str(msg.get('l_errtele')) + file(log) + print(log) diff --git a/docker-compose.yml b/docker-compose.yml index 562561b..ebce938 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,7 @@ services: qbitdl_bot: image: + tty: true container_name: qbitdl_bot volumes: - /path/to/config:/etc/bot @@ -12,4 +13,4 @@ services: QURL: ":" QUSER: "" QPASS: "" - LANG: "RU" + LANG: ""