[英]How can i get discord.py to display name while logging every message to a file?
我的問題是,我無法讓我的機器人顯示成員作者、日期和消息。 這是錯誤:
忽略 on_message Traceback 中的異常(最近一次調用最后一次):文件“C:\\Program Files (x86)\\Python38-32\\lib\\site-packages\\discord\\client.py”,第 270 行,在 _run_event await 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()
on_message
不接受ctx
所以從函數中刪除它,而不是ctx.message.author
使用message.author
首先on_message discord.py 事件不接受ctx
,它只接受message
,這是直接導致錯誤的原因。
然后你正在使用 + 的 python 連接方法,這還不錯,但是 python 的f-strings更好地格式化字符串,因為 f-strings 直接將變量類型轉換為字符串(所以不需要使用 str() 函數)
另外,請考慮使用PEP-8 命名約定,這會使您的代碼看起來更漂亮、更易於閱讀。 例如,你使用messagestr = ""
,對於 python 的解釋器,這沒問題,不會拋出錯誤,但對於人類來說,這真的很難用,在 python 中你應該使用snake_case所以messagestr
會變成message_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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.