使用JSON为我的不和谐服务器创建一个调平系统

时间:2020-05-11 16:16:59

标签: python json python-3.x

您好,我为不和谐的服务器创建了一个机器人,该机器人可以在用户聊天时将其升级,并且只是为了能够检查所有事情,因此在处理数据时有一些临时消息行。这是代码:

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()函数中,它应该向用户发送一条消息,说“欢迎”,并初始化文件以存储要存储的变量。但是,这两者都不起作用,而且我似乎无法修复。如果有人可以帮助,那将是非常有用的!

1 个答案:

答案 0 :(得分:0)

对于与我有相同问题的任何人,请检查所有装饰器(@client.event)是否在功能之前。我错过了一个,这就是造成我的问题的原因!