Discord.py将消息写入文本文件时无法换行、内容异常问题求助
问题原因
- 格式异常:你直接对
Message对象做了字符串转换,没有提取实际的消息文本内容;同时msg.author.id和msg.created_at之间没有添加字段分隔符,导致两个字段拼接粘连。 - 换行失败:你使用了
r+读写模式打开文件,该模式默认文件指针停在文件开头,写入内容时不会自动追加到末尾,若文件原有内容长度长于新写入内容,还会出现残留字符的问题。
修正后的实现代码
@bot.event async def on_message(message): # 过滤机器人自身发送的消息,避免循环写入 if message.author.bot: return # 使用a模式追加写入,自动把内容放到文件末尾 with open("data.txt", "a", encoding="utf-8") as n: # 按字段拼接,每个字段用|分隔,提前提取消息文本内容 write_content = f"\n<{message.content}|{str(message.author)}|{str(message.author.id)}|{str(message.created_at)}>" n.write(write_content)
补充说明
- 打开文件时指定
encoding="utf-8",避免写入非英文字符时出现乱码 - 若不需要保留消息两侧的
<>包裹符,可自行删除拼接逻辑里的对应符号
内容的提问来源于stack exchange,提问作者Koll
相关产品推荐
相关产品推荐

