【问题标题】:How can i get discord.py to display name while logging every message to a file?在将每条消息记录到文件时,如何让 discord.py 显示名称?
【发布时间】:2020-03-31 17:39:36
【问题描述】:

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

忽略 on_message 中的异常 回溯(最近一次通话最后): _run_event 中的文件“C:\Program Files (x86)\Python38-32\lib\site-packages\discord\client.py”,第 270 行 等待 coro(*args, **kwargs) 类型错误: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()

【问题讨论】:

    标签: python


    【解决方案1】:

    on_message 不使用 ctx,因此将其从函数中删除,而不是 ctx.message.author 使用 message.author

    【讨论】:

      【解决方案2】:

      首先on_message discord.py event不带ctx,只带message,这是直接导致错误的原因。

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

      另外,考虑使用PEP-8 naming convention,它可以让您的代码看起来更漂亮、更易于阅读。 例如,你使用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()
      

      【讨论】:

        猜你喜欢
        • 2021-05-11
        • 2021-05-17
        • 2021-04-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-06
        • 1970-01-01
        • 2018-03-10
        • 1970-01-01
        相关资源
        最近更新 更多