В вашем коде вы назначаете x
совершенно новый словарь с одной парой ключ / значение. Затем вы записываете этот словарь в тот же файл JSON, который читаете. Вместо этого вам следует обновить словарь, который вы загрузили из файла JSON, и записать обновленный словарь обратно в файл. Ваш код должен быть:
async def work(ctx):
money = json.load(open("money.json", "r"))
oldmny = [str(ctx.author.id)]
newmny = random.randint(10,100)
nowmny = oldmny + newmny
money[ctx.author.id] = nowmny
json.dump(money, open("money.json", "w+"), indent = 4)
Обратите внимание, однако, что вы используете JSON в качестве хранилища данных, и любое обновление, даже одного элемента (как в вашем случае), потребует полного чтение и полная запись всего файла. Это не совсем то, для чего нужны файлы JSON. Они больше подходят для отправки данных между процессами или для записи нечасто загружаемых и, что еще реже, обновляемых данных.