Закреплённые сообщения
Закреплённые сообщения
В 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]
| Поле | Тип | Описание |
|---|---|---|
id | int | ID сообщения |
content | str | Текст (расшифрованный) |
media_type | str или None | Тип медиа |
media_url | str или None | URL медиа |
user_id | int | Автор сообщения |
pinned_by | int | Кто закрепил |
created_at | str | Время создания |
pinned_at | str | Время закрепления |
Через метод сообщения
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 просмотр