0
votes

Pourquoi mon code ne fonctionne-t-il pas mais n'a pas non plus aucune erreur?

Donc, il n'y a pas d'erreur et pas de problème, mais il ne changera que le fichier JSON? Heres le code: xxx


1 commentaires

On m'a dit de mettre CTX comme le premier param, mais cela ne fonctionne pas non plus. pas d'erreur


4 Réponses :


0
votes

json.load () code> lit le flux de fichiers et renvoie un dictionnaire. Si vous souhaitez modifier la valeur dans le fichier, vous devez ouvrir le fichier en mode écriture et utiliser json.dump () code> pour réécrire le fichier.

with open('users.json', 'w+') as f:
    json.dump(users, f)


0 commentaires

0
votes

Je peux voir deux problèmes.

Tout d'abord votre async def add_experience (utilisateurs, membre, exp): prend déjà un paramètre utilisateurs. Mais vous ouvrez à nouveau le fichier JSON et chargez l'utilisateur de nouveau.

seconde, vous n'écrivez jamais votre expérience ajoutée dans le fichier. Donc, vous mettez à jour le point d'expérience et oubliez-le dès que vous exécutez sur les deux fonctions parce que vous ne l'écrivez jamais.

Peut-être que vous avez eu une faute de frappe dans la 2e fonction et que vous ne vouliez pas lire le fichier à nouveau et écrivez plutôt les points dans le JSON?


0 commentaires

0
votes

Il peut y avoir une erreur dans l'ouverture du fichier. Il est préférable d'utiliser essayer / sauf dans votre code. Ensuite, s'il y a une erreur, vous pouvez voir cela.

dict = {key_value_to_be_added}

with open('filename', 'r') as f:
    data = json.load(f)

data.update(dict)
with open('filename', 'w+') as f:
    json.dump(data, f)


2 commentaires

Si ce n'est pas trop une peine pourriez-vous le modifier directement parce que je passe du mal à submerger


La réponse donnée par Mixno est exactement ce que j'ai dit. Je viens d'expliquer une autre façon de déboguer votre code lorsque vous travaillez avec des fichiers. en utilisant cela est facultatif.



1
votes

Essayez ceci:

@client.command()
@commands.check(is_owner)
async def points_give(member: discord.Member, amount:int=0):
    with open("users.json", "r") as f:
        users = json.load(f)
    await add_experience(users, member, amount)

async def add_experience(users, member, exp):
    users[member.id]["experience"] += exp
    with open('users.json', 'w+') as f:
        json.dump(users, f)


0 commentaires