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

#python #discord.py-rewrite

#python #discord.py

Вопрос:

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

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

Этот блок кода удаляет сообщение, которое его запускает. Из-за этого я думаю, что использую неправильный подход, потому что он удаляет только от того, кто его запускает, и только если они вводят команду. Очевидно, я новичок в этом. Я был бы признателен за любую помощь. Большое спасибо 🙂

 @client.event
async def on_message(ctx):
    message_author = ctx.author.id
    if message_author == XXXXXXXXXXXXXXXXX:
        await ctx.message.delete()
  

Ответ №1:

В discord rewrite (DiscordPy 1.0 ) больше нет CTX, вместо этого вы должны сделать:

 @client.event
async def on_message(message):
    if message.author.id == XXXXXXXXXXXXXXXXX:
        await message.delete()
  

Источник: ссылка

Ответ №2:

Вы можете создать команду для добавления пользователей в список, затем использовать on_message , чтобы проверить, есть ли пользователь в этом списке, а затем удалить его, если true

 dels=[]

@bot.event
async def on_message(msg):
    if msg.author.id in dels:
        await bot.delete_message(msg)

    await bot.process_commands(msg)


@bot.command(name='del_msg')
async def delete_message(con,*users:discord.Member):
    for i in users:
        dels.append(i.id)

    await con.send("Users {} have been added to delete messages list".format(" ,".join(users)))