mirror of
https://github.com/koloideal/DutyLog.git
synced 2026-06-10 10:25:29 +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.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.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.faq import faq_window
|
||||||
|
from dutylog.application.bot.user_dialogs.user_menu.feedback import feedback_window
|
||||||
|
|
||||||
|
|
||||||
main_menu_dialog = Dialog(
|
main_menu_dialog = Dialog(
|
||||||
@@ -11,4 +12,5 @@ main_menu_dialog = Dialog(
|
|||||||
history_window,
|
history_window,
|
||||||
top_residents_window,
|
top_residents_window,
|
||||||
faq_window,
|
faq_window,
|
||||||
|
feedback_window,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ class MainMenuSG(StatesGroup):
|
|||||||
history = State()
|
history = State()
|
||||||
top_residents = State()
|
top_residents = State()
|
||||||
faq = State()
|
faq = State()
|
||||||
|
feedback = State()
|
||||||
|
|
||||||
|
|
||||||
class AdminMenuSG(StatesGroup):
|
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,
|
state=MainMenuSG.faq,
|
||||||
when="is_regular_user",
|
when="is_regular_user",
|
||||||
),
|
),
|
||||||
|
SwitchTo(
|
||||||
|
Const("💬 Обратная связь"),
|
||||||
|
id="feedback_btn",
|
||||||
|
state=MainMenuSG.feedback,
|
||||||
|
when="is_regular_user",
|
||||||
|
),
|
||||||
state=MainMenuSG.main,
|
state=MainMenuSG.main,
|
||||||
getter=get_main_menu_data,
|
getter=get_main_menu_data,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user