簡體   English   中英

如何在將每條消息記錄到文件時讓 discord.py 顯示名稱?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM