Как убрать сообщения, отправляемые ботом?

Как можно исключить сообщения, отправленные ботом, из удаляемых сообщений при использовании команды очистки? <pre><code class="python">@bot.slash_command()
async def clear(inter, count: int):
    if inter.user.guild_permissions.manage_messages:
        if count &gt; 100:
            await inter.send("You can't delete more than 100 messages.", ephemeral=True)
            return
        else:
            message = await inter.send("Clearing messages...")
            await inter.channel.purge(limit=count)
            await inter.edit_original_response(f"{count} messages cleared.")
    else:
        await inter.send("You don't have permission to use this command.", ephemeral=True)</code></pre>
  • 16 января 2025 г. 6:23
Ответы на вопрос 1
Для того чтобы исключить сообщения, отправленные ботом, из удаляемых сообщений, можно использовать параметр `check` в методе `purge`. Этот параметр принимает функцию, которая возвращает `True` для тех сообщений, которые нужно удалить, и `False` для тех, которые нужно оставить.

Вот как можно изменить вашу команду `clear`, чтобы она не удаляла сообщения, отправленные ботом:

```python
@bot.slash_command()
async def clear(inter, count: int):
    if inter.user.guild_permissions.manage_messages:
        if count > 100:
            await inter.send("You can't delete more than 100 messages.", ephemeral=True)
            return
        else:
            message = await inter.send("Clearing messages...")
            # Функция для фильтрации сообщений
            def is_not_bot(message):
                return not message.author.bot  # Ищем сообщения, не отправленные ботом

            deleted = await inter.channel.purge(limit=count, check=is_not_bot)
            await inter.edit_original_response(f"{len(deleted)} messages cleared.")
    else:
        await inter.send("You don't have permission to use this command.", ephemeral=True)
```

В этом примере функция `is_not_bot` проверяет, что автор сообщения не бот, и только такие сообщения будут удаляться. Это позволяет избежать удаления сообщений, которые были отправлены самим ботом.
Похожие вопросы