TW-Requests/tgbot_app/handlers/user_private.py

135 lines
3.7 KiB
Python
Raw Permalink Normal View History

2024-07-15 07:15:51 +00:00
import logging
from aiogram import F, Router, types
from aiogram.filters import CommandStart
from aiogram.filters.logic import or_f
from aiogram.fsm.context import FSMContext
from aiogram.fsm.state import State, StatesGroup
from api.api_client import api_client
from filters.chat_types import ChatTypeFilter
from kb.reply_kb import ADD_KB, START_KB
user_private_router = Router()
user_private_router.message.filter(ChatTypeFilter(('private')))
class AddInfo(StatesGroup):
text = State()
@user_private_router.message(or_f(CommandStart(), (F.text == '↩️ Назад')))
async def start(message: types.Message):
hello_msg = 'Выбери, чем хочешь заняться🐶'
if message.text == '/start':
hello_msg = (f'Добро пожаловать, *{message.from_user.full_name}*!\n\n'
'Я тестовый *Бот*, ') + hello_msg
await message.answer(
hello_msg,
reply_markup=START_KB,
)
@user_private_router.message(F.text.lower() == 'добавить комментарий.')
async def create(message: types.Message, state: FSMContext):
await message.answer(
'Введите информацию',
reply_markup=ADD_KB
)
await state.set_state(AddInfo.text)
@user_private_router.message(
AddInfo.text,
F.text.lower() == 'выйти без сохранения'
)
async def post_comment_quit(
message: types.Message,
state: FSMContext,
):
await state.clear()
text = 'Вы вышли.'
await message.answer(
text,
reply_markup=START_KB
)
@user_private_router.message(AddInfo.text, F.text)
async def post_comment(
message: types.Message,
state: FSMContext,
):
await state.set_data({
'comment': message.text,
'username': message.from_user.username
})
data = await state.get_data()
await state.clear()
logging.info(data)
response = await api_client.post_query(
url='https://my-nginx/api/comments-add/',
prompt=data
)
text = 'Успешно'
if response == 'Произошла ошибка':
text = 'Ошибка'
await message.answer(
text,
reply_markup=START_KB
)
@user_private_router.message(F.text.lower() == 'зарегистрироваться.')
async def post_user(
message: types.Message,
):
data = {'username': message.from_user.username}
response = await api_client.post_query(
url='https://my-nginx/api/users-add/',
prompt=data
)
text = 'Успешно'
if response == 'Произошла ошибка':
text = 'Ошибка'
await message.answer(text)
@user_private_router.message(
F.text.lower() == 'посмотреть всех пользователей.'
)
async def get_users(
message: types.Message,
):
response = await api_client.get_query(
url='https://my-nginx/api/users/',
)
text = ''
if isinstance(response, str):
text = 'Пусто'
await message.answer(text)
return
for elem in response:
text += f'{elem.get("id")}. *{elem.get("username")}*\n'
logging.debug(text)
await message.answer(text)
@user_private_router.message(F.text.lower() == 'посмотреть все комментарии.')
async def get_comments(
message: types.Message,
):
response = await api_client.get_query(
url='https://my-nginx/api/comments/',
)
text = ''
if isinstance(response, str):
text = 'Пусто'
await message.answer(text)
return
for elem in response:
text += f'*{elem.get("username")}*:\n{elem.get("comment")}\n'
logging.debug(text)
await message.answer(text)