如果消息被编辑,反发誓系统不起作用

Anti-swear system not working if message is edited(如果消息被编辑,反发誓系统不起作用)
本文介绍了如果消息被编辑,反发誓系统不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

限时送ChatGPT账号..

基本上,如果您说的不是脏话,然后将消息编辑成脏话,机器人将不会检测到它.我该如何解决?这是我的代码:

Basically if you say something that's not a swear word but then edit the message into a swear word, the bot will not detect it. How do I fix this? Here's my code:

@client.event
async def on_message(message):
    if message.author.bot:
        return
    for badword in file:
        if badword in message.content.lower():
            await message.delete()
            warnMessage = f"Hey {message.author.mention}! Don't say that!"
            await message.channel.send(warnMessage, delete_after=5.0)
            print(f"{message.author.name} tried saying: {badword}")
            channel = client.get_channel(836232733126426666)
            
            embed = discord.Embed(title=f"Someone tried to swear!", colour=0x2D2D2D)
            embed.add_field(name="Person who tried to swear:", value=f"{message.author.name}", inline=False)
            embed.add_field(name="What they tried to say:", value=f"{badword}", inline=False)
            embed.add_field(name="Channel they tried to swear in:", value=f"<#{message.channel.id}>", inline=False)
            
            await channel.send(embed=embed)
            return
            await client.process_commands(message)
    if message.content.startswith('Jason derulo'):
        await message.channel.send('Wiggle wiggle wiggle')
    if message.content.startswith('fast'):
        await message.channel.send('She a runner she a track star')
    await client.process_commands(message)

推荐答案

您可以为此使用 on_message_edit 事件,并使用您在 on_message 事件(只要记住使用 after 参数而不是 message)

You can use the on_message_edit event for that and use the same logic you're using in the on_message event (just remember to use the after arg instead of message)

@client.event
async def on_message_edit(before, after):
    for badword in file:
        if badword in after.content.lower():
            await after.delete()
            warnMessage = f"Hey {after.author.mention}! Don't say that!"
            await after.channel.send(warnMessage, delete_after=5.0)
            print(f"{message.author.name} tried saying: {badword}")
            channel = client.get_channel(836232733126426666)
            
            embed = discord.Embed(title=f"Someone tried to swear!", colour=0x2D2D2D)
            embed.add_field(name="Person who tried to swear:", value=f"{message.author.name}", inline=False)
            embed.add_field(name="What they tried to say:", value=f"{badword}", inline=False)
            embed.add_field(name="Channel they tried to swear in:", value=f"<#{message.channel.id}>", inline=False)
            
            return await channel.send(embed=embed)

参考:

  • on_message_edit
  • 这篇关于如果消息被编辑,反发誓系统不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

    本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

How do I make a list of all members in a discord server using discord.py?(如何使用 discord.py 列出不和谐服务器中的所有成员?)
how to change discord.py bot activity(如何更改 discord.py 机器人活动)
Issues with getting VoiceChannel.members and Guild.members to return a full list(让 VoiceChannel.members 和 Guild.members 返回完整列表的问题)
Add button components to a message (discord.py)(将按钮组件添加到消息(discord.py))
on_message() and @bot.command issue(on_message() 和@bot.command 问题)
How to edit a message in discord.py(如何在 discord.py 中编辑消息)