Discord.py v1.0 Как извлечь каждое сообщение из канала и удалить их одно за другим - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть настройка команды clear, и идея состояла в том, чтобы удалить каждое сообщение в канале, имя которого у меня жестко запрограммировано, но, поскольку я прочитал, что метод удаляет только сообщения, которые были опубликованы не ранее, чем через 14 дней, я решил, что нужно каким-то образом вручную получить все сообщения, а затем удалить каждое из них методом delete. Я посмотрел вокруг, но каждый пример либо до v1.0, либо не использует команды с контекстом, как я.

Код:

@self.discord_bot.command()
async def clear(ctx):
    try:
        if ctx.channel != self.channel_name:
            return

        # clear history
        # retrieve messages using context ctx
        # for each loop that deletes them with self.discord_bot.delete()
    except Exception as e:
        await ctx.trigger_typing()
        await ctx.send("Oops something happened! %s" % str(e))
        return

Заранее спасибо!

1 Ответ

1 голос
/ 07 апреля 2020

Это должно быть возможно при использовании channel.purge(). Это удалит каждое сообщение в указанном канале, если у учетной записи бота достаточно прав.

@self.discord_bot.command()
async def clear(ctx):
    try:
        if ctx.channel != self.channel_name:
            return

        # clear history
        await ctx.channel.purge(limit=None)
    except Exception as e:
        await ctx.trigger_typing()
        await ctx.send("Oops something happened! %s" % str(e))
        return
...