feat: implement tejtrack command to remove a tracker

This commit is contained in:
Pihkaal
2025-11-08 13:30:41 +01:00
parent 5b571c76ea
commit 414509dd6e
2 changed files with 99 additions and 3 deletions

View File

@@ -1,7 +1,12 @@
import { getAccountBalance, initAccounts, setAccountBalance } from "./account"; import { getAccountBalance, initAccounts, setAccountBalance } from "./account";
import { makeResultEmbed } from "./discord"; import { makeResultEmbed } from "./discord";
import { env } from "./env"; import { env } from "./env";
import { initTracking, listTrackedPlayers, trackWovPlayer } from "./tracking"; import {
initTracking,
listTrackedPlayers,
trackWovPlayer,
untrackWovPlayer,
} from "./tracking";
import { import {
checkForNewQuest, checkForNewQuest,
getClanInfos, getClanInfos,
@@ -232,7 +237,86 @@ client.on("messageCreate", async (message) => {
.split(" "); .split(" ");
if (command === "ping") { if (command === "ping") {
await message.reply("pong"); await message.reply("pong");
} else if (command === "tejtrack") {
if (!message.member) return;
if (!message.member.roles.cache.has("1147963065640439900")) {
await message.reply({
embeds: [
{
description:
"### ❌ Erreur\n\n\nTu t'es cru chez mémé ou quoi faut être staff",
color: 15335424,
},
],
});
return;
}
let playerName = args[0];
if (!playerName) {
await message.reply({
embeds: [
{
description: `### ❌ Erreur\n\n\n\nUsage:\`@LBF untrack NOM_JOUEUR\`, exemple: \`@LBF untrack Yuno\`.\n**Attention les majuscules sont importantes**`,
color: 15335424,
},
],
});
return;
}
const player = await searchPlayer(playerName);
if (!player) {
await message.reply({
embeds: [
{
description: `### ❌ Erreur\n\n\n\nCette personne n'existe pas.\n**Attention les majuscules sont importantes**`,
color: 15335424,
},
],
});
return;
}
const res = await untrackWovPlayer(player.id);
switch (res.event) {
case "notTracked": {
await message.reply({
embeds: [
{
description: `Pas de tracker pour \`${playerName}\` [\`${player.id}\`]`,
color: 0x89cff0,
},
],
});
break;
}
case "trackerRemoved": {
await message.reply({
embeds: [
{
description: `Tracker enlevé pour \`${playerName}\` [\`${player.id}\`]`,
color: 0x89cff0,
},
],
});
const chan = client.channels.cache.get(env.DISCORD_TRACKING_CHANNEL);
if (!chan?.isSendable()) throw "Invalid tracking channel";
await chan.send({
embeds: [
{
description: `### [REMOVED] \`${playerName}\` [\`${player.id}\`]`,
color: 0x89cff0,
},
],
});
break;
}
}
} else if (command === "track") { } else if (command === "track") {
if (!message.member) return;
if (!message.member.roles.cache.has("1147963065640439900")) { if (!message.member.roles.cache.has("1147963065640439900")) {
await message.reply({ await message.reply({
embeds: [ embeds: [
@@ -272,8 +356,6 @@ client.on("messageCreate", async (message) => {
return; return;
} }
// 0x89cff0
const res = await trackWovPlayer(player.id); const res = await trackWovPlayer(player.id);
switch (res.event) { switch (res.event) {
case "notFound": { case "notFound": {

View File

@@ -17,6 +17,20 @@ export async function listTrackedPlayers(): Promise<string[]> {
return Object.keys(trackedPlayers); return Object.keys(trackedPlayers);
} }
export async function untrackWovPlayer(
playerId: string,
): Promise<{ event: "notTracked" } | { event: "trackerRemoved" }> {
const trackedPlayers: TrackedPlayers =
await Bun.file(TRACKED_PLAYER_FILE).json();
if (!trackedPlayers[playerId]) return { event: "notTracked" };
delete trackedPlayers[playerId];
await Bun.file(TRACKED_PLAYER_FILE).write(JSON.stringify(trackedPlayers));
return { event: "trackerRemoved" };
}
export async function trackWovPlayer(playerId: string): Promise< export async function trackWovPlayer(playerId: string): Promise<
| { event: "notFound" } | { event: "notFound" }
| { | {