Bot Discord python удаляет сообщение только одного человека - PullRequest
0 голосов
/ 29 мая 2018

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

    @bot.command(pass_context = True)
async def purge(ctx,msglimit : int):
    deleted = await bot.purge_from(ctx.message.channel, limit=msglimit)
    await bot.say("Cleared **{}** Messages".format(len(deleted)))

, но документация показывает эту команду

def is_me(m):
    return m.author == client.user

    deleted = await client.purge_from(channel, limit=100, check=is_me)
    await client.send_message(channel, 'Deleted {} message(s)'.format(len(deleted)))

Но я не могу заставить ее работать, если у кого-то естьидея

1 Ответ

0 голосов
/ 29 мая 2018
def is_me(m):
    return m.author == bot.user

@bot.command(pass_context = True)
async def purge(ctx):
    deleted = await bot.purge_from(ctx.message.channel, check=is_me)
    await bot.say("Cleared **{}** Messages".format(len(deleted)))

Удаляет определенное количество сообщений (по умолчанию 100).

Метод purge_from принимает аргумент с именем check, который является функцией, которая принимает сообщение и возвращает ли сообщениедолжны быть удалены.

Функция is_me вернет true, если автором сообщения является бот.

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

...