Как очистить / удалить сообщения определенного c пользователя в канале - PullRequest
0 голосов
/ 02 августа 2020

Итак, я хочу создать команду, которая может удалять сообщения определенного пользователя в том канале, где была написана команда.

Команда, которую я хочу:

!clear <user> <no of messages>

Например:! clear @tom 10

Мой код:

@client.command()
async def clear(ctx,  member: discord.Member, user, amt=5+1):
    await ctx.member.purge(limit=amt)
    await ctx.send(f"cleared **{amt-1}** messages", delete_after=2)

Я, вероятно, даже не близок к тому, чтобы ответить на свой вопрос, но я попытался.

Любая помощь будет оценена

1 Ответ

0 голосов
/ 02 августа 2020

Я думаю, это должно сработать:

@client.command()
async def clear(ctx,  member: discord.Member, number : int):
    await ctx.message.delete()
    async for msg in ctx.channel.history(limit=number).filter(lambda m: m.author == member).map(lambda m: m):
        try:
            await msg.delete()
        except:
            pass

Я проверил, равен ли автор сообщения указанному нами пользователю, и, если он равен ему, удалил его сообщения для ограничение числа, которое мы хотим.

...