【问题标题】:discord.py - on_message spam - jump_urldiscord.py - on_message 垃圾邮件 - jump_url
【发布时间】:2021-11-26 09:15:55
【问题描述】:

我正在开发一个日志记录机器人。为此,我使用on_message 和jump_url 来检测链接,但是机器人只是向它发送垃圾邮件,我猜这是因为它读取了自己的消息。

我试图通过检查消息作者是否是用户来阻止它,但这并没有解决它。每当我输入任何内容时,它都会记录并显示链接,即使我没有输入任何链接。

这是一个齿轮。

@commands.Cog.listener()
async def on_message(self, message): 
    
    embed=discord.Embed(title="Message from {} contains a link ".format(message.author.name), description="", color=0x607d8b)
    
    embed.set_thumbnail(url="https://cdn.discordapp.com/avatars/9005083965732483134/14fcc0c2d369d9f4d742d9e8471d8536.webp?size=1024")
    embed.add_field(name="Message:" ,value=message.jump_url, inline=True)

代码有效;只是机器人向链接发送垃圾邮件。当我连接到数据库以记录人们选择记录内容的频道时,缺少一些代码,例如 channel.send。

【问题讨论】:

  • 你能告诉我们你用来检查消息是否由机器人发送的代码吗?也许您没有正确进行检查。另一个文件中的 on_message 事件是否也有相同的代码?只是抛出一些想法

标签: discord.py


【解决方案1】:

有几种方法可以解决这个问题,我将向您展示两种可能的方法来避免您的问题。

方法 1 涉及通过其attributes 检查邮件作者message.author 是否为机器人。此方法确保如果用户是机器人,那么 您的 机器人将忽略该消息。

方法 2 只会忽略您自己的机器人。您可以使用self.bot 执行此操作,您可能已在__init__ 中定义了它。有了这个,你可以比较message.author是否是你的机器人,如果是真的你可以忽略它。

请按照上述说明查看以下方法。

    @commands.Cog.listener()
    async def on_message(self, message):
        # Method 1
        if message.author.bot:
            return
        # Method 2
        if message.author == self.bot:
            return
        # Please note: You do not need to use both methods!

【讨论】:

    猜你喜欢
    • 2021-08-17
    • 1970-01-01
    • 2011-07-12
    • 2021-05-11
    • 1970-01-01
    • 2011-01-24
    • 2014-05-19
    • 2013-01-05
    • 1970-01-01
    相关资源
    最近更新 更多