Как удалять системные сообщение в discord.py

Рейтинг: 0Ответов: 1Опубликовано: 16.02.2023

как странно, но я не нашёл ничего что помогло бы мне. нада просто удалять сообщения такие как "БОТ закрепляет сообщение на этом канале."

async def func():
    channel = client.get_channel(123XX)
    msg = await channel.send('**Завтрашнее расписание**')
    SYSTEM_MSG = await msg.pin()  # КАК УДАЛИТЬ ЭТО СООБЩЕНИЕ

ведь у SYSTEM_MSG нету метода .delete()

Ответы

▲ 1

Системные сообщения, такие как сообщения об закреплении, не могут быть удалены с помощью обычных методов. Однако вы можете использовать параметр bulk объекта TextChannel для удаления последних сообщений из канала, включая закрепленные сообщения.

Вот пример кода, который удаляет последние 100 сообщений из канала (включая закрепленные сообщения):

async def delete_system_messages(channel):
    # получаем последние 100 сообщений из канала
    messages = await channel.history(limit=100).flatten()
    
    # удаляем сообщения, которые не были написаны пользователями
    system_messages = [msg for msg in messages if msg.author == channel.guild.me]
    await channel.delete_messages(system_messages)

Вы можете вызвать эту функцию с объектом канала, чтобы удалить все системные сообщения из него:

channel = client.get_channel(123XX)
await delete_system_messages(channel)

Обратите внимание, что параметр bulk может использоваться только для удаления сообщений, написанных ботом. Попытка удалить сообщения, написанные другими пользователями, вызовет исключение discord.Forbidden.