Задать вопрос
@Timurkaaa

Как сделать лог при удалении сообщений?

Мне нужно выводить в отдельный канал сообщение если кто-то удаляет сообщение и также написать кто его удалил.

Моя попытка реализации:
@bot.event
async def on_message_delete(message):
    channel = bot.get_channel(logs)

    guild = message.guild
    embed = disnake.Embed(
        title=" Сообщение удалено",
        color=disnake.Color.red(),
        timestamp=datetime.datetime.now()
    )

    deleter = None
    
    async for entry in guild.audit_logs(limit=5, action=disnake.AuditLogAction.message_delete):
        if entry.target.id == message.author.id:
                deleter = entry.user
                break
        else:
            deleter = None
    
    embed.set_footer(text=f"ID сообщения: {message.id}")
    
    embed.add_field(name="Автор:", value=message.author.mention, inline=True)
    embed.add_field(name="Канал:", value=message.channel.mention, inline=True)
    
    if message.content != "":
        embed.add_field(name="Сообщение:", value=f"```\n{message.content}\n```", inline=False)
        
    embed.add_field(name="Удалил:", value=f"{"-" if not deleter else deleter.mention}", inline=True)
    
    await channel.send(embed=embed)


Проблема в нахождении человека, удалившего сообщение. Тегает не того человека.
  • Вопрос задан
  • 42 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@dim5x
ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
В аудит лог не попадают сообщения об удалении, если это сделал сам автор.

Читайте аудит лог (там написано кто (имеющий права на Manage Messages) удалил чьё сообщение из какого канала) и переписывайте это в отдельный канал, если вас не устраивает встроенный функционал просмотра лога, где всё это реализовано в удобном виде с фильтрами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы