feat(utils): don't asks for grinders if rewards are disabled
Some checks failed
Build and Push Docker Image / build (push) Failing after 18s
Some checks failed
Build and Push Docker Image / build (push) Failing after 18s
This commit is contained in:
@@ -12,97 +12,101 @@ export const askForGrinders = async (quest: QuestResult, client: Client) => {
|
|||||||
return questLogger.fatal("Invalid 'DISCORD_ADMIN_CHANNEL'");
|
return questLogger.fatal("Invalid 'DISCORD_ADMIN_CHANNEL'");
|
||||||
}
|
}
|
||||||
|
|
||||||
const top10 = quest.participants
|
let exclude: string[] = [];
|
||||||
.filter((x) => !env.QUEST_EXCLUDE.includes(x.username))
|
if (env.QUEST_REWARDS) {
|
||||||
.sort((a, b) => b.xp - a.xp)
|
const top10 = quest.participants
|
||||||
.slice(0, 10)
|
.filter((x) => !env.QUEST_EXCLUDE.includes(x.username))
|
||||||
.map((p, i) => `${i + 1}. ${p.username} - ${p.xp}xp`)
|
.sort((a, b) => b.xp - a.xp)
|
||||||
.join("\n");
|
.slice(0, 10)
|
||||||
|
.map((p, i) => `${i + 1}. ${p.username} - ${p.xp}xp`)
|
||||||
|
.join("\n");
|
||||||
|
|
||||||
const color = parseInt(quest.quest.promoImagePrimaryColor.substring(1), 16);
|
const color = parseInt(quest.quest.promoImagePrimaryColor.substring(1), 16);
|
||||||
|
|
||||||
await adminChannel.send({
|
|
||||||
content: `-# ||${env.DISCORD_ADMIN_MENTION}||`,
|
|
||||||
embeds: [
|
|
||||||
{
|
|
||||||
title: "Quête terminée !",
|
|
||||||
color,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Top 10 XP",
|
|
||||||
description: top10,
|
|
||||||
color,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Qui a grind ?",
|
|
||||||
description:
|
|
||||||
"Merci d'entrer les pseudos des joueurs qui ont grind.\n\nFormat:```@LBF laulau,Yuno,...```\n**Attention les majuscules comptent**\nPour entrer la liste des joueurs, il faut __mentionner le bot__, si personne n'a grind, `@LBF tg`",
|
|
||||||
color,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
});
|
|
||||||
|
|
||||||
const filter = (msg: Message) =>
|
|
||||||
msg.channel.id === adminChannel.id &&
|
|
||||||
!msg.author.bot &&
|
|
||||||
msg.content.startsWith(`<@${client.user!.id}>`);
|
|
||||||
|
|
||||||
let confirmed = false;
|
|
||||||
let answer: string | null = null;
|
|
||||||
while (!confirmed) {
|
|
||||||
const collected = await adminChannel.awaitMessages({ filter, max: 1 });
|
|
||||||
answer = collected.first()?.content || null;
|
|
||||||
if (!answer) continue;
|
|
||||||
|
|
||||||
answer = answer.replace(`<@${client.user!.id}>`, "").trim();
|
|
||||||
if (answer.toLowerCase() === "tg") {
|
|
||||||
answer = "";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const players = answer
|
|
||||||
.split(",")
|
|
||||||
.map((x) => x.trim())
|
|
||||||
.filter(Boolean);
|
|
||||||
await adminChannel.send({
|
await adminChannel.send({
|
||||||
|
content: `-# ||${env.DISCORD_ADMIN_MENTION}||`,
|
||||||
embeds: [
|
embeds: [
|
||||||
{
|
{
|
||||||
title: "Joueurs entrés",
|
title: "Quête terminée !",
|
||||||
description: players.length
|
color,
|
||||||
? players.map((name) => `- ${name}`).join("\n")
|
},
|
||||||
: "*Aucun joueur entré*",
|
{
|
||||||
|
title: "Top 10 XP",
|
||||||
|
description: top10,
|
||||||
|
color,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Qui a grind ?",
|
||||||
|
description:
|
||||||
|
"Merci d'entrer les pseudos des joueurs qui ont grind.\n\nFormat:```@LBF laulau,Yuno,...```\n**Attention les majuscules comptent**\nPour entrer la liste des joueurs, il faut __mentionner le bot__, si personne n'a grind, `@LBF tg`",
|
||||||
color,
|
color,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
content: `Est-ce correct ? (oui/non)`,
|
|
||||||
});
|
});
|
||||||
const confirmFilter = (msg: Message) =>
|
|
||||||
|
const filter = (msg: Message) =>
|
||||||
msg.channel.id === adminChannel.id &&
|
msg.channel.id === adminChannel.id &&
|
||||||
!msg.author.bot &&
|
!msg.author.bot &&
|
||||||
["oui", "non", "yes", "no"].includes(msg.content.toLowerCase());
|
msg.content.startsWith(`<@${client.user!.id}>`);
|
||||||
const confirmCollected = await adminChannel.awaitMessages({
|
|
||||||
filter: confirmFilter,
|
let confirmed = false;
|
||||||
max: 1,
|
let answer: string | null = null;
|
||||||
});
|
while (!confirmed) {
|
||||||
const confirmation = confirmCollected.first()?.content.toLowerCase();
|
const collected = await adminChannel.awaitMessages({ filter, max: 1 });
|
||||||
if (confirmation === "oui" || confirmation === "yes") {
|
answer = collected.first()?.content || null;
|
||||||
confirmed = true;
|
if (!answer) continue;
|
||||||
await adminChannel.send({ content: "Ok" });
|
|
||||||
} else {
|
answer = answer.replace(`<@${client.user!.id}>`, "").trim();
|
||||||
|
if (answer.toLowerCase() === "tg") {
|
||||||
|
answer = "";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
const players = answer
|
||||||
|
.split(",")
|
||||||
|
.map((x) => x.trim())
|
||||||
|
.filter(Boolean);
|
||||||
await adminChannel.send({
|
await adminChannel.send({
|
||||||
content: "D'accord, veuillez réessayer. Qui a grind ?",
|
embeds: [
|
||||||
|
{
|
||||||
|
title: "Joueurs entrés",
|
||||||
|
description: players.length
|
||||||
|
? players.map((name) => `- ${name}`).join("\n")
|
||||||
|
: "*Aucun joueur entré*",
|
||||||
|
color,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
content: `Est-ce correct ? (oui/non)`,
|
||||||
});
|
});
|
||||||
|
const confirmFilter = (msg: Message) =>
|
||||||
|
msg.channel.id === adminChannel.id &&
|
||||||
|
!msg.author.bot &&
|
||||||
|
["oui", "non", "yes", "no"].includes(msg.content.toLowerCase());
|
||||||
|
const confirmCollected = await adminChannel.awaitMessages({
|
||||||
|
filter: confirmFilter,
|
||||||
|
max: 1,
|
||||||
|
});
|
||||||
|
const confirmation = confirmCollected.first()?.content.toLowerCase();
|
||||||
|
if (confirmation === "oui" || confirmation === "yes") {
|
||||||
|
confirmed = true;
|
||||||
|
await adminChannel.send({ content: "Ok" });
|
||||||
|
} else {
|
||||||
|
await adminChannel.send({
|
||||||
|
content: "D'accord, veuillez réessayer. Qui a grind ?",
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (answer === null) {
|
||||||
|
return questLogger.fatal("Answer was 'null', this should be unreachable");
|
||||||
|
}
|
||||||
|
|
||||||
|
exclude = answer
|
||||||
|
.split(",")
|
||||||
|
.map((x) => x.trim())
|
||||||
|
.filter(Boolean);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (answer === null) {
|
|
||||||
return questLogger.fatal("Answer was 'null', this should be unreachable");
|
|
||||||
}
|
|
||||||
|
|
||||||
const exclude = answer
|
|
||||||
.split(",")
|
|
||||||
.map((x) => x.trim())
|
|
||||||
.filter(Boolean);
|
|
||||||
const embed = await makeResultEmbed(quest, [
|
const embed = await makeResultEmbed(quest, [
|
||||||
...env.QUEST_EXCLUDE,
|
...env.QUEST_EXCLUDE,
|
||||||
...exclude,
|
...exclude,
|
||||||
@@ -116,6 +120,8 @@ export const askForGrinders = async (quest: QuestResult, client: Client) => {
|
|||||||
return questLogger.fatal("Invalid 'DISCORD_REWARDS_CHANNEL'");
|
return questLogger.fatal("Invalid 'DISCORD_REWARDS_CHANNEL'");
|
||||||
}
|
}
|
||||||
|
|
||||||
await adminChannel.send("Envoyé !");
|
if (env.QUEST_EXCLUDE) {
|
||||||
|
await adminChannel.send("Envoyé !");
|
||||||
|
}
|
||||||
questLogger.info(`Results posted at: ${new Date().toISOString()}`);
|
questLogger.info(`Results posted at: ${new Date().toISOString()}`);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user