您好,我为不和谐的服务器创建了一个机器人,该机器人可以在用户聊天时将其升级,并且只是为了能够检查所有事情,因此在处理数据时有一些临时消息行。这是代码:
async def add_xp(amount, user, message):
if message.author.bot:
return
elementlist = []
with open("users/" + user + ".json", "r") as testfile:
data = json.load(testfile)
await message.channel.send("file loaded 1")
for element in data:
await elementlist.append(data[element])
await message.channel.send(element + ":", data[element])
level = elementlist[0]
xp = elementlist[1]
xp_to_next = elementlist[2]
await message.channel.send("variables initialised")
xp += amount
await message.channel.send("XP updated")
if xp >= xp_to_next:
xp -= xp_to_next
level += 1
xp_to_next = xp_to_next * 2
await message.channel.send("Level Up")
data = {"level": level,
"xp": xp,
"xp_to_next": xp_to_next}
await message.channel.send("data declared")
with open("users/" + user + ".json", "w") as testfile:
await json.dump(data, testfile)
await message.channel.send("Data Dumped")
async def on_member_join(member):
await member.create_dm()
await member.dm_channel.send(f'Hi {member.name}, welcome to my Discord server!')
with open("users/" + str(member) + ".json", "a") as testfile:
data = {"level": 0,
"xp": 0,
"xp_to_next": 0}
data = json.dump(data, testfile)
@client.event
async def on_message(message):
if message.author == client.user:
return
user = str(message.author)
add_xp(1, user, message)
并获得以下输出:
Ignoring exception in on_message
Traceback (most recent call last):
File "C:\Users\Daniel\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\client.py", line 312, in _run_event
await coro(*args, **kwargs)
File "C:/Users/Daniel/Desktop/DAN/1/8/0/1/PROGRAMMING/LegacyCoding/DiscordTutorialBot/Bot1/Test1.py", line 77, in on_message
await add_xp(1, user, message)
File "C:/Users/Daniel/Desktop/DAN/1/8/0/1/PROGRAMMING/LegacyCoding/DiscordTutorialBot/Bot1/Test1.py", line 23, in add_xp
with open("users/" + user + ".json", "r") as testfile:
FileNotFoundError: [Errno 2] No such file or directory: 'users/danhowe0#2790.json'
在on_member_join()
函数中,它应该向用户发送一条消息,说“欢迎”,并初始化文件以存储要存储的变量。但是,这两者都不起作用,而且我似乎无法修复。如果有人可以帮助,那将是非常有用的!
答案 0 :(得分:0)
对于与我有相同问题的任何人,请检查所有装饰器(@client.event
)是否在功能之前。我错过了一个,这就是造成我的问题的原因!