pinMessage / unpinMessage
pinMessage / unpinMessage
Закрепление сообщений. В группах и каналах требуется право pin_messages, в личных чатах доступно обоим участникам.
pinMessage
POST ?method=pinMessage
{ "chat_id": 123, "message_id": 456 }
| Параметр | Тип | Обяз. |
|---|---|---|
chat_id | int | ✓ |
message_id | int | ✓ |
Ответ: { "ok": true, "result": true }. Журнал: pin.
Чат поддерживает несколько закреплённых сообщений одновременно — новое закрепление не снимает предыдущее.
unpinMessage
POST ?method=unpinMessage
{ "chat_id": 123 }
Метод открепляет все сообщения чата. Параметр message_id не поддерживается — точечное открепление доступно только из интерфейса мессенджера.
Ответ: { "ok": true, "result": true }. Журнал: unpin.
Чтение закреплённых
Отдельного метода списка нет. Последнее закреплённое сообщение приходит в поле pinned_message метода getChat:
chat = await bot.get_chat(chat_id)
if chat.pinned_message:
print(chat.pinned_message.message_id)
Текст закреплённого сообщения getChat отдаёт зашифрованным — используйте только идентификаторы и метаданные.
Ошибки
| Код | Описание |
|---|---|
| 400 | Не передан chat_id или message_id |
| 403 | Бот не в чате или нет права pin_messages |
| 404 | Сообщение не найдено |
pykodaribot
await bot.pin_message(chat_id, message_id)
await msg.pin()
await bot.unpin_message(chat_id)
Закрепление по ответу на сообщение:
@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("Закреплено")
55 просмотров