commit
cdd1f37f22
|
@ -53,7 +53,7 @@ docker run \
|
|||
-e QUSER="<YOUR_QBIT_USERNAME>" \
|
||||
-e QPASS="<YOUR_QBIT_PASSWORD>" \
|
||||
-e LANG="YOUR_LANG" \
|
||||
-d your_image_here
|
||||
-d -it your_image_here
|
||||
```
|
||||
|
||||
##### or
|
||||
|
@ -63,6 +63,7 @@ docker run \
|
|||
services:
|
||||
qbitdl_bot:
|
||||
image: <YOUR_IMAGE_HERE>
|
||||
tty: true
|
||||
container_name: qbitdl_bot
|
||||
volumes:
|
||||
- /path/to/config:/etc/bot
|
||||
|
|
19
bot/bot.py
19
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')))
|
||||
|
||||
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()
|
||||
|
|
11
bot/func.py
11
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')
|
||||
|
|
24
bot/lang.py
24
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 <password>'"
|
||||
'adeny': "You do not have access, first authorize '/login <password>'",
|
||||
# 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:
|
||||
|
|
|
@ -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)
|
|
@ -1,6 +1,7 @@
|
|||
services:
|
||||
qbitdl_bot:
|
||||
image: <YOUR_IMAGE_HERE>
|
||||
tty: true
|
||||
container_name: qbitdl_bot
|
||||
volumes:
|
||||
- /path/to/config:/etc/bot
|
||||
|
@ -12,4 +13,4 @@ services:
|
|||
QURL: "<http://<YOUR_QBIT_SERVER_IP_HERE>:<PORT>"
|
||||
QUSER: "<YOUR_QBIT_USERNAME>"
|
||||
QPASS: "<YOUR_QBIT_PASSWORD>"
|
||||
LANG: "RU"
|
||||
LANG: "<YOUR_LANG>"
|
||||
|
|
Reference in New Issue