【问题标题】:How to handle "HTTPException raise" during "message.attachments" deletion如何在“message.attachments”删除期间处理“HTTPException raise”
【发布时间】:2021-07-16 16:23:15
【问题描述】:

我的自动审核包含一个@Cog.listener(),用于检查邮件是否包含附件中的图像。如果是这样,它将自动被删除(以避免 NSFW 的东西)。

问题在于,上述事件触发了另一个监听器,如下所示:

@Cog.listener()
async def on_message_delete(self, message):
    if not message.author.bot:
        embed = Embed(title="Message deletion",
                      description=f"Action by {message.author.display_name}.",
                      colour=message.author.colour,
                  timestamp=datetime.utcnow())

        fields = [("Content", message.content, False)]

        for name, value, inline in fields:
            embed.add_field(name=name, value=value, inline=inline)

        await self.log_channel.send(embed=embed)

由于初始 msg(附加了 img)不包含值,它引发“HTTPException:400 Bad Request”,这也触发了我的错误处理程序。 您可以在以下链接中查看整个错误日志和我的错误处理程序:bin

我一直在努力寻找一种方法来阻止我的on_message_delete 启动,但我什么也没得到。我真的不在乎删除的附件是否不会在我的日志中报告。我只是想防止错误被填充。

任何建议/想法都将受到高度赞赏。 提前致谢

【问题讨论】:

  • 您可以添加另一个 if 语句来检查该邮件是否有附件?如果问题是消息没有内容,只需添加一个 if 语句来检查。例如。 if message.content == None: message_content = "No Content"
  • 如果邮件被删除,message.content 是一个空字符串,而不是 None。非常感谢您的回答

标签: python error-handling discord.py


【解决方案1】:

您正在尝试获取已删除邮件的内容。这就是您收到 http 错误的原因。

【讨论】:

    【解决方案2】:
    message_content = message.content if message.content else "No Content"
    fields = [("Content", f"{message_content}", False)]
    

    以上内容适用于内容被删除的情况(因此是一个空字符串)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 2021-12-29
      • 2014-02-28
      相关资源
      最近更新 更多