Files
balance_bot/bot/handlers/commands/admins/pin_cmd.py
2026-01-23 04:45:55 +07:00

56 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from asyncio import create_task
from aiogram import Router, F
from aiogram.filters import Command
from aiogram.fsm.context import FSMContext
from aiogram.types import Message, CallbackQuery
from bot.core.bots import BotInfo, bot
from bot.filters import IsOwner
from bot.templates import msg
from bot.utils import status_clear
from bot.utils.auto_delete import auto_delete_message
from configs import COMMANDS
__all__ = ("router",)
CMD: str = "pin".lower()
router: Router = Router(name=f"{CMD}_cmd_router")
@router.message(Command(*COMMANDS[CMD], prefix=BotInfo.prefix, ignore_case=True), IsOwner())
async def pin_cmd(message: Message, state: FSMContext) -> None:
"""
Обработчик команды /pin для закрепления последнего сообщения или ответа.
"""
await status_clear(message=message, state=state)
# Если есть reply → закрепляем его, иначе закрепляем саму команду
target = message.reply_to_message or message
await bot.pin_chat_message(chat_id=message.chat.id,
message_id=target.message_id,
disable_notification=False)
# Автоудаление через 7 суток
create_task(auto_delete_message(chat_id=message.chat.id,
message_id=target.message_id,
delay=604800))
await msg(message=message, text="✅ Сообщение успешно закреплено")
@router.callback_query(F.data.casefold().isin(COMMANDS[CMD]), IsOwner())
async def pin_callback(callback: CallbackQuery, state: FSMContext) -> None:
"""
Обработчик кнопки с callback_data="pin".
"""
await status_clear(message=callback.message, state=state)
await bot.pin_chat_message(chat_id=callback.message.chat.id,
message_id=callback.message.message_id,
disable_notification=False)
create_task(auto_delete_message(chat_id=callback.message.chat.id,
message_id=callback.message.message_id,
delay=604800))
await callback.answer("✅ Сообщение закреплено")