Skip to content

Commit c3d4c3d

Browse files
committed
Modification de la commande menu
- Correction d'une erreur obtenue lors de l'exécution de la commande - Mise en place d'un sélecteur de date et un select menu ⚠Pourrait ne pas fonctionner ! Merci à @NaelDevn #6 pour son aide
1 parent e4406fb commit c3d4c3d

File tree

5 files changed

+237
-148
lines changed

5 files changed

+237
-148
lines changed

commands/cours.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,14 @@ module.exports = {
5353
(subHomeworks.length && !coursIsAway ? `\n⚠**__\`${subHomeworks.length}\` Devoirs__**` : "") +
5454
(coursIsAway ? "\n🚫__**Cour annulé**__" : ""));
5555

56-
if (cour.status && (!coursIsAway || cour.statut !== "Cours annulé")) {
57-
embed.addFields([
58-
{
59-
name: "Status",
60-
value: "__**" + cour.status + "**__"
61-
}
62-
]);
63-
}
56+
if (cour.status && (!coursIsAway || cour.statut !== "Cours annulé")) {
57+
embed.addFields([
58+
{
59+
name: "Status",
60+
value: "__**" + cour.status + "**__"
61+
}
62+
]);
63+
}
6464
return embed;
6565
}).filter(emb => !!emb);
6666

@@ -73,9 +73,9 @@ module.exports = {
7373
name: emb.author.name,
7474
value: emb.description,
7575
inline: false
76-
}
76+
};
7777
})
78-
)
78+
);
7979
embedCours = [embed];
8080
}
8181

commands/menu.js

Lines changed: 46 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,27 @@
1-
const { EmbedBuilder } = require("discord.js");
1+
const { EmbedBuilder, ApplicationCommandOptionType, SelectMenuBuilder, ActionRowBuilder } = require("discord.js");
22

33
module.exports = {
44
data: {
55
description: "Vous fournis le menu d'aujourd'hui",
6-
options: []
7-
,
6+
options: [
7+
{
8+
type: ApplicationCommandOptionType.String,
9+
name: "date",
10+
description: "Sélectionnez la date du menu souhaité",
11+
required: false,
12+
autocomplete: true
13+
}
14+
],
815
},
916
execute: async (client, interaction) => {
10-
await client.session.menu().then(async (menus) => {
17+
const dateUser = interaction.options.getString("date");
18+
let date = new Date();
19+
if (dateUser) {
20+
let parsed = dateUser.split("/");
21+
date = new Date(parseInt(parsed[2]), parseInt(parsed[1]) - 1, parseInt(parsed[0]));
22+
}
23+
24+
await client.session.menu(date).then(async (menus) => {
1125
const menu = menus[0];
1226

1327
const embed = new EmbedBuilder()
@@ -16,12 +30,13 @@ module.exports = {
1630
if (menu) embed
1731
.setDescription(`Menu du ${menu.date}`)
1832
.setTimestamp(new Date(menu.date))
19-
.addFields(menu.meals.map((meal) => {
33+
.addFields(menu.meals[0].map((meal) => {
34+
meal = meal[0];
2035
return {
2136
name: meal.name,
2237
value: meal.labels.map((label) => {
2338
return `• ${label}`;
24-
}),
39+
}).join("\n") || "\u200b",
2540
inline: false
2641
};
2742
}));
@@ -32,9 +47,33 @@ module.exports = {
3247
.setDescription("Cette commande est en cours de développement. Comme le développeur ne possède pas les menus sur son pronote, il ne peut pas tester correctement cette commande. Si vous rencontrez des problèmes ou que vous voulez aider, merci de contacter le développeur sur github.")
3348
.setColor("#FFA500");
3449

50+
const current = new Date(date.getTime());
51+
const week = [];
52+
for (let i = 1; i <= 7; i++) {
53+
let first = current.getDate() - current.getDay() + i;
54+
let day = new Date(current.setDate(first));
55+
if (day.getDay() !== 0) week.push(day);
56+
}
57+
let weekString = ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"];
58+
59+
const selectMenu = new SelectMenuBuilder()
60+
.setCustomId("menus_date")
61+
.setPlaceholder("Sélectionnez une date pour voir les cours")
62+
.addOptions(week.map((day) => {
63+
return {
64+
label: day.toLocaleDateString(),
65+
value: day.toLocaleDateString(),
66+
description: weekString[day.getDay()] + " " + day.toLocaleDateString().split("/")[0],
67+
default: day.toLocaleDateString() === date.toLocaleDateString()
68+
};
69+
}))
70+
.setMaxValues(1)
71+
.setMinValues(1);
72+
73+
3574
return await interaction.editReply({
3675
embeds: [embed, warnEmbed],
37-
components: [client.bugActionRow]
76+
components: [new ActionRowBuilder().addComponents(selectMenu), client.bugActionRow]
3877
});
3978
});
4079

events/selectMenu.js

Lines changed: 70 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -91,14 +91,14 @@ module.exports = async (client, interaction) => {
9191
(subHomeworks.length && !coursIsAway ? `\n⚠**__\`${subHomeworks.length}\` Devoirs__**` : "") +
9292
(coursIsAway ? "\n🚫__**Cour annulé**__" : ""));
9393

94-
if (cour.status && (!coursIsAway || cour.statut !== "Cours annulé")) {
95-
embed.addFields([
96-
{
97-
name: "Status",
98-
value: "__**" + cour.status + "**__"
99-
}
100-
]);
101-
}
94+
if (cour.status && (!coursIsAway || cour.statut !== "Cours annulé")) {
95+
embed.addFields([
96+
{
97+
name: "Status",
98+
value: "__**" + cour.status + "**__"
99+
}
100+
]);
101+
}
102102
return embed;
103103
}).filter(emb => !!emb);
104104

@@ -112,9 +112,9 @@ module.exports = async (client, interaction) => {
112112
name: emb.author.name,
113113
value: emb.description,
114114
inline: false
115-
}
115+
};
116116
})
117-
)
117+
);
118118
embedCours = [embed];
119119
}
120120

@@ -153,6 +153,66 @@ module.exports = async (client, interaction) => {
153153
components: [new ActionRowBuilder().addComponents(selectMenu)]
154154
});
155155
});
156+
} else if (interaction.customId === "menus_date") {
157+
const value = interaction.values[0].split("/");
158+
159+
const date = new Date(parseInt(value[2]), parseInt(value[1]) - 1, parseInt(value[0]));
160+
161+
await client.session.menu(date).then(async (menus) => {
162+
const menu = menus[0];
163+
164+
const embed = new EmbedBuilder()
165+
.setTitle("Menu du jour")
166+
.setColor("#70C7A4");
167+
if (menu) embed
168+
.setDescription(`Menu du ${menu.date}`)
169+
.setTimestamp(new Date(menu.date))
170+
.addFields(menu.meals[0].map((meal) => {
171+
meal = meal[0];
172+
return {
173+
name: meal.name,
174+
value: meal.labels.map((label) => {
175+
return `• ${label}`;
176+
}).join("\n") || "\u200b",
177+
inline: false
178+
};
179+
}));
180+
else embed.setDescription("Aucun menu n'a été trouvé pour aujourd'hui");
181+
182+
const warnEmbed = new EmbedBuilder()
183+
.setTitle("Attention")
184+
.setDescription("Cette commande est en cours de développement. Comme le développeur ne possède pas les menus sur son pronote, il ne peut pas tester correctement cette commande. Si vous rencontrez des problèmes ou que vous voulez aider, merci de contacter le développeur sur github.")
185+
.setColor("#FFA500");
186+
187+
const current = new Date(date.getTime());
188+
const week = [];
189+
for (let i = 1; i <= 7; i++) {
190+
let first = current.getDate() - current.getDay() + i;
191+
let day = new Date(current.setDate(first));
192+
if (day.getDay() !== 0) week.push(day);
193+
}
194+
let weekString = ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"];
195+
196+
const selectMenu = new SelectMenuBuilder()
197+
.setCustomId("menus_date")
198+
.setPlaceholder("Sélectionnez une date pour voir les cours")
199+
.addOptions(week.map((day) => {
200+
return {
201+
label: day.toLocaleDateString(),
202+
value: day.toLocaleDateString(),
203+
description: weekString[day.getDay()] + " " + day.toLocaleDateString().split("/")[0],
204+
default: day.toLocaleDateString() === date.toLocaleDateString()
205+
};
206+
}))
207+
.setMaxValues(1)
208+
.setMinValues(1);
209+
210+
211+
interaction.message.edit({
212+
embeds: [embed, warnEmbed],
213+
components: [new ActionRowBuilder().addComponents(selectMenu), client.bugActionRow]
214+
});
215+
});
156216
} else if (interaction.customId === "content_select") {
157217
const value = interaction.values[0].split(/-/);
158218
const subject = value[0];

0 commit comments

Comments
 (0)