forked from OrudoCA/qBitDownload-Bot
Add auth system to bot && reformat
- add auth_check() function to bot - add /auth command to bot
This commit is contained in:
parent
3c02cc20e9
commit
0aa90228e0
|
@ -0,0 +1,80 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
#####################
|
||||||
|
# Aiogram bot logic #
|
||||||
|
#####################
|
||||||
|
|
||||||
|
# Imports
|
||||||
|
from asyncio import run
|
||||||
|
|
||||||
|
from tubot.db.abc import CacheDB
|
||||||
|
from tubot.dirgetter.abc import DirGetter
|
||||||
|
from tubot.static.init import init_modules
|
||||||
|
from tubot.static.controller import Controller
|
||||||
|
from tubot.static.env import BOT_TOKEN
|
||||||
|
from tubot.torrent.abc import TorrentAPI
|
||||||
|
|
||||||
|
from aiogram import Bot, Dispatcher, Router
|
||||||
|
from aiogram.types import Message
|
||||||
|
from aiogram.filters.command import Command
|
||||||
|
|
||||||
|
# Init
|
||||||
|
|
||||||
|
## --- Modules --- ##
|
||||||
|
cache: CacheDB
|
||||||
|
dirgetter: DirGetter
|
||||||
|
torrent_api: TorrentAPI
|
||||||
|
ctrl: Controller
|
||||||
|
|
||||||
|
## --- Bot --- ##
|
||||||
|
router = Router()
|
||||||
|
dp = Dispatcher()
|
||||||
|
dp.include_router(router)
|
||||||
|
|
||||||
|
|
||||||
|
async def initialize() -> None:
|
||||||
|
# --- Modules --- #
|
||||||
|
global cache, dirgetter, torrent_api, ctrl
|
||||||
|
torrent_api, dirgetter, cache = await init_modules()
|
||||||
|
ctrl = Controller(torrent_api, dirgetter, cache)
|
||||||
|
# --- Bot --- #
|
||||||
|
bot = Bot(BOT_TOKEN()())
|
||||||
|
await dp.start_polling(bot)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
run(initialize())
|
||||||
|
|
||||||
|
|
||||||
|
## -- Functions -- ##
|
||||||
|
|
||||||
|
|
||||||
|
async def check_auth(msg: Message) -> bool:
|
||||||
|
if msg.from_user is None:
|
||||||
|
raise ValueError
|
||||||
|
tg_id = msg.from_user.id
|
||||||
|
name = msg.from_user.first_name
|
||||||
|
user = await ctrl.get_user(tg_id, name)
|
||||||
|
return user.auth
|
||||||
|
|
||||||
|
|
||||||
|
@dp.message(Command("auth"))
|
||||||
|
async def auth(msg: Message) -> None:
|
||||||
|
if msg.from_user is None:
|
||||||
|
raise ValueError
|
||||||
|
password = msg.text
|
||||||
|
if password:
|
||||||
|
password = " ".join(password.split()[1:])
|
||||||
|
tgid = msg.from_user.id
|
||||||
|
name = msg.from_user.first_name
|
||||||
|
user = await ctrl.get_user(tgid, name)
|
||||||
|
try:
|
||||||
|
await ctrl.auth_user(user, password)
|
||||||
|
await msg.answer("Auth complete!")
|
||||||
|
except Exception as e:
|
||||||
|
await msg.answer(str(e))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
2
setup.py
2
setup.py
|
@ -11,7 +11,7 @@ setup(
|
||||||
"aiohttp>=3.9.5",
|
"aiohttp>=3.9.5",
|
||||||
"aiofiles>=23.2.1",
|
"aiofiles>=23.2.1",
|
||||||
"redis>=5.0.8",
|
"redis>=5.0.8",
|
||||||
"aiogram>=3.10.0"
|
"aiogram>=3.10.0",
|
||||||
],
|
],
|
||||||
packages=["tubot", "tubot.static", "tubot.torrent", "tubot.dirgetter", "db"],
|
packages=["tubot", "tubot.static", "tubot.torrent", "tubot.dirgetter", "db"],
|
||||||
)
|
)
|
||||||
|
|
41
tubot/bot.py
41
tubot/bot.py
|
@ -16,6 +16,8 @@ from tubot.static.env import BOT_TOKEN
|
||||||
from tubot.torrent.abc import TorrentAPI
|
from tubot.torrent.abc import TorrentAPI
|
||||||
|
|
||||||
from aiogram import Bot, Dispatcher, Router
|
from aiogram import Bot, Dispatcher, Router
|
||||||
|
from aiogram.types import Message
|
||||||
|
from aiogram.filters.command import Command
|
||||||
|
|
||||||
# Init
|
# Init
|
||||||
|
|
||||||
|
@ -26,9 +28,9 @@ torrent_api: TorrentAPI
|
||||||
ctrl: Controller
|
ctrl: Controller
|
||||||
|
|
||||||
## --- Bot --- ##
|
## --- Bot --- ##
|
||||||
bot: Bot
|
router = Router()
|
||||||
router: Router
|
dp = Dispatcher()
|
||||||
dp: Dispatcher
|
dp.include_router(router)
|
||||||
|
|
||||||
|
|
||||||
async def initialize() -> None:
|
async def initialize() -> None:
|
||||||
|
@ -37,10 +39,6 @@ async def initialize() -> None:
|
||||||
torrent_api, dirgetter, cache = await init_modules()
|
torrent_api, dirgetter, cache = await init_modules()
|
||||||
ctrl = Controller(torrent_api, dirgetter, cache)
|
ctrl = Controller(torrent_api, dirgetter, cache)
|
||||||
# --- Bot --- #
|
# --- Bot --- #
|
||||||
global router, dp, bot
|
|
||||||
router = Router()
|
|
||||||
dp = Dispatcher()
|
|
||||||
dp.include_router(router)
|
|
||||||
bot = Bot(BOT_TOKEN()())
|
bot = Bot(BOT_TOKEN()())
|
||||||
await dp.start_polling(bot)
|
await dp.start_polling(bot)
|
||||||
|
|
||||||
|
@ -49,5 +47,34 @@ def main() -> None:
|
||||||
run(initialize())
|
run(initialize())
|
||||||
|
|
||||||
|
|
||||||
|
## -- Functions -- ##
|
||||||
|
|
||||||
|
|
||||||
|
async def check_auth(msg: Message) -> bool:
|
||||||
|
if msg.from_user is None:
|
||||||
|
raise ValueError
|
||||||
|
tg_id = msg.from_user.id
|
||||||
|
name = msg.from_user.first_name
|
||||||
|
user = await ctrl.get_user(tg_id, name)
|
||||||
|
return user.auth
|
||||||
|
|
||||||
|
|
||||||
|
@dp.message(Command("auth"))
|
||||||
|
async def auth(msg: Message) -> None:
|
||||||
|
if msg.from_user is None:
|
||||||
|
raise ValueError
|
||||||
|
password = msg.text
|
||||||
|
if password:
|
||||||
|
password = " ".join(password.split()[1:])
|
||||||
|
tgid = msg.from_user.id
|
||||||
|
name = msg.from_user.first_name
|
||||||
|
user = await ctrl.get_user(tgid, name)
|
||||||
|
try:
|
||||||
|
await ctrl.auth_user(user, password)
|
||||||
|
await msg.answer("Auth complete!")
|
||||||
|
except Exception as e:
|
||||||
|
await msg.answer(str(e))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
|
@ -129,5 +129,6 @@ class CACHE_EXPIRE(ENV):
|
||||||
"""
|
"""
|
||||||
Cache expire time in seconds
|
Cache expire time in seconds
|
||||||
"""
|
"""
|
||||||
|
|
||||||
_name = "CACHE_EXPIRE"
|
_name = "CACHE_EXPIRE"
|
||||||
DEFAULT = "120"
|
DEFAULT = "120"
|
||||||
|
|
Loading…
Reference in New Issue