【问题标题】:Discord.py: json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0 )Discord.py:json.decoder.JSONDecodeError:预期值:第 1 行第 1 列(char 0)
【发布时间】:2019-08-09 10:11:26
【问题描述】:

我完全不知道这个错误意味着什么。我用谷歌搜索了一遍,只花了五天时间来解决这个错误。请帮忙。这是一个 Discord 机器人,它使用 Python 保存 XP 系统,并将玩家的信息存储在 .json 文件中。

Ignoring exception in on_message
Traceback (most recent call last):
  File "C:\Users\Michael\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\client.py", line 307, in _run_event
    yield from getattr(self, event)(*args, **kwargs)
  File "JahBot.py", line 208, in on_message
    users = json.load(f)
  File "C:\Users\Michael\AppData\Local\Programs\Python\Python36\lib\json\__init__.py", line 299, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "C:\Users\Michael\AppData\Local\Programs\Python\Python36\lib\json\__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "C:\Users\Michael\AppData\Local\Programs\Python\Python36\lib\json\decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\Michael\AppData\Local\Programs\Python\Python36\lib\json\decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

我将把我的货币代码放在这里:

@client.event
async def on_member_join(member):
    with open('users.json', 'r+') as f:
        users = json.load(f)

    await update_data(users, member)

    with open('users.json', 'w') as f:
        users = json.dump(users, f)
        
@client.event
async def on_message(message):
    with open('users.json', 'r+') as f:
        users = json.load(f)

    await update_data(users, message.author)
    await add_experience(users, message.author, 5)
    await level_up(users, message.author, message.channel)
    
    with open('users.json', 'w') as f:
        users = json.dump(users, f)

async def update_data(users, user):
    if not user.id in users:
        users[user.id] = {}
        users[user.id]['experience'] = 0
        user[user.id]['level'] = 1

async def add_experience(users, user, exp):
    users[user.id]['experience'] += exp

async def level_up(users, user, channel):
    experience = users[user.id]['experience']
    lvl_start = users[user.id]['level']
    lvl_end = int(experience ** (1/4))

    if lvl_start < lvl_end:
        await client.send_message(channel, '{} has leveled up to level {}'.format(user.mention, lvl_end))
        users[user.id]['level'] = lvl_end

【问题讨论】:

  • users.json 是空的,还是以空格开头?
  • 完全是空的
  • 空文件不是有效的 json。将其设为空映射{}
  • 我该怎么做呢?我以前从未使用过 jsons。但是感谢您的帮助!
  • 打开文件并输入这些字符。 JSON 文件只是文本文件。

标签: python discord.py


【解决方案1】:

在你需要放入的json文件中

{

}

当我自己发现时,我觉得自己很愚蠢

【讨论】:

    猜你喜欢
    • 2019-07-04
    • 2021-09-30
    • 2021-03-25
    • 2019-08-21
    • 1970-01-01
    • 2016-03-03
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多