当前位置: 首页 > 知识库问答 >
问题:

如何让discord.py显示名称,同时将每条消息记录到文件?

洪飞扬
2023-03-14

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

忽略异常在on_messageTraceback(最近的调用最后):文件"C:\Program Files(x86)\Python38-32\lib\site-包\discord\client.py",第270行,在_run_event等待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()

共有2个答案

越嘉树
2023-03-14

首先是关于信息不一致。py事件不接受ctx,它只接受消息,这是直接导致错误的原因。

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

另外,考虑使用PEP-8命名约定,这会使代码看起来更漂亮、更易于阅读。例如,您使用messagestr=“”,对于python的解释器来说,这是可以的,不会抛出错误,但是对于人类来说,这非常难看,在python中您应该使用snake\u case,因此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()
唐钊
2023-03-14

消息上的不接受ctx,因此将其从函数中删除,而不是ctx。消息作者使用消息。作者

 类似资料:
  • 我在ReactJS中工作,我通过API从服务器获取数据。我做了一些搜索过滤,我想显示消息,如果没有记录可用?我是ReactJS的初学者,没有太多关于ReactJS的知识。 代码:

  • 问题内容: 我正在使用logback / slf4j进行日志记录。我想解析我的日志文件以分析一些数据,所以我不想解析一个很大的大文件(主要由调试语句组成),而是要有两个记录器实例,每个实例都记录到一个单独的文件中。一种用于分析,另一种用于通用日志记录。有谁知道使用Logback或其他任何记录器是否可行? 问题答案: 很可能在logback中执行类似的操作。这是一个示例配置: 然后,您将设置两个单独

  • 我正在编写一个Kafka Streams应用程序。它执行以下步骤“1)消耗输入数据2)在1小时窗口内根据新密钥消重记录3)重新选择密钥4)在1小时窗口内计数密钥5)发送到下游。 我是Kafka流的新手。我的理解是,为了将窗口保持为1小时,我将 也设置为1小时。这是正确的做法吗? 一旦我部署了我的应用程序与真实的流量,它似乎应用程序不断发送消息,而我认为它每小时只会发送一堆消息? 感谢任何帮助!!

  • 问题内容: 我可以将所有消息定向到log.txt文件: 但是我也如何在控制台中获取日志消息? 问题答案: 使用 MultiWriter创建一个写入器,该写入器将其写入复制到所有提供的写入器中,类似于Unix tee(1)命令

  • ,日志记录将进入一个文件; (路径)/service_name/service_name.log 我想用logback复制这种行为,但在logback.xml配置中获取“logger”名称时遇到了真正的困难。它可以在log encoder.pattern中看到,即“%d%-5level%logger{35}-%msg%n”。