mirror of
https://github.com/koloideal/DutyLog.git
synced 2026-06-10 02:15:30 +03:00
update
This commit is contained in:
@@ -4,6 +4,7 @@ from dutylog.application.bot.user_dialogs.user_menu.main_menu import main_menu_w
|
||||
from dutylog.application.bot.user_dialogs.user_menu.history import history_window
|
||||
from dutylog.application.bot.user_dialogs.user_menu.top_residents import top_residents_window
|
||||
from dutylog.application.bot.user_dialogs.user_menu.faq import faq_window
|
||||
from dutylog.application.bot.user_dialogs.user_menu.feedback import feedback_window
|
||||
|
||||
|
||||
main_menu_dialog = Dialog(
|
||||
@@ -11,4 +12,5 @@ main_menu_dialog = Dialog(
|
||||
history_window,
|
||||
top_residents_window,
|
||||
faq_window,
|
||||
feedback_window,
|
||||
)
|
||||
|
||||
@@ -6,6 +6,7 @@ class MainMenuSG(StatesGroup):
|
||||
history = State()
|
||||
top_residents = State()
|
||||
faq = State()
|
||||
feedback = State()
|
||||
|
||||
|
||||
class AdminMenuSG(StatesGroup):
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
from aiogram import Bot
|
||||
from aiogram.types import Message
|
||||
from aiogram_dialog import Window, DialogManager
|
||||
from aiogram_dialog.widgets.text import Const
|
||||
from aiogram_dialog.widgets.kbd import SwitchTo
|
||||
from aiogram_dialog.widgets.input import MessageInput
|
||||
from dishka import FromDishka
|
||||
from dishka.integrations.aiogram_dialog import inject
|
||||
|
||||
from dutylog.application.bot.user_dialogs.states import MainMenuSG
|
||||
from dutylog.infrastructure.database.repositories.users_repository import UsersRepository
|
||||
from dutylog.infrastructure.database.repositories.residents_repository import ResidentsRepository
|
||||
from dutylog.infrastructure.utils.config import Config
|
||||
|
||||
|
||||
@inject
|
||||
async def on_feedback_message(
|
||||
message: Message,
|
||||
widget: MessageInput,
|
||||
dialog_manager: DialogManager,
|
||||
users_repository: FromDishka[UsersRepository],
|
||||
residents_repository: FromDishka[ResidentsRepository],
|
||||
config: FromDishka[Config],
|
||||
) -> None:
|
||||
assert message.bot
|
||||
bot: Bot = message.bot
|
||||
|
||||
user = await users_repository.get_user_by_id(message.from_user.id)
|
||||
resident = await residents_repository.get_resident_by_user_id(message.from_user.id)
|
||||
|
||||
username = f"@{user.username}" if user and user.username else "без username"
|
||||
name = resident.real_name if resident and resident.real_name else (user.first_name if user and user.first_name else "Неизвестно")
|
||||
|
||||
meta = (
|
||||
f"📬 <b>Обратная связь</b>\n\n"
|
||||
f"👤 {name} ({username})\n"
|
||||
f"🆔 <code>{message.from_user.id}</code>"
|
||||
)
|
||||
|
||||
await bot.send_message(config.bot.creator_id, meta)
|
||||
await bot.copy_message(
|
||||
chat_id=config.bot.creator_id,
|
||||
from_chat_id=message.chat.id,
|
||||
message_id=message.message_id,
|
||||
)
|
||||
|
||||
await message.answer("✅ Сообщение отправлено. Спасибо за обратную связь!")
|
||||
await dialog_manager.switch_to(MainMenuSG.main)
|
||||
|
||||
|
||||
feedback_window = Window(
|
||||
Const(
|
||||
"💬 <b>Обратная связь</b>\n\n"
|
||||
"Напишите ваше сообщение — предложение по улучшению, вопрос, жалоба или что угодно ещё.\n\n"
|
||||
"<i>🔒 Сообщение полностью анонимно.</i>"
|
||||
),
|
||||
MessageInput(on_feedback_message),
|
||||
SwitchTo(Const("◀️ Назад"), id="back_from_feedback", state=MainMenuSG.main),
|
||||
state=MainMenuSG.feedback,
|
||||
)
|
||||
@@ -137,6 +137,12 @@ main_menu_window = Window(
|
||||
state=MainMenuSG.faq,
|
||||
when="is_regular_user",
|
||||
),
|
||||
SwitchTo(
|
||||
Const("💬 Обратная связь"),
|
||||
id="feedback_btn",
|
||||
state=MainMenuSG.feedback,
|
||||
when="is_regular_user",
|
||||
),
|
||||
state=MainMenuSG.main,
|
||||
getter=get_main_menu_data,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user