init
This commit is contained in:
17
src/controller/http/user.py
Normal file
17
src/controller/http/user.py
Normal file
@@ -0,0 +1,17 @@
|
||||
import uuid
|
||||
|
||||
from fastapi import APIRouter, Depends
|
||||
|
||||
from src import dto
|
||||
from src.dependencies import get_usecase
|
||||
from src.usecase.usecase import Usecase
|
||||
|
||||
user_router = APIRouter(prefix='/users', dependencies=[Depends(get_usecase)])
|
||||
|
||||
|
||||
@user_router.get('/{user_id}')
|
||||
async def get_user(
|
||||
user_id: uuid.UUID,
|
||||
usecase: Usecase = Depends(get_usecase),
|
||||
) -> dto.GetUserOutput:
|
||||
return await usecase.get_user(user_id)
|
||||
83
src/controller/telegram/bot.py
Normal file
83
src/controller/telegram/bot.py
Normal file
@@ -0,0 +1,83 @@
|
||||
import uuid
|
||||
|
||||
from aiogram import Router
|
||||
from aiogram.filters import Command
|
||||
from aiogram.types import Message
|
||||
|
||||
from src.dependencies import get_usecase
|
||||
|
||||
telegram_router = Router()
|
||||
|
||||
|
||||
@telegram_router.message(Command('start'))
|
||||
async def cmd_start(message: Message) -> None:
|
||||
await message.answer(
|
||||
'Привет! Я бот для работы с пользователями.\n\n'
|
||||
'Доступные команды:\n'
|
||||
'/getuser <user_id> - получить информацию о пользователе\n'
|
||||
'/notify <user_id> <message> - отправить уведомление пользователю'
|
||||
)
|
||||
|
||||
|
||||
@telegram_router.message(Command('getuser'))
|
||||
async def cmd_get_user(message: Message) -> None:
|
||||
usecase = get_usecase()
|
||||
|
||||
if not message.text:
|
||||
await message.answer('Ошибка: не удалось прочитать текст команды')
|
||||
return
|
||||
|
||||
args = message.text.split()
|
||||
if len(args) < 2:
|
||||
await message.answer(
|
||||
'Использование: /getuser <user_id>\n' 'Пример: /getuser 123e4567-e89b-12d3-a456-426614174000'
|
||||
)
|
||||
return
|
||||
|
||||
try:
|
||||
user_id = uuid.UUID(args[1])
|
||||
except ValueError:
|
||||
await message.answer('Ошибка: неверный формат UUID')
|
||||
return
|
||||
|
||||
try:
|
||||
user = await usecase.get_user(user_id)
|
||||
await message.answer(
|
||||
f'Пользователь найден:\n'
|
||||
f'ID: {user.id}\n'
|
||||
f'Имя: {user.name}\n'
|
||||
f'Создан: {user.created_at}\n'
|
||||
f'Обновлён: {user.updated_at}'
|
||||
)
|
||||
except Exception as e:
|
||||
await message.answer(f'Ошибка при получении пользователя: {str(e)}')
|
||||
|
||||
|
||||
@telegram_router.message(Command('notify'))
|
||||
async def cmd_notify_user(message: Message) -> None:
|
||||
usecase = get_usecase()
|
||||
|
||||
if not message.text or not message.from_user:
|
||||
await message.answer('Ошибка: не удалось прочитать команду')
|
||||
return
|
||||
|
||||
args = message.text.split(maxsplit=2)
|
||||
if len(args) < 3:
|
||||
await message.answer(
|
||||
'Использование: /notify <user_id> <message>\n'
|
||||
'Пример: /notify 123e4567-e89b-12d3-a456-426614174000 Привет!'
|
||||
)
|
||||
return
|
||||
|
||||
try:
|
||||
user_id = uuid.UUID(args[1])
|
||||
notification_text = args[2]
|
||||
except ValueError:
|
||||
await message.answer('Ошибка: неверный формат UUID')
|
||||
return
|
||||
|
||||
try:
|
||||
await usecase.notify_user(user_id, message.from_user.id, notification_text)
|
||||
await message.answer('Уведомление отправлено!')
|
||||
except Exception as e:
|
||||
await message.answer(f'Ошибка при отправке уведомления: {str(e)}')
|
||||
Reference in New Issue
Block a user