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