🌙

Закреплённые сообщения

Закреплённые сообщения

В Kodari Messenger можно закреплять несколько сообщений одновременно. Бот может управлять закреплёнными и читать их список.

pinMessage

Закрепляет сообщение в чате. Требует прав администратора.

await bot.pin_message(chat_id, message_id)

unpinMessage

Открепляет сообщение. Без message_id — открепляет все закреплённые.

await bot.unpin_message(chat_id)                   # открепить все
await bot.unpin_message(chat_id, message_id=42)    # открепить одно

getPinnedMessages

Возвращает список всех закреплённых сообщений чата, отсортированных от новых к старым.

pinned = await bot.get_pinned_messages(chat_id)

Возвращает: list[PinnedMessage]

ПолеТипОписание
idintID сообщения
contentstrТекст (расшифрованный)
media_typestr или NoneТип медиа
media_urlstr или NoneURL медиа
user_idintАвтор сообщения
pinned_byintКто закрепил
created_atstrВремя создания
pinned_atstrВремя закрепления

Через метод сообщения

await msg.pin()

Примеры

Закрепить важное сообщение:

@dp.message(filters.command("pin"))
async def pin_cmd(msg):
    if msg.reply_to_message_id:
        await bot.pin_message(msg.chat.id, msg.reply_to_message_id)
        await msg.answer("Закреплено!")

Показать все закреплённые:

@dp.message(filters.command("pinned"))
async def show_pinned(msg):
    pinned = await bot.get_pinned_messages(msg.chat.id)
    if not pinned:
        await msg.answer("Нет закреплённых сообщений")
        return
    lines = [f"📌 {i+1}. {p.content[:60] or '[медиа]'}" for i, p in enumerate(pinned)]
    await msg.answer("\n".join(lines))

Снять конкретное закрепление:

@dp.message(filters.command("unpin"))
async def unpin_cmd(msg):
    pinned = await bot.get_pinned_messages(msg.chat.id)
    if pinned:
        await bot.unpin_message(msg.chat.id, message_id=pinned[0].id)
        await msg.answer("Последнее закрепление снято")

1 просмотр