Feat: get users command
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2025-01-17 14:24:41 +03:00
parent fed548e9e8
commit 0fa538d079

View File

@@ -16,6 +16,7 @@ from nwxraybot.fsm import BroadcastStates
from nwxraybot.meta import Handler from nwxraybot.meta import Handler
from nwxraybot.middlewares import AdminMiddleware from nwxraybot.middlewares import AdminMiddleware
from nwxraybot.models import User from nwxraybot.models import User
from nwxraybot.utils import get_subscription_info
class AdminHandler(Handler): class AdminHandler(Handler):
@@ -28,6 +29,7 @@ class AdminHandler(Handler):
`/adduser name url [01.01.1970 00:00]` - добавить пользователя `/adduser name url [01.01.1970 00:00]` - добавить пользователя
`/updateuser name 01.01.1970 00:00` - обновить информацию о пользователе `/updateuser name 01.01.1970 00:00` - обновить информацию о пользователе
`/broadcast` - рассылка (пошагово) `/broadcast` - рассылка (пошагово)
`/get_users` - список пользователей
""" """
@self.router.message(Command('ahelp')) @self.router.message(Command('ahelp'))
@@ -69,6 +71,24 @@ class AdminHandler(Handler):
query.execute() query.execute()
await message.answer('Информация о пользователе обновлена.') await message.answer('Информация о пользователе обновлена.')
@self.router.message(Command('get_users'))
async def get_users(message: Message):
def get_user_info(user: User) -> str:
date_str = "" if user.time is None else f'До: {
user.time.strftime("%d.%m.%Y %H:%M")} МСК\n'
return f"Информация о пользователе `{user.name}`:\n{date_str}Ссылка: `{user.url}`\ncode: `{user.code if user.code else 'None'}`\n\n"
users = User.select()
res = ""
for user in users:
res += get_user_info(user)
try:
await message.answer(res, parse_mode=ParseMode.MARKDOWN)
except Exception as e:
await message.answer(f"Error while getting users: {e}")
logging.error(f"Error while getting user {
user.telegram_id}: {e}")
@self.router.message(Command('broadcast')) @self.router.message(Command('broadcast'))
async def start_broadcast(message: Message, state: FSMContext): async def start_broadcast(message: Message, state: FSMContext):
await message.answer('Отправьте для рассылки') await message.answer('Отправьте для рассылки')