Comment créer un système de devises dans discord.py? [fermé]

Aug 28 2020

J'ai récemment créé un robot discord en python et je voulais y ajouter un système de devises. Je veux pouvoir stocker et rappeler le solde de chaque joueur. Tous les conseils sur où commencer ou les liens vers des vidéos seront vraiment utiles. Merci d'avance!

Réponses

StarbuckBarista Aug 28 2020 at 08:39

J'ai un système comme celui-ci est mon bot, je l'ai fait en stockant mes données dans un fichier JSON. Vous pouvez le faire en créant simplement un fichier TXT nommé data.txt et en le tapant à l'intérieur. Assurez-vous également d'importer le module JSON.

{points: []}

Ensuite, dans votre code python, vous pouvez faire quelque chose comme ça.

with open("data.txt") as json_file:
    points = json.load(json_file)

for user in points["points"]:
    if user["id"] == ctx.author.id:
        point_num = user["points"]

await ctx.send(f"You have {point_num} points")

with open("data.txt", "w") as outfile:
    json.dump(points, outfile)

Et si jamais vous vouliez ajouter des points, vous pourriez faire quelque chose comme ça.

with open("data.txt") as json_file:
    points = json.load(json_file)

for user in points["points"]:
    if user["id"] == member.id:
        user["points"] += amount

with open("data.txt", "w") as outfile:
    json.dump(points, outfile)

Vous pouvez rencontrer des problèmes comme chaque utilisateur n'ayant pas son propre stockage, donc au début de votre configuration, vous devez attribuer à chacun son propre stockage comme tel.

with open("data.txt") as json_file:
    points = json.load(json_file)

for user in ctx.guild.members:
    points.append({
"id": member.id,
"points": 0    
})

with open("data.txt", "w") as outfile:
    json.dump(points, outfile)

Cela garantirait que tous les membres de la guilde Discord disposent de leur propre stockage. Vous pouvez donc maintenant supprimer ce code après l'avoir exécuté une fois et vous être assuré qu'il est enregistré dans le fichier TXT. Nous devrions maintenant ajouter du code qui nous assurera que tous les nouveaux obtiennent du stockage. Alors, créez une nouvelle instance de l'événement on_member_join et mettez-la à l'intérieur.

with open("data.txt") as json_file:
    points = json.load(json_file)

points["points"].append({
    "id": member.id,
    "points": 0,
})

with open("data.txt", "w") as outfile:
    json.dump(points, outfile)

Et vous devriez avoir fini! Désolé pour ce message si long, c'est juste que faire ce genre de chose prend du temps. J'espère que vous avez compris cela et avez réussi à faire de votre système économique. Si vous avez des questions, n'hésitez pas et commentez-le, ne vous inquiétez pas, je le verrai!