Python 如何使discord.py在将每条消息记录到文件时显示名称?

Python 如何使discord.py在将每条消息记录到文件时显示名称?,python,Python,我的问题是,我无法让我的机器人显示成员作者、日期和消息。以下是错误: 忽略on_消息中的异常 回溯(最近一次呼叫最后一次): 文件“C:\Program Files(x86)\Python38-32\lib\site packages\discord\client.py”,第270行,在运行事件中 等待coro(*args,**kwargs) TypeError:on_message()缺少1个必需的位置参数:“ctx” 我的代码: @commands.Cog.listener() as

我的问题是,我无法让我的机器人显示成员作者、日期和消息。以下是错误:

忽略on_消息中的异常 回溯(最近一次呼叫最后一次): 文件“C:\Program Files(x86)\Python38-32\lib\site packages\discord\client.py”,第270行,在运行事件中 等待coro(*args,**kwargs) TypeError:on_message()缺少1个必需的位置参数:“ctx”

我的代码:

@commands.Cog.listener()
    async def on_message(self, message, ctx):
        #await client.send_message(message.channel, discord.Message.author)
        messagestr = ""
        messagestr = ('{0.content}'.format(message))
        file_open()
        print(device_time()+" "+ctx.message.author+" "+"Message: "+messagestr)
        out1 = ""
        out1 = messagestr
        f1 = open('logs.txt','a')

        out1 = out1.replace('\n', '')
        out1 = (device_time()+" "+out1+'\r')
        f1.write(device_time()+" "+"Message: "+messagestr)
        f1.close()
        f1.close()

消息上的
不接受
ctx
,因此将其从函数中删除,而不是
ctx.message.author
使用
message.author
首先不接受
ctx
,它只接受
message
,这是导致错误的直接原因

然后,您将使用+的python连接方法,这种方法不错,但python的方法更好,可以将字符串格式化为f字符串,直接将变量类型转换为字符串(因此无需使用str()函数)

另外,考虑使用哪种方法使代码看起来更漂亮、更容易阅读。 例如,您使用
messagestr=“”
,对于python的解释器来说,这是可以的,不会引发错误,但对于人类来说,这真的很难使用,在python中,您应该使用
messagestr
,因此
message\u str=None

下面是我应该做的:

@commands.Cog.listener()
    async def on_message(self, message):
        #await client.send_message(message.channel, str(message.author))
        message_str = message.content
        file_open()
        print(f'{device_time()} {message.author} Message: {messagestr}')
        out = message_str.replace('\n', '')
        file = open('logs.txt','a')

        out = f'{device_time()} {out} \r' #Note : message.created_at would be a useful function here to replace device_time()
        file.write(f'{device_time()} Message: {message_str}')
        file.close()