当前位置: 首页 > 知识库问答 >
问题:

不一致py编辑的消息日志记录问题

郏瀚
2023-03-14

因此,我制作了一些代码,允许我将编辑过的消息记录到某个频道。代码如下:

async def on_message_edit(message_before, message_after):
    embed=discord.Embed(title="{} edited a message".format(message_before, message.author), description="", color=0xFFFF00)
    embed.add_field(name= message_before.content ,value="This is the message before the edit:", inline=True)
    embed.add_field(name= message_after.content ,value="This is the message after the edit", inline=True)
    channel=bot.get_channel(747057143630528563)
    await channel.send(embed=embed) 

但是,当我运行代码时,我得到错误消息:

忽略on_message_edit Traceback(最近一次调用last)中的异常:文件“C:\Users\jackt\AppData\Local\Programs\Python39\lib\site packages\discord\client.py”,第333行,在运行事件等待coro(*args,**kwargs)文件“C:\Users\jackt\Desktop\bot.py”,第92行,在on_message_edit embed=discord中。嵌入(title=“{}编辑了一条消息”。格式(message_before,message.author),description=“,color=0xFFFF00)名称错误:未定义名称“message”

我需要更改代码的哪一部分,我需要更改它的什么?谢谢。

共有2个答案

郎河
2023-03-14

您正在使用消息。作者在定义的第一行:

embed=discord.Embed(title="{} edited a message".format(message_before, message.author), description="", color=0xFFFF00)

然而,从未声明消息,因此您得到的"未定义"错误

对此的一个修复方法是使用:message\u before。著者名称

龚凌
2023-03-14
discord.Embed(title="{} edited a message".format(message_before, message.author), description="", color=0xFFFF00)

实际上应该是

discord.Embed(title="{} edited a message".format(message_before.author.name), description="", color=0xFFFF00)

您之前未定义消息的原因是因为您在此处添加了逗号:message\u before,message。作者。这使python认为它们是两个不同的语句,从而尝试访问消息变量(它不存在)。

相反,您应该在对象之前访问消息_。我添加了。name检索名称,就像使用一样。author只需添加一个用户对象。如果只想提及用户,则可以替换。名称。提及

编辑:同时添加@bot。事件,以便在编辑消息时调用它。代码应该如下所示:

@bot.event
async def on_message_edit(message_before, message_after):
    discord.Embed(title="{} edited a message".format(message_before.author.name), description="", color=0xFFFF00)
    embed.add_field(name= message_before.content ,value="This is the message before the edit:", inline=True)
    embed.add_field(name= message_after.content ,value="This is the message after the edit", inline=True)
    channel=bot.get_channel(747057143630528563)
    await channel.send(embed=embed) 

 类似资料:
  • 我试图实现log4j日志记录类。代码的包结构如下所述。目前我的log4j.properties放在包的资源下。 我有时确实会得到日志,但有时调试器会显示“log4j: WARN无法为记录器找到附加程序”所以我最后得到了: 我应该在哪里放置log4j.properties来获得MyTest中一致的日志? 同一个项目可以在不同的包中有多个log4j.properties吗? 如何将调试器/编译器的lo

  • 问题内容: 我正在使用Python日志记录,由于某种原因,我的所有消息都出现两次。 我有一个配置日志记录的模块: 稍后,我调用此方法来配置日志记录: 然后,在buy_ham模块中,我将调用: 由于某种原因,所有消息都出现两次。我注释掉其中一个流处理程序,还是一样。有点奇怪,不确定为什么会这样…大声笑。假设我错过了一些显而易见的事情。 干杯,维克多 问题答案: 您正在调用两次(也许使用的方法):将返

  • 问题内容: 对于以下代码: 产生以下警告: 日志记录格式插值(W1202): 在日志记录函数中使用%格式,并将%参数作为参数传递。在日志记录语句的调用形式为“ logging。(format_string.format(format_args …))”时使用。这样的调用应改为使用%格式,但通过将参数作为参数传递,将插值留给日志记录函数。 我知道我可以关闭此警告,但我想理解它。我假定使用是在Pyth

  • 我希望将具有特定记录器名称、特定级别和更高级别(例如和更高级别)的消息记录到特定日志处理程序(例如文件处理程序),同时仍将所有日志消息发送到控制台。Python是2.7版。 到目前为止,我尝试创建了两个记录器: 根记录器 命名记录器 对于根记录器,我附加了,并将日志级别设置为。 然后,我将一个处理程序附加到命名记录器,并将该记录器的级别设置为。 当我现在调用使用命名记录器的模块时,我不再获得传播到

  • 本文向大家介绍C#记录消息到日志文件的方法,包括了C#记录消息到日志文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#记录消息到日志文件的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 我希望我的机器人发送一条消息,然后使用以下值每分钟编辑一次: 我尝试了以下代码,但不幸的是,它不起作用。 它不显示缓存的用户数,而是显示“”。