我想记录每条消息从一个服务器到一个文件,但我得到错误



我想记录每条消息从一个服务器到一个文件,但我得到错误,有人可以帮助我,请

@client.event
async def on_message(message):
async for message in message.channel.history(limit=1):
file1 = open("MyFile.txt","a")
file1.write("msg: "+str(message.content)+" " +str(message.channel)+" "+str(message.author))
file1.close()

误差

Traceback (most recent call last):
File "C:UsersviktoAppDataLocalPackagesPythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0LocalCachelocal-packagesPython39site-packagesdiscordclient.py", line 343, in _run_event
await coro(*args, **kwargs)
File "c:UsersviktoOneDriveDesktopselfbotmain.py", line 73, in on_message
file1.write("msg: "+str(message.content)+" " +str(message.channel)+" "+str(message.author))
File "C:Program FilesWindowsAppsPythonSoftwareFoundation.Python.3.9_3.9.1776.0_x64__qbz5n2kfra8p0libencodingscp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 39-40: character maps to <undefined>
Ignoring exception in on_message
Traceback (most recent call last):```

为什么不使用logging模块?

import logging
from logging.handlers import RotatingFileHandler
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
logger.addHandler(RotatingFileHandler('MyFile.log', maxBytes=1e+7, delay=True))
logger.setLevel(logging.INFO)

@client.event
async def on_message(message):
async for message in message.channel.history(limit=1):
logger.info("msg %s %s %s", message.content, message.channel, message.author)

看起来像你的charmap编解码器,你可能想尝试在打开MyFile.txt

时添加"encoding到utf-8
@client.event
async def on_message(message):
async for message in message.channel.history(limit=1):
file1 = open("MyFile.txt","a", encoding="utf-8")
file1.write("msg: "+str(message.content)+" " +str(message.channel)+" "+str(message.author)+"n")
file1.close()

我也建议你在末尾加一行,但这取决于你自己

相关内容

最新更新