Bonjour,

Pour les besoins d'un bot Discord, je cherche à ajouter/retirer des éléments dans un fichier JSON dont voici un exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[
	{
		"message": "641322395944091648",
		"channel": "434659393548845058",
		"reactions": [
			{
				"emoji": "🎮",
				"role": "641293549501022234"				]
			},
			{
				"emoji": "🎧",
				"role": "641392846951153689"
			}
		]
	},
	{
		"message": "641322395941234567",
		"channel": "434659393548841234",
		"reactions": [
			{
				"emoji": "🎲",
				"role": "641293549501029876"				]
			},
			{
				"emoji": "🎨",
				"role": "641392846951155432"
			}
		]
	}
]
Voici ce que j'ai fait jusque maintenant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
const roles = require("../data/roles.json");
const fs = require("fs");
 
exports.run = async (bot, message, args) => {
	function checkReactions(e) {
		for (var { channel, message: message_id, reactions } of roles) {
			for (var {emoji} of reactions) {
				emoji = bot.cleanEmojiDiscriminator(e);
				if (emoji === e) return true;
			}
		}
		return false;
	}
 
	function checkMessages(id) {
		for (var { channel, message: message_id, reactions } of roles) {
			if (message_id.toString() === id.toString()) return true;
		}
		return false;
	}
	/* USAGE :
	!rolereaction add <channel_id> <message_id> <emoji_id> <role id>
	!rolereaction remove <channel_id> <message_id> <emoji_id> <role id>
	*/
	if (!args[0]) {
		return message.reply(", tu dois préciser une commande.");
	}
	var cmd = args[0];
	if (cmd === "add") { // adds a new rolereaction or a new emoji/role for the specified message in the specified channel
		if (args[1] && args[2] && args[3] && args[4]) {
			var channel = await bot.channels.get(args[1].toString()).catch (error => {
				console.error(error);
				return message.reply(", l'id du salon n'est pas un ID valide.");
			});
			var msg = await channel.fetchMessage(args[2].toString()).catch (error => {
				console.error(error);
				return message.reply(", l'id du message n'est pas un ID valide.");
			});
			var emoji = bot.cleanEmojiDiscriminator(args[3]); // This returns emoji without starting and ending :
			var role = await member.guild.roles.find(r => r.id === args[1].toString()).catch (error => {
				console.error(error);
				return message.reply(", l'id du rôle n'est pas un ID valide.");
			});
			// checks if we already have this message in roles
			if (checkMessages(args[2]) {
				// The message was found, checking reactions
				if (!checkReactions(emoji)) {
					// This emoji doesn't exist in roles for this message, adding it
					// TODO
				} else {
					// This emoji already exists
					return message.reply(", cet emoji est déjà utilisé pour ce message.");
				}
			}
			else {
				// This message doesn't exist. We must create and add the message
				// TODO
			}
		} else return message.reply(", tu dois préciser <id du salon> <id du message> <emoji> <id du rôle>.");
	}
	else if (cmd === "remove") {
		// TODO
	}
	else return message.reply(", tu dois utiliser la commande add ou remove.");
}
 
exports.help = {
	name: "rolereaction"
}
J'ai placé des // TODO aux endroits où je bloque. Est-ce que quelqu'un pourrait m'expliquer comment faire pour ajouter/retirer les informations au bon endroit afin de pouvoir, ensuite, utiliser :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
fs.writeFile("./data/roles.json", JSON.stringify(roles), (err) => {
	if (err) console.error(err);
});
Merci d'avance.