From f399e5b38d737d12ee320ab4c5a28969217523cc Mon Sep 17 00:00:00 2001 From: Jonny_Bro <48434875+JonnyBro@users.noreply.github.com> Date: Tue, 4 Mar 2025 17:17:15 +0500 Subject: [PATCH] move old commands remove unused assets --- .gitignore | 2 +- {src/base_OLD => OLD/base}/BaseCommand.js | 0 {src/base_OLD => OLD/base}/BaseEvent.js | 0 {src/base_OLD => OLD/base}/Client.js | 0 .../commands}/Administration/addemoji.js | 0 .../commands}/Administration/automod.js | 0 .../commands}/Administration/autorole.js | 0 .../commands}/Administration/config.js | 0 .../commands}/Administration/goodbye.js | 0 .../commands}/Administration/selectroles.js | 0 .../commands}/Administration/set.js | 0 .../commands}/Administration/setlang.js | 0 .../commands}/Administration/stealemoji.js | 0 .../commands}/Administration/welcome.js | 0 .../commands}/Beatrun/courses.js | 0 .../commands}/Economy/achievements.js | 0 .../commands}/Economy/bank.js | 0 .../commands}/Economy/birthdate.js | 0 .../commands}/Economy/divorce.js | 0 .../commands}/Economy/leaderboard.js | 0 .../commands}/Economy/marry.js | 0 .../commands}/Economy/money.js | 0 .../commands}/Economy/pay.js | 0 .../commands}/Economy/profile.js | 0 .../commands}/Economy/rep.js | 0 .../commands}/Economy/rob.js | 0 .../commands}/Economy/setbio.js | 0 .../commands}/Economy/slots.js | 0 .../commands}/Economy/transactions.js | 0 .../commands}/Economy/work.js | 0 .../commands}/Fun/8ball.js | 0 {src/commands_OLD => OLD/commands}/Fun/cat.js | 4 +- {src/commands_OLD => OLD/commands}/Fun/dog.js | 0 .../commands}/Fun/lmgtfy.js | 0 .../commands}/Fun/lovecalc.js | 0 .../commands}/Fun/number.js | 0 .../commands}/General/afk.js | 0 .../commands}/General/avatar.c.js | 0 .../commands}/General/avatar.js | 0 .../commands}/General/boosters.js | 0 .../commands}/General/emoji.js | 0 .../commands}/General/help.js | 0 .../commands}/General/info.js | 0 .../commands}/General/minecraft.js | 0 .../commands}/General/ping.js | 0 .../commands}/General/remindme.js | 0 .../commands}/General/reminds.js | 0 .../commands}/General/report.js | 0 .../commands}/General/shorturl.js | 0 .../commands}/General/stats.js | 0 .../commands}/General/suggest.js | 0 .../commands}/General/whois.js | 0 .../commands}/IAT/checkjar.js | 0 .../commands}/Moderation/clear.js | 0 .../commands}/Moderation/clearwarns.js | 0 .../commands}/Moderation/giveaway.js | 0 .../commands}/Moderation/unban.js | 0 .../commands}/Moderation/untimeout.js | 0 .../commands}/Moderation/warn.c.js | 0 .../commands}/Moderation/warns.js | 0 .../commands}/Music/back.js | 0 .../commands}/Music/loop.js | 0 .../commands}/Music/nowplaying.js | 0 .../commands}/Music/play.c.js | 0 .../commands}/Music/play.js | 0 .../commands}/Music/queue.js | 0 .../commands}/Music/seek.js | 0 .../commands}/Music/shuffle.js | 0 .../commands}/Music/skip.js | 0 .../commands}/Music/stop.js | 0 .../commands}/Music/volume.js | 0 .../commands}/Owner/debug.js | 0 .../commands}/Owner/eval.js | 0 .../commands}/Owner/reload.js | 0 .../commands}/Owner/say.js | 0 .../commands}/Owner/servers.js | 0 .../commands}/Tickets/adduser.js | 0 .../commands}/Tickets/closeticket.js | 0 .../commands}/Tickets/createticketembed.js | 0 .../commands}/Tickets/removeuser.js | 0 .../events}/CommandHandler.js | 0 .../events}/Guild/guildBanAdd.js | 0 .../events}/Guild/guildCreate.js | 0 .../events}/Guild/guildDelete.js | 0 .../events}/Guild/guildMemberAdd.js | 0 .../events}/Guild/guildMemberRemove.js | 0 .../events}/Guild/guildMemberUpdate.js | 0 .../events}/MessageHandler.js | 0 .../events}/Monitoring/messageDelete.js | 0 .../events}/Monitoring/messageUpdate.js | 0 .../events}/TicketsButton.js | 0 package.json | 4 +- pnpm-lock.yaml | 92 ++- src/assets/fonts/KeepCalm-Medium.ttf | Bin 86716 -> 0 bytes src/assets/fonts/RubikMonoOne-Regular.ttf | Bin 117136 -> 0 bytes src/assets/img/greetings_background.png | Bin 6387 -> 0 bytes src/commands/Administration/addemoji.ts | 7 +- src/commands/Economy/birthdate.ts | 14 +- src/commands_OLD/Fun/tictactoe.js | 62 -- src/constants/index.ts | 4 +- src/events/Ready.ts | 8 +- src/handlers/command-handler/index.ts | 1 - src/helpers/extenders.ts | 16 +- src/helpers/functions.ts | 4 +- src/helpers/tictactoe.js | 603 ------------------ src/index.ts | 7 +- .../en-US/administration/addemoji.json | 4 +- .../en-US/administration/stealemoji.json | 4 +- .../ru-RU/administration/addemoji.json | 4 +- .../uk-UA/administration/addemoji.json | 4 +- .../uk-UA/administration/stealemoji.json | 4 +- src/utils/get-path.ts | 5 +- src/utils/loadCronTasks.ts | 1 - src/utils/use-client.ts | 5 +- 114 files changed, 83 insertions(+), 776 deletions(-) rename {src/base_OLD => OLD/base}/BaseCommand.js (100%) rename {src/base_OLD => OLD/base}/BaseEvent.js (100%) rename {src/base_OLD => OLD/base}/Client.js (100%) rename {src/commands_OLD => OLD/commands}/Administration/addemoji.js (100%) rename {src/commands_OLD => OLD/commands}/Administration/automod.js (100%) rename {src/commands_OLD => OLD/commands}/Administration/autorole.js (100%) rename {src/commands_OLD => OLD/commands}/Administration/config.js (100%) rename {src/commands_OLD => OLD/commands}/Administration/goodbye.js (100%) rename {src/commands_OLD => OLD/commands}/Administration/selectroles.js (100%) rename {src/commands_OLD => OLD/commands}/Administration/set.js (100%) rename {src/commands_OLD => OLD/commands}/Administration/setlang.js (100%) rename {src/commands_OLD => OLD/commands}/Administration/stealemoji.js (100%) rename {src/commands_OLD => OLD/commands}/Administration/welcome.js (100%) rename {src/commands_OLD => OLD/commands}/Beatrun/courses.js (100%) rename {src/commands_OLD => OLD/commands}/Economy/achievements.js (100%) rename {src/commands_OLD => OLD/commands}/Economy/bank.js (100%) rename {src/commands_OLD => OLD/commands}/Economy/birthdate.js (100%) rename {src/commands_OLD => OLD/commands}/Economy/divorce.js (100%) rename {src/commands_OLD => OLD/commands}/Economy/leaderboard.js (100%) rename {src/commands_OLD => OLD/commands}/Economy/marry.js (100%) rename {src/commands_OLD => OLD/commands}/Economy/money.js (100%) rename {src/commands_OLD => OLD/commands}/Economy/pay.js (100%) rename {src/commands_OLD => OLD/commands}/Economy/profile.js (100%) rename {src/commands_OLD => OLD/commands}/Economy/rep.js (100%) rename {src/commands_OLD => OLD/commands}/Economy/rob.js (100%) rename {src/commands_OLD => OLD/commands}/Economy/setbio.js (100%) rename {src/commands_OLD => OLD/commands}/Economy/slots.js (100%) rename {src/commands_OLD => OLD/commands}/Economy/transactions.js (100%) rename {src/commands_OLD => OLD/commands}/Economy/work.js (100%) rename {src/commands_OLD => OLD/commands}/Fun/8ball.js (100%) rename {src/commands_OLD => OLD/commands}/Fun/cat.js (93%) rename {src/commands_OLD => OLD/commands}/Fun/dog.js (100%) rename {src/commands_OLD => OLD/commands}/Fun/lmgtfy.js (100%) rename {src/commands_OLD => OLD/commands}/Fun/lovecalc.js (100%) rename {src/commands_OLD => OLD/commands}/Fun/number.js (100%) rename {src/commands_OLD => OLD/commands}/General/afk.js (100%) rename {src/commands_OLD => OLD/commands}/General/avatar.c.js (100%) rename {src/commands_OLD => OLD/commands}/General/avatar.js (100%) rename {src/commands_OLD => OLD/commands}/General/boosters.js (100%) rename {src/commands_OLD => OLD/commands}/General/emoji.js (100%) rename {src/commands_OLD => OLD/commands}/General/help.js (100%) rename {src/commands_OLD => OLD/commands}/General/info.js (100%) rename {src/commands_OLD => OLD/commands}/General/minecraft.js (100%) rename {src/commands_OLD => OLD/commands}/General/ping.js (100%) rename {src/commands_OLD => OLD/commands}/General/remindme.js (100%) rename {src/commands_OLD => OLD/commands}/General/reminds.js (100%) rename {src/commands_OLD => OLD/commands}/General/report.js (100%) rename {src/commands_OLD => OLD/commands}/General/shorturl.js (100%) rename {src/commands_OLD => OLD/commands}/General/stats.js (100%) rename {src/commands_OLD => OLD/commands}/General/suggest.js (100%) rename {src/commands_OLD => OLD/commands}/General/whois.js (100%) rename {src/commands_OLD => OLD/commands}/IAT/checkjar.js (100%) rename {src/commands_OLD => OLD/commands}/Moderation/clear.js (100%) rename {src/commands_OLD => OLD/commands}/Moderation/clearwarns.js (100%) rename {src/commands_OLD => OLD/commands}/Moderation/giveaway.js (100%) rename {src/commands_OLD => OLD/commands}/Moderation/unban.js (100%) rename {src/commands_OLD => OLD/commands}/Moderation/untimeout.js (100%) rename {src/commands_OLD => OLD/commands}/Moderation/warn.c.js (100%) rename {src/commands_OLD => OLD/commands}/Moderation/warns.js (100%) rename {src/commands_OLD => OLD/commands}/Music/back.js (100%) rename {src/commands_OLD => OLD/commands}/Music/loop.js (100%) rename {src/commands_OLD => OLD/commands}/Music/nowplaying.js (100%) rename {src/commands_OLD => OLD/commands}/Music/play.c.js (100%) rename {src/commands_OLD => OLD/commands}/Music/play.js (100%) rename {src/commands_OLD => OLD/commands}/Music/queue.js (100%) rename {src/commands_OLD => OLD/commands}/Music/seek.js (100%) rename {src/commands_OLD => OLD/commands}/Music/shuffle.js (100%) rename {src/commands_OLD => OLD/commands}/Music/skip.js (100%) rename {src/commands_OLD => OLD/commands}/Music/stop.js (100%) rename {src/commands_OLD => OLD/commands}/Music/volume.js (100%) rename {src/commands_OLD => OLD/commands}/Owner/debug.js (100%) rename {src/commands_OLD => OLD/commands}/Owner/eval.js (100%) rename {src/commands_OLD => OLD/commands}/Owner/reload.js (100%) rename {src/commands_OLD => OLD/commands}/Owner/say.js (100%) rename {src/commands_OLD => OLD/commands}/Owner/servers.js (100%) rename {src/commands_OLD => OLD/commands}/Tickets/adduser.js (100%) rename {src/commands_OLD => OLD/commands}/Tickets/closeticket.js (100%) rename {src/commands_OLD => OLD/commands}/Tickets/createticketembed.js (100%) rename {src/commands_OLD => OLD/commands}/Tickets/removeuser.js (100%) rename {src/events_OLD => OLD/events}/CommandHandler.js (100%) rename {src/events_OLD => OLD/events}/Guild/guildBanAdd.js (100%) rename {src/events_OLD => OLD/events}/Guild/guildCreate.js (100%) rename {src/events_OLD => OLD/events}/Guild/guildDelete.js (100%) rename {src/events_OLD => OLD/events}/Guild/guildMemberAdd.js (100%) rename {src/events_OLD => OLD/events}/Guild/guildMemberRemove.js (100%) rename {src/events_OLD => OLD/events}/Guild/guildMemberUpdate.js (100%) rename {src/events_OLD => OLD/events}/MessageHandler.js (100%) rename {src/events_OLD => OLD/events}/Monitoring/messageDelete.js (100%) rename {src/events_OLD => OLD/events}/Monitoring/messageUpdate.js (100%) rename {src/events_OLD => OLD/events}/TicketsButton.js (100%) delete mode 100644 src/assets/fonts/KeepCalm-Medium.ttf delete mode 100644 src/assets/fonts/RubikMonoOne-Regular.ttf delete mode 100644 src/assets/img/greetings_background.png delete mode 100644 src/commands_OLD/Fun/tictactoe.js delete mode 100644 src/helpers/tictactoe.js diff --git a/.gitignore b/.gitignore index 167bb0c3..dbd3132e 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ Thumbs.db # Configuration /config.json -# DB +# DBs /giveaways.json # Node diff --git a/src/base_OLD/BaseCommand.js b/OLD/base/BaseCommand.js similarity index 100% rename from src/base_OLD/BaseCommand.js rename to OLD/base/BaseCommand.js diff --git a/src/base_OLD/BaseEvent.js b/OLD/base/BaseEvent.js similarity index 100% rename from src/base_OLD/BaseEvent.js rename to OLD/base/BaseEvent.js diff --git a/src/base_OLD/Client.js b/OLD/base/Client.js similarity index 100% rename from src/base_OLD/Client.js rename to OLD/base/Client.js diff --git a/src/commands_OLD/Administration/addemoji.js b/OLD/commands/Administration/addemoji.js similarity index 100% rename from src/commands_OLD/Administration/addemoji.js rename to OLD/commands/Administration/addemoji.js diff --git a/src/commands_OLD/Administration/automod.js b/OLD/commands/Administration/automod.js similarity index 100% rename from src/commands_OLD/Administration/automod.js rename to OLD/commands/Administration/automod.js diff --git a/src/commands_OLD/Administration/autorole.js b/OLD/commands/Administration/autorole.js similarity index 100% rename from src/commands_OLD/Administration/autorole.js rename to OLD/commands/Administration/autorole.js diff --git a/src/commands_OLD/Administration/config.js b/OLD/commands/Administration/config.js similarity index 100% rename from src/commands_OLD/Administration/config.js rename to OLD/commands/Administration/config.js diff --git a/src/commands_OLD/Administration/goodbye.js b/OLD/commands/Administration/goodbye.js similarity index 100% rename from src/commands_OLD/Administration/goodbye.js rename to OLD/commands/Administration/goodbye.js diff --git a/src/commands_OLD/Administration/selectroles.js b/OLD/commands/Administration/selectroles.js similarity index 100% rename from src/commands_OLD/Administration/selectroles.js rename to OLD/commands/Administration/selectroles.js diff --git a/src/commands_OLD/Administration/set.js b/OLD/commands/Administration/set.js similarity index 100% rename from src/commands_OLD/Administration/set.js rename to OLD/commands/Administration/set.js diff --git a/src/commands_OLD/Administration/setlang.js b/OLD/commands/Administration/setlang.js similarity index 100% rename from src/commands_OLD/Administration/setlang.js rename to OLD/commands/Administration/setlang.js diff --git a/src/commands_OLD/Administration/stealemoji.js b/OLD/commands/Administration/stealemoji.js similarity index 100% rename from src/commands_OLD/Administration/stealemoji.js rename to OLD/commands/Administration/stealemoji.js diff --git a/src/commands_OLD/Administration/welcome.js b/OLD/commands/Administration/welcome.js similarity index 100% rename from src/commands_OLD/Administration/welcome.js rename to OLD/commands/Administration/welcome.js diff --git a/src/commands_OLD/Beatrun/courses.js b/OLD/commands/Beatrun/courses.js similarity index 100% rename from src/commands_OLD/Beatrun/courses.js rename to OLD/commands/Beatrun/courses.js diff --git a/src/commands_OLD/Economy/achievements.js b/OLD/commands/Economy/achievements.js similarity index 100% rename from src/commands_OLD/Economy/achievements.js rename to OLD/commands/Economy/achievements.js diff --git a/src/commands_OLD/Economy/bank.js b/OLD/commands/Economy/bank.js similarity index 100% rename from src/commands_OLD/Economy/bank.js rename to OLD/commands/Economy/bank.js diff --git a/src/commands_OLD/Economy/birthdate.js b/OLD/commands/Economy/birthdate.js similarity index 100% rename from src/commands_OLD/Economy/birthdate.js rename to OLD/commands/Economy/birthdate.js diff --git a/src/commands_OLD/Economy/divorce.js b/OLD/commands/Economy/divorce.js similarity index 100% rename from src/commands_OLD/Economy/divorce.js rename to OLD/commands/Economy/divorce.js diff --git a/src/commands_OLD/Economy/leaderboard.js b/OLD/commands/Economy/leaderboard.js similarity index 100% rename from src/commands_OLD/Economy/leaderboard.js rename to OLD/commands/Economy/leaderboard.js diff --git a/src/commands_OLD/Economy/marry.js b/OLD/commands/Economy/marry.js similarity index 100% rename from src/commands_OLD/Economy/marry.js rename to OLD/commands/Economy/marry.js diff --git a/src/commands_OLD/Economy/money.js b/OLD/commands/Economy/money.js similarity index 100% rename from src/commands_OLD/Economy/money.js rename to OLD/commands/Economy/money.js diff --git a/src/commands_OLD/Economy/pay.js b/OLD/commands/Economy/pay.js similarity index 100% rename from src/commands_OLD/Economy/pay.js rename to OLD/commands/Economy/pay.js diff --git a/src/commands_OLD/Economy/profile.js b/OLD/commands/Economy/profile.js similarity index 100% rename from src/commands_OLD/Economy/profile.js rename to OLD/commands/Economy/profile.js diff --git a/src/commands_OLD/Economy/rep.js b/OLD/commands/Economy/rep.js similarity index 100% rename from src/commands_OLD/Economy/rep.js rename to OLD/commands/Economy/rep.js diff --git a/src/commands_OLD/Economy/rob.js b/OLD/commands/Economy/rob.js similarity index 100% rename from src/commands_OLD/Economy/rob.js rename to OLD/commands/Economy/rob.js diff --git a/src/commands_OLD/Economy/setbio.js b/OLD/commands/Economy/setbio.js similarity index 100% rename from src/commands_OLD/Economy/setbio.js rename to OLD/commands/Economy/setbio.js diff --git a/src/commands_OLD/Economy/slots.js b/OLD/commands/Economy/slots.js similarity index 100% rename from src/commands_OLD/Economy/slots.js rename to OLD/commands/Economy/slots.js diff --git a/src/commands_OLD/Economy/transactions.js b/OLD/commands/Economy/transactions.js similarity index 100% rename from src/commands_OLD/Economy/transactions.js rename to OLD/commands/Economy/transactions.js diff --git a/src/commands_OLD/Economy/work.js b/OLD/commands/Economy/work.js similarity index 100% rename from src/commands_OLD/Economy/work.js rename to OLD/commands/Economy/work.js diff --git a/src/commands_OLD/Fun/8ball.js b/OLD/commands/Fun/8ball.js similarity index 100% rename from src/commands_OLD/Fun/8ball.js rename to OLD/commands/Fun/8ball.js diff --git a/src/commands_OLD/Fun/cat.js b/OLD/commands/Fun/cat.js similarity index 93% rename from src/commands_OLD/Fun/cat.js rename to OLD/commands/Fun/cat.js index 3c5948b0..ac698382 100644 --- a/src/commands_OLD/Fun/cat.js +++ b/OLD/commands/Fun/cat.js @@ -40,8 +40,8 @@ class Cat extends BaseCommand { async execute(client, interaction) { await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false }); - const res = await fetch("https://api.thecatapi.com/v1/images/search").then(r => r.json()); - const cat = res[0].url; + const res = await fetch("https://api.pur.cat/random-cat").then(r => r.json()); + const cat = res.url; const embed = client.embed({ image: cat, diff --git a/src/commands_OLD/Fun/dog.js b/OLD/commands/Fun/dog.js similarity index 100% rename from src/commands_OLD/Fun/dog.js rename to OLD/commands/Fun/dog.js diff --git a/src/commands_OLD/Fun/lmgtfy.js b/OLD/commands/Fun/lmgtfy.js similarity index 100% rename from src/commands_OLD/Fun/lmgtfy.js rename to OLD/commands/Fun/lmgtfy.js diff --git a/src/commands_OLD/Fun/lovecalc.js b/OLD/commands/Fun/lovecalc.js similarity index 100% rename from src/commands_OLD/Fun/lovecalc.js rename to OLD/commands/Fun/lovecalc.js diff --git a/src/commands_OLD/Fun/number.js b/OLD/commands/Fun/number.js similarity index 100% rename from src/commands_OLD/Fun/number.js rename to OLD/commands/Fun/number.js diff --git a/src/commands_OLD/General/afk.js b/OLD/commands/General/afk.js similarity index 100% rename from src/commands_OLD/General/afk.js rename to OLD/commands/General/afk.js diff --git a/src/commands_OLD/General/avatar.c.js b/OLD/commands/General/avatar.c.js similarity index 100% rename from src/commands_OLD/General/avatar.c.js rename to OLD/commands/General/avatar.c.js diff --git a/src/commands_OLD/General/avatar.js b/OLD/commands/General/avatar.js similarity index 100% rename from src/commands_OLD/General/avatar.js rename to OLD/commands/General/avatar.js diff --git a/src/commands_OLD/General/boosters.js b/OLD/commands/General/boosters.js similarity index 100% rename from src/commands_OLD/General/boosters.js rename to OLD/commands/General/boosters.js diff --git a/src/commands_OLD/General/emoji.js b/OLD/commands/General/emoji.js similarity index 100% rename from src/commands_OLD/General/emoji.js rename to OLD/commands/General/emoji.js diff --git a/src/commands_OLD/General/help.js b/OLD/commands/General/help.js similarity index 100% rename from src/commands_OLD/General/help.js rename to OLD/commands/General/help.js diff --git a/src/commands_OLD/General/info.js b/OLD/commands/General/info.js similarity index 100% rename from src/commands_OLD/General/info.js rename to OLD/commands/General/info.js diff --git a/src/commands_OLD/General/minecraft.js b/OLD/commands/General/minecraft.js similarity index 100% rename from src/commands_OLD/General/minecraft.js rename to OLD/commands/General/minecraft.js diff --git a/src/commands_OLD/General/ping.js b/OLD/commands/General/ping.js similarity index 100% rename from src/commands_OLD/General/ping.js rename to OLD/commands/General/ping.js diff --git a/src/commands_OLD/General/remindme.js b/OLD/commands/General/remindme.js similarity index 100% rename from src/commands_OLD/General/remindme.js rename to OLD/commands/General/remindme.js diff --git a/src/commands_OLD/General/reminds.js b/OLD/commands/General/reminds.js similarity index 100% rename from src/commands_OLD/General/reminds.js rename to OLD/commands/General/reminds.js diff --git a/src/commands_OLD/General/report.js b/OLD/commands/General/report.js similarity index 100% rename from src/commands_OLD/General/report.js rename to OLD/commands/General/report.js diff --git a/src/commands_OLD/General/shorturl.js b/OLD/commands/General/shorturl.js similarity index 100% rename from src/commands_OLD/General/shorturl.js rename to OLD/commands/General/shorturl.js diff --git a/src/commands_OLD/General/stats.js b/OLD/commands/General/stats.js similarity index 100% rename from src/commands_OLD/General/stats.js rename to OLD/commands/General/stats.js diff --git a/src/commands_OLD/General/suggest.js b/OLD/commands/General/suggest.js similarity index 100% rename from src/commands_OLD/General/suggest.js rename to OLD/commands/General/suggest.js diff --git a/src/commands_OLD/General/whois.js b/OLD/commands/General/whois.js similarity index 100% rename from src/commands_OLD/General/whois.js rename to OLD/commands/General/whois.js diff --git a/src/commands_OLD/IAT/checkjar.js b/OLD/commands/IAT/checkjar.js similarity index 100% rename from src/commands_OLD/IAT/checkjar.js rename to OLD/commands/IAT/checkjar.js diff --git a/src/commands_OLD/Moderation/clear.js b/OLD/commands/Moderation/clear.js similarity index 100% rename from src/commands_OLD/Moderation/clear.js rename to OLD/commands/Moderation/clear.js diff --git a/src/commands_OLD/Moderation/clearwarns.js b/OLD/commands/Moderation/clearwarns.js similarity index 100% rename from src/commands_OLD/Moderation/clearwarns.js rename to OLD/commands/Moderation/clearwarns.js diff --git a/src/commands_OLD/Moderation/giveaway.js b/OLD/commands/Moderation/giveaway.js similarity index 100% rename from src/commands_OLD/Moderation/giveaway.js rename to OLD/commands/Moderation/giveaway.js diff --git a/src/commands_OLD/Moderation/unban.js b/OLD/commands/Moderation/unban.js similarity index 100% rename from src/commands_OLD/Moderation/unban.js rename to OLD/commands/Moderation/unban.js diff --git a/src/commands_OLD/Moderation/untimeout.js b/OLD/commands/Moderation/untimeout.js similarity index 100% rename from src/commands_OLD/Moderation/untimeout.js rename to OLD/commands/Moderation/untimeout.js diff --git a/src/commands_OLD/Moderation/warn.c.js b/OLD/commands/Moderation/warn.c.js similarity index 100% rename from src/commands_OLD/Moderation/warn.c.js rename to OLD/commands/Moderation/warn.c.js diff --git a/src/commands_OLD/Moderation/warns.js b/OLD/commands/Moderation/warns.js similarity index 100% rename from src/commands_OLD/Moderation/warns.js rename to OLD/commands/Moderation/warns.js diff --git a/src/commands_OLD/Music/back.js b/OLD/commands/Music/back.js similarity index 100% rename from src/commands_OLD/Music/back.js rename to OLD/commands/Music/back.js diff --git a/src/commands_OLD/Music/loop.js b/OLD/commands/Music/loop.js similarity index 100% rename from src/commands_OLD/Music/loop.js rename to OLD/commands/Music/loop.js diff --git a/src/commands_OLD/Music/nowplaying.js b/OLD/commands/Music/nowplaying.js similarity index 100% rename from src/commands_OLD/Music/nowplaying.js rename to OLD/commands/Music/nowplaying.js diff --git a/src/commands_OLD/Music/play.c.js b/OLD/commands/Music/play.c.js similarity index 100% rename from src/commands_OLD/Music/play.c.js rename to OLD/commands/Music/play.c.js diff --git a/src/commands_OLD/Music/play.js b/OLD/commands/Music/play.js similarity index 100% rename from src/commands_OLD/Music/play.js rename to OLD/commands/Music/play.js diff --git a/src/commands_OLD/Music/queue.js b/OLD/commands/Music/queue.js similarity index 100% rename from src/commands_OLD/Music/queue.js rename to OLD/commands/Music/queue.js diff --git a/src/commands_OLD/Music/seek.js b/OLD/commands/Music/seek.js similarity index 100% rename from src/commands_OLD/Music/seek.js rename to OLD/commands/Music/seek.js diff --git a/src/commands_OLD/Music/shuffle.js b/OLD/commands/Music/shuffle.js similarity index 100% rename from src/commands_OLD/Music/shuffle.js rename to OLD/commands/Music/shuffle.js diff --git a/src/commands_OLD/Music/skip.js b/OLD/commands/Music/skip.js similarity index 100% rename from src/commands_OLD/Music/skip.js rename to OLD/commands/Music/skip.js diff --git a/src/commands_OLD/Music/stop.js b/OLD/commands/Music/stop.js similarity index 100% rename from src/commands_OLD/Music/stop.js rename to OLD/commands/Music/stop.js diff --git a/src/commands_OLD/Music/volume.js b/OLD/commands/Music/volume.js similarity index 100% rename from src/commands_OLD/Music/volume.js rename to OLD/commands/Music/volume.js diff --git a/src/commands_OLD/Owner/debug.js b/OLD/commands/Owner/debug.js similarity index 100% rename from src/commands_OLD/Owner/debug.js rename to OLD/commands/Owner/debug.js diff --git a/src/commands_OLD/Owner/eval.js b/OLD/commands/Owner/eval.js similarity index 100% rename from src/commands_OLD/Owner/eval.js rename to OLD/commands/Owner/eval.js diff --git a/src/commands_OLD/Owner/reload.js b/OLD/commands/Owner/reload.js similarity index 100% rename from src/commands_OLD/Owner/reload.js rename to OLD/commands/Owner/reload.js diff --git a/src/commands_OLD/Owner/say.js b/OLD/commands/Owner/say.js similarity index 100% rename from src/commands_OLD/Owner/say.js rename to OLD/commands/Owner/say.js diff --git a/src/commands_OLD/Owner/servers.js b/OLD/commands/Owner/servers.js similarity index 100% rename from src/commands_OLD/Owner/servers.js rename to OLD/commands/Owner/servers.js diff --git a/src/commands_OLD/Tickets/adduser.js b/OLD/commands/Tickets/adduser.js similarity index 100% rename from src/commands_OLD/Tickets/adduser.js rename to OLD/commands/Tickets/adduser.js diff --git a/src/commands_OLD/Tickets/closeticket.js b/OLD/commands/Tickets/closeticket.js similarity index 100% rename from src/commands_OLD/Tickets/closeticket.js rename to OLD/commands/Tickets/closeticket.js diff --git a/src/commands_OLD/Tickets/createticketembed.js b/OLD/commands/Tickets/createticketembed.js similarity index 100% rename from src/commands_OLD/Tickets/createticketembed.js rename to OLD/commands/Tickets/createticketembed.js diff --git a/src/commands_OLD/Tickets/removeuser.js b/OLD/commands/Tickets/removeuser.js similarity index 100% rename from src/commands_OLD/Tickets/removeuser.js rename to OLD/commands/Tickets/removeuser.js diff --git a/src/events_OLD/CommandHandler.js b/OLD/events/CommandHandler.js similarity index 100% rename from src/events_OLD/CommandHandler.js rename to OLD/events/CommandHandler.js diff --git a/src/events_OLD/Guild/guildBanAdd.js b/OLD/events/Guild/guildBanAdd.js similarity index 100% rename from src/events_OLD/Guild/guildBanAdd.js rename to OLD/events/Guild/guildBanAdd.js diff --git a/src/events_OLD/Guild/guildCreate.js b/OLD/events/Guild/guildCreate.js similarity index 100% rename from src/events_OLD/Guild/guildCreate.js rename to OLD/events/Guild/guildCreate.js diff --git a/src/events_OLD/Guild/guildDelete.js b/OLD/events/Guild/guildDelete.js similarity index 100% rename from src/events_OLD/Guild/guildDelete.js rename to OLD/events/Guild/guildDelete.js diff --git a/src/events_OLD/Guild/guildMemberAdd.js b/OLD/events/Guild/guildMemberAdd.js similarity index 100% rename from src/events_OLD/Guild/guildMemberAdd.js rename to OLD/events/Guild/guildMemberAdd.js diff --git a/src/events_OLD/Guild/guildMemberRemove.js b/OLD/events/Guild/guildMemberRemove.js similarity index 100% rename from src/events_OLD/Guild/guildMemberRemove.js rename to OLD/events/Guild/guildMemberRemove.js diff --git a/src/events_OLD/Guild/guildMemberUpdate.js b/OLD/events/Guild/guildMemberUpdate.js similarity index 100% rename from src/events_OLD/Guild/guildMemberUpdate.js rename to OLD/events/Guild/guildMemberUpdate.js diff --git a/src/events_OLD/MessageHandler.js b/OLD/events/MessageHandler.js similarity index 100% rename from src/events_OLD/MessageHandler.js rename to OLD/events/MessageHandler.js diff --git a/src/events_OLD/Monitoring/messageDelete.js b/OLD/events/Monitoring/messageDelete.js similarity index 100% rename from src/events_OLD/Monitoring/messageDelete.js rename to OLD/events/Monitoring/messageDelete.js diff --git a/src/events_OLD/Monitoring/messageUpdate.js b/OLD/events/Monitoring/messageUpdate.js similarity index 100% rename from src/events_OLD/Monitoring/messageUpdate.js rename to OLD/events/Monitoring/messageUpdate.js diff --git a/src/events_OLD/TicketsButton.js b/OLD/events/TicketsButton.js similarity index 100% rename from src/events_OLD/TicketsButton.js rename to OLD/events/TicketsButton.js diff --git a/package.json b/package.json index 7e2d26a0..0cbac9cf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jaba", - "version": "4.6.7", + "version": "0.0.0", "description": "My Discord Bot", "main": "src/index.js", "type": "module", @@ -20,7 +20,7 @@ "discord-giveaways": "^6.0.1", "discord-player": "^6.7.1", "discord-player-youtubei": "1.3.5", - "discord.js": "^14.16.3", + "discord.js": "^14.18.0", "gamedig": "^5.1.4", "i18next": "^24.0.0", "i18next-fs-backend": "^2.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a8b69e24..b697183f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,7 +28,7 @@ importers: version: 3.2.1 discord-giveaways: specifier: ^6.0.1 - version: 6.0.1(discord.js@14.16.3) + version: 6.0.1(discord.js@14.18.0) discord-player: specifier: ^6.7.1 version: 6.7.1(@discord-player/extractor@4.5.1)(@discordjs/opus@0.9.0) @@ -36,8 +36,8 @@ importers: specifier: 1.3.5 version: 1.3.5 discord.js: - specifier: ^14.16.3 - version: 14.16.3 + specifier: ^14.18.0 + version: 14.18.0 gamedig: specifier: ^5.1.4 version: 5.1.4 @@ -127,9 +127,9 @@ packages: '@discord-player/utils@0.2.2': resolution: {integrity: sha512-UklWUT7BcZEkBgywM9Cmpo2nwj3SQ9Wmhu6ml1uy/YRQnY8IRdZEHD84T2kfjOg4LVZek0ej1VerIqq7a9PAHQ==} - '@discordjs/builders@1.9.0': - resolution: {integrity: sha512-0zx8DePNVvQibh5ly5kCEei5wtPBIUbSoE9n+91Rlladz4tgtFbJ36PZMxxZrTEOQ7AHMZ/b0crT/0fCy6FTKg==} - engines: {node: '>=18'} + '@discordjs/builders@1.10.1': + resolution: {integrity: sha512-OWo1fY4ztL1/M/DUyRPShB4d/EzVfuUvPTRRHRIt/YxBrUYSz0a+JicD5F5zHFoNs2oTuWavxCOVFV1UljHTng==} + engines: {node: '>=16.11.0'} '@discordjs/collection@1.5.3': resolution: {integrity: sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==} @@ -139,9 +139,9 @@ packages: resolution: {integrity: sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==} engines: {node: '>=18'} - '@discordjs/formatters@0.5.0': - resolution: {integrity: sha512-98b3i+Y19RFq1Xke4NkVY46x8KjJQjldHUuEbCqMvp1F5Iq9HgnGpu91jOi/Ufazhty32eRsKnnzS8n4c+L93g==} - engines: {node: '>=18'} + '@discordjs/formatters@0.6.0': + resolution: {integrity: sha512-YIruKw4UILt/ivO4uISmrGq2GdMY6EkoTtD0oS0GvkJFRZbTSdPhzYiUILbJ/QslsvC9H9nTgGgnarnIl4jMfw==} + engines: {node: '>=16.11.0'} '@discordjs/node-pre-gyp@0.4.5': resolution: {integrity: sha512-YJOVVZ545x24mHzANfYoy0BJX5PDyeZlpiJjDkUBM/V/Ao7TFX9lcUvCN4nr0tbr5ubeaXxtEBILUrHtTphVeQ==} @@ -151,8 +151,8 @@ packages: resolution: {integrity: sha512-NEE76A96FtQ5YuoAVlOlB3ryMPrkXbUCTQICHGKb8ShtjXyubGicjRMouHtP1RpuDdm16cDa+oI3aAMo1zQRUQ==} engines: {node: '>=12.0.0'} - '@discordjs/rest@2.4.0': - resolution: {integrity: sha512-Xb2irDqNcq+O8F0/k/NaDp7+t091p+acb51iA4bCKfIn+WFWd6HrNvcsSbMMxIR9NjcMZS6NReTKygqiQN+ntw==} + '@discordjs/rest@2.4.3': + resolution: {integrity: sha512-+SO4RKvWsM+y8uFHgYQrcTl/3+cY02uQOH7/7bKbVZsTfrfpoE62o5p+mmV+s7FVhTX82/kQUGGbu4YlV60RtA==} engines: {node: '>=18'} '@discordjs/util@1.1.1': @@ -163,8 +163,8 @@ packages: resolution: {integrity: sha512-BvX6+VJE5/vhD9azV9vrZEt9hL1G+GlOdsQaVl5iv9n87fkXjf3cSwllhR3GdaUC8m6dqT8umXIWtn3yCu4afg==} engines: {node: '>=18'} - '@discordjs/ws@1.1.1': - resolution: {integrity: sha512-PZ+vLpxGCRtmr2RMkqh8Zp+BenUaJqlS6xhgWKEZcgC/vfHLEzpHtKkB0sl3nZWpwtcKk6YWy+pU3okL2I97FA==} + '@discordjs/ws@1.2.1': + resolution: {integrity: sha512-PBvenhZG56a6tMWF/f4P6f4GxZKJTBG95n7aiGSPTnodmz4N5g60t79rSIAq7ywMbv8A4jFtexMruH+oe51aQQ==} engines: {node: '>=16.11.0'} '@esbuild/aix-ppc64@0.23.1': @@ -835,17 +835,11 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - discord-api-types@0.37.100: - resolution: {integrity: sha512-a8zvUI0GYYwDtScfRd/TtaNBDTXwP5DiDVX7K5OmE+DRT57gBqKnwtOC5Ol8z0mRW8KQfETIgiB8U0YZ9NXiCA==} - discord-api-types@0.37.107: resolution: {integrity: sha512-XOxmxnhtYIRH55kLTrc/JS3nJV1l3wfBtTptFiRGdGDOe2qdCT4DltpxSgskasfDrKfw71Z5quG4tYqTxyPJ7g==} - discord-api-types@0.37.83: - resolution: {integrity: sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA==} - - discord-api-types@0.37.97: - resolution: {integrity: sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==} + discord-api-types@0.37.119: + resolution: {integrity: sha512-WasbGFXEB+VQWXlo6IpW3oUv73Yuau1Ig4AZF/m13tXcTKnMpc/mHjpztIlz4+BM9FG9BHQkEXiPto3bKduQUg==} discord-giveaways@6.0.1: resolution: {integrity: sha512-hs6Vtb62VdlV7NfB93Phaxc8FW0cH4N1Nkb0bXVZ2npgn73yGOFVmdp8bBP5gsC2ady9OAXXI8Gb66t1IddkFw==} @@ -866,8 +860,8 @@ packages: resolution: {integrity: sha512-9DWY5/BLPXeldVwPr8/ggGjggTYOTw77aGQc3+4n5K54bRbbiJ9DUJc+mJzDiSLoHN3f286eRGACJYtrUu27xA==} engines: {node: '>=16.9.0'} - discord.js@14.16.3: - resolution: {integrity: sha512-EPCWE9OkA9DnFFNrO7Kl1WHHDYFXu3CNVFJg63bfU7hVtjZGyhShwZtSBImINQRWxWP2tgo2XI+QhdXx28r0aA==} + discord.js@14.18.0: + resolution: {integrity: sha512-SvU5kVUvwunQhN2/+0t55QW/1EHfB1lp0TtLZUSXVHDmyHTrdOj5LRKdR0zLcybaA15F+NtdWuWmGOX9lE+CAw==} engines: {node: '>=18'} dlv@1.1.3: @@ -1812,6 +1806,10 @@ packages: resolution: {integrity: sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==} engines: {node: '>=18.17'} + undici@6.21.1: + resolution: {integrity: sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==} + engines: {node: '>=18.17'} + unfetch@5.0.0: resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==} @@ -1927,12 +1925,12 @@ snapshots: dependencies: '@discordjs/collection': 1.5.3 - '@discordjs/builders@1.9.0': + '@discordjs/builders@1.10.1': dependencies: - '@discordjs/formatters': 0.5.0 + '@discordjs/formatters': 0.6.0 '@discordjs/util': 1.1.1 '@sapphire/shapeshift': 4.0.0 - discord-api-types: 0.37.97 + discord-api-types: 0.37.119 fast-deep-equal: 3.1.3 ts-mixer: 6.0.4 tslib: 2.7.0 @@ -1941,9 +1939,9 @@ snapshots: '@discordjs/collection@2.1.1': {} - '@discordjs/formatters@0.5.0': + '@discordjs/formatters@0.6.0': dependencies: - discord-api-types: 0.37.97 + discord-api-types: 0.37.119 '@discordjs/node-pre-gyp@0.4.5': dependencies: @@ -1968,17 +1966,17 @@ snapshots: - encoding - supports-color - '@discordjs/rest@2.4.0': + '@discordjs/rest@2.4.3': dependencies: '@discordjs/collection': 2.1.1 '@discordjs/util': 1.1.1 '@sapphire/async-queue': 1.5.3 '@sapphire/snowflake': 3.5.3 '@vladfrangu/async_event_emitter': 2.4.6 - discord-api-types: 0.37.97 + discord-api-types: 0.37.119 magic-bytes.js: 1.10.0 tslib: 2.7.0 - undici: 6.19.8 + undici: 6.21.1 '@discordjs/util@1.1.1': {} @@ -1997,15 +1995,15 @@ snapshots: - opusscript - utf-8-validate - '@discordjs/ws@1.1.1': + '@discordjs/ws@1.2.1': dependencies: '@discordjs/collection': 2.1.1 - '@discordjs/rest': 2.4.0 + '@discordjs/rest': 2.4.3 '@discordjs/util': 1.1.1 '@sapphire/async-queue': 1.5.3 '@types/ws': 8.5.12 '@vladfrangu/async_event_emitter': 2.4.6 - discord-api-types: 0.37.83 + discord-api-types: 0.37.119 tslib: 2.7.0 ws: 8.18.0 transitivePeerDependencies: @@ -2613,18 +2611,14 @@ snapshots: dependencies: path-type: 4.0.0 - discord-api-types@0.37.100: {} - discord-api-types@0.37.107: {} - discord-api-types@0.37.83: {} + discord-api-types@0.37.119: {} - discord-api-types@0.37.97: {} - - discord-giveaways@6.0.1(discord.js@14.16.3): + discord-giveaways@6.0.1(discord.js@14.18.0): dependencies: deepmerge-ts: 4.3.0 - discord.js: 14.16.3 + discord.js: 14.18.0 serialize-javascript: 6.0.2 discord-player-youtubei@1.3.5: @@ -2667,20 +2661,20 @@ snapshots: - opusscript - utf-8-validate - discord.js@14.16.3: + discord.js@14.18.0: dependencies: - '@discordjs/builders': 1.9.0 + '@discordjs/builders': 1.10.1 '@discordjs/collection': 1.5.3 - '@discordjs/formatters': 0.5.0 - '@discordjs/rest': 2.4.0 + '@discordjs/formatters': 0.6.0 + '@discordjs/rest': 2.4.3 '@discordjs/util': 1.1.1 - '@discordjs/ws': 1.1.1 + '@discordjs/ws': 1.2.1 '@sapphire/snowflake': 3.5.3 - discord-api-types: 0.37.100 + discord-api-types: 0.37.119 fast-deep-equal: 3.1.3 lodash.snakecase: 4.1.1 tslib: 2.7.0 - undici: 6.19.8 + undici: 6.21.1 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -3664,6 +3658,8 @@ snapshots: undici@6.21.0: {} + undici@6.21.1: {} + unfetch@5.0.0: {} uri-js@4.4.1: diff --git a/src/assets/fonts/KeepCalm-Medium.ttf b/src/assets/fonts/KeepCalm-Medium.ttf deleted file mode 100644 index 5b16cc59772650302d24a36093006b0e2c4160d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86716 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 agzu_bn*{EL8$3qJ=I4!dCF2a?zyAUAKGkLb diff --git a/src/assets/fonts/RubikMonoOne-Regular.ttf b/src/assets/fonts/RubikMonoOne-Regular.ttf deleted file mode 100644 index ee6af94825831df5482dd1fd6ba64e6f64e497ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117136 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 diff --git a/src/commands/Administration/addemoji.ts b/src/commands/Administration/addemoji.ts index 2cb456db..c40bbc8a 100644 --- a/src/commands/Administration/addemoji.ts +++ b/src/commands/Administration/addemoji.ts @@ -45,14 +45,11 @@ export const data: CommandData = { export const run = async ({ interaction }: SlashCommandProps) => { await interaction.deferReply({ ephemeral: true }); - const link = interaction.options.getString("link") || "", + const attachment = interaction.options.getString("link") || "", name = interaction.options.getString("name") || ""; try { - const emoji = await interaction.guild?.emojis.create({ - name, - attachment: link, - }); + const emoji = await interaction.guild?.emojis.create({ name, attachment }); if (!emoji) return replyError(interaction, "administration/addemoji:ERROR", { name }, { edit: true }); diff --git a/src/commands/Economy/birthdate.ts b/src/commands/Economy/birthdate.ts index 929bf0e3..3e703f90 100644 --- a/src/commands/Economy/birthdate.ts +++ b/src/commands/Economy/birthdate.ts @@ -114,17 +114,9 @@ export const run = async ({ interaction, client }: SlashCommandProps) => { const d = Math.floor(date.getTime() / 1000); - if (!(day === date.getDate() && month - 1 === date.getMonth() && year === date.getFullYear())) { - return replyError(interaction, "economy/birthdate:INVALID_DATE", null, { edit: true }); - } - - if (date.getTime() > Date.now()) { - return replyError(interaction, "economy/birthdate:DATE_TOO_HIGH", null, { edit: true }); - } - - if (date.getTime() < Date.now() - 2.523e12) { - replyError(interaction, "economy/birthdate:DATE_TOO_LOW", null, { edit: true }); - } + if (!(day === date.getDate() && month - 1 === date.getMonth() && year === date.getFullYear())) return replyError(interaction, "economy/birthdate:INVALID_DATE", null, { edit: true }); + if (date.getTime() > Date.now()) return replyError(interaction, "economy/birthdate:DATE_TOO_HIGH", null, { edit: true }); + if (date.getTime() < Date.now() - 2.523e12) return replyError(interaction, "economy/birthdate:DATE_TOO_LOW", null, { edit: true }); userData.birthdate = d; diff --git a/src/commands_OLD/Fun/tictactoe.js b/src/commands_OLD/Fun/tictactoe.js deleted file mode 100644 index ccfb350e..00000000 --- a/src/commands_OLD/Fun/tictactoe.js +++ /dev/null @@ -1,62 +0,0 @@ -const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js"); -const BaseCommand = require("../../base/BaseCommand"), - tictactoe = require("../../helpers/tictactoe"); - -class TicTacToe extends BaseCommand { - /** - * - * @param {import("../base/Client")} client - */ - constructor(client) { - super({ - command: new SlashCommandBuilder() - .setName("tictactoe") - .setDescription(client.translate("fun/tictactoe:DESCRIPTION")) - .setDescriptionLocalizations({ - uk: client.translate("fun/tictactoe:DESCRIPTION", null, "uk-UA"), - ru: client.translate("fun/tictactoe:DESCRIPTION", null, "ru-RU"), - }) - .setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall]) - .setContexts([InteractionContextType.Guild, InteractionContextType.PrivateChannel]) - .addUserOption(option => - option - .setName("user") - .setDescription(client.translate("common:USER")) - .setDescriptionLocalizations({ - uk: client.translate("common:USER", null, "uk-UA"), - ru: client.translate("common:USER", null, "ru-RU"), - }) - .setRequired(true), - ), - dirname: __dirname, - ownerOnly: false, - }); - } - - /** - * - * @param {import("../../base/Client")} client - * @param {import("discord.js").ChatInputCommandInteraction} interaction - */ - async execute(client, interaction) { - const winner = await tictactoe(interaction, { - resultBtn: true, - }); - - const memberData = await client.getMemberData(winner.id, interaction.guildId); - memberData.money += 100; - - const info = { - user: interaction.translate("economy/transactions:TTT"), - amount: 100, - date: Date.now(), - type: "got", - }; - - memberData.transactions.push(info); - - await memberData.save(); - } -} - -module.exports = TicTacToe; diff --git a/src/constants/index.ts b/src/constants/index.ts index 6d0748f6..ad8b6bb8 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -1,5 +1,5 @@ import path from "node:path"; -import { GatewayIntentBits, MessageMentionOptions } from "discord.js"; +import { GatewayIntentBits, MessageMentionOptions, Partials } from "discord.js"; import { AsyncLocalStorage } from "node:async_hooks"; import { ExtendedClient } from "@/structures/client.js"; @@ -22,6 +22,6 @@ export const CLIENT_INTENTS = [ GatewayIntentBits.DirectMessages, GatewayIntentBits.DirectMessageReactions, ]; +export const CLIENT_PARTIALS: Array = [Partials.Channel]; export const CLIENT_ALLOWED_MENTIONS: MessageMentionOptions = { parse: ["everyone", "roles", "users"] }; - export const SUPER_CONTEXT = new AsyncLocalStorage(); diff --git a/src/events/Ready.ts b/src/events/Ready.ts index 76c53edc..9ea56c61 100644 --- a/src/events/Ready.ts +++ b/src/events/Ready.ts @@ -14,16 +14,16 @@ export const data = { export async function run(client: ExtendedClient) { let guildsCount = client.guilds.cache.size; - const status = ["Use /help for commands list!", `I'm in ${guildsCount} ${getNoun(guildsCount, [client.translate("misc:NOUNS:SERVER:1"), client.translate("misc:NOUNS:SERVER:2"), client.translate("misc:NOUNS:SERVER:5")])}!`]; + + const status = ["Use /help to see all the commands!", `I'm in ${guildsCount} ${getNoun(guildsCount, [client.translate("misc:NOUNS:SERVER:1"), client.translate("misc:NOUNS:SERVER:2"), client.translate("misc:NOUNS:SERVER:5")])}!`]; logger.ready(`${getUsername(client.user)} is online! Serving ${guildsCount}`); // Fetching all app emojis, because we need to use them await client.application.emojis.fetch(); - const taskPath = resolve(client.configService.get("paths.tasks")); - - const cronTasks = await loadCronTasks(taskPath); + const tasksPath = resolve(client.configService.get("paths.tasks")); + const cronTasks = await loadCronTasks(tasksPath); const cronManager = new CronManager(cronTasks); await cronManager.init(); diff --git a/src/handlers/command-handler/index.ts b/src/handlers/command-handler/index.ts index 1587a816..0dfe4654 100644 --- a/src/handlers/command-handler/index.ts +++ b/src/handlers/command-handler/index.ts @@ -63,7 +63,6 @@ export class CommandHandler { const isAutocomplete = interaction.isAutocomplete(); const targetCommand = this.commands.find(cmd => cmd.data.name === interaction.commandName); - if (!targetCommand) return; // Skip if autocomplete handler is not defined diff --git a/src/helpers/extenders.ts b/src/helpers/extenders.ts index 1724f301..e603c259 100644 --- a/src/helpers/extenders.ts +++ b/src/helpers/extenders.ts @@ -41,24 +41,18 @@ export const replyTranslated = async (context: if (context instanceof BaseInteraction) { if (!context.isRepliable()) return; - if (options.edit) { - await context.editReply({ content }); - return; - } + if (options.edit) return await context.editReply({ content }); + await context.reply({ content, ephemeral: options.ephemeral || false, }); + return; } - if (options.edit) { - await context.edit({ - content, - allowedMentions: { repliedUser: options.mention || false }, - }); - return; - } + if (options.edit) return await context.edit({ content, allowedMentions: { repliedUser: options.mention || false } }); + await context.reply({ content, allowedMentions: { repliedUser: options.mention || false }, diff --git a/src/helpers/functions.ts b/src/helpers/functions.ts index 9772594e..9d13dec6 100644 --- a/src/helpers/functions.ts +++ b/src/helpers/functions.ts @@ -35,9 +35,7 @@ export function printDate(date: Date | number, locale: Intl.LocalesArgument = "e } export function getNoun(number: number, wordForms: string[]) { - if (!Array.isArray(wordForms) || wordForms.length !== 3) { - throw new Error("wordForms should be an array with three elements: [one, two, five]"); - } + if (!Array.isArray(wordForms) || wordForms.length !== 3) throw new Error("wordForms should be an array with three elements: [one, two, five]"); const [one, two, five] = wordForms; let n = Math.abs(number); diff --git a/src/helpers/tictactoe.js b/src/helpers/tictactoe.js deleted file mode 100644 index c3d238b9..00000000 --- a/src/helpers/tictactoe.js +++ /dev/null @@ -1,603 +0,0 @@ -// Thanks to simply-djs for this =) -// TODO: Refactor this please... - -import { ButtonBuilder, ActionRowBuilder, ButtonStyle, ComponentType } from "discord.js"; - -/** - * @param {import("discord.js").ChatInputCommandInteraction} interaction - * @param {any[]} options Array with options (everything is optional) - * @param {string} options.userSlash Name of the user option in the interaction - * @param {string} options.embedFooter Game's embed footer - * @param {string} options.embedColor Game's embed color - * @param {string} options.timeoutEmbedColor Game's embed timeout color - * @param {string} options.xEmoji Emoji for X - * @param {string} options.oEmoji Emoji for O - * @param {string} options.idleEmoji Emoji for "nothing" - * @returns {Promise} - */ -export async function tictactoe(interaction, options = {}) { - // eslint-disable-next-line no-async-promise-executor - return new Promise(async resolve => { - try { - const { client } = interaction; - let opponent; - - if (interaction.commandId) { - opponent = interaction.options.getUser(options.userSlash || "user"); - - if (!opponent) { - return interaction.reply({ - content: interaction.translate("fun/tictactoe:NO_USER"), - ephemeral: true, - }); - } - - if (opponent.bot) { - return interaction.reply({ - content: interaction.translate("fun/tictactoe:BOT_USER"), - ephemeral: true, - }); - } - - if (opponent.id === (interaction.user ? interaction.user : interaction.author).id) { - return interaction.reply({ - content: interaction.translate("misc:CANT_YOURSELF"), - ephemeral: true, - }); - } - } else if (!interaction.commandId) { - opponent = interaction.mentions.members.first()?.user; - - if (!opponent) { - return interaction.reply({ - content: interaction.translate("fun/tictactoe:NO_USER"), - }); - } - - if (opponent.bot) { - return interaction.reply({ - content: interaction.translate("fun/tictactoe:BOT_USER"), - ephemeral: true, - }); - } - - if (opponent.id === interaction.member.id) { - return interaction.reply({ - content: interaction.translate("misc:CANT_YOURSELF"), - }); - } - } - - const footer = options.embedFooter || client.config.embed.footer, - color = options.embedColor || client.config.embed.color, - user = interaction.user ? interaction.user : interaction.author; - - const acceptEmbed = client.embed({ - author: { - name: user.getUsername(), - iconURL: user.displayAvatarURL(), - }, - title: interaction.translate("fun/tictactoe:REQUEST_WAIT", { - user: opponent.getUsername(), - }), - color, - footer, - }); - - const accept = new ButtonBuilder().setLabel(interaction.translate("common:ACCEPT")).setStyle(ButtonStyle.Success).setCustomId("acceptttt"); - const decline = new ButtonBuilder().setLabel(interaction.translate("common:DECLINE")).setStyle(ButtonStyle.Danger).setCustomId("declinettt"); - const accep = new ActionRowBuilder().addComponents([accept, decline]); - - const m = await interaction.reply({ - content: interaction.translate("fun/tictactoe:INVITE_USER", { - opponent: opponent.id, - }), - embeds: [acceptEmbed], - components: [accep], - fetchReply: true, - }); - - const collector = m.createMessageComponentCollector({ - componentType: ComponentType.Button, - time: 30 * 1000, - }); - - collector.on("collect", async button => { - if (button.user.id !== opponent.id) { - return button.reply({ - content: interaction.translate("fun/tictactoe:REQUEST_SEND", { - opponent: opponent.id, - }), - ephemeral: true, - }); - } - - if (button.customId === "declinettt") { - button.deferUpdate(); - return collector.stop("decline"); - } else if (button.customId === "acceptttt") { - button.deferUpdate(); - collector.stop(); - - const fighters = [(interaction.user ? interaction.user : interaction.author).id, opponent.id].sort(() => (Math.random() > 0.5 ? 1 : -1)); - - const xEmoji = options.xEmoji || "❌"; - const oEmoji = options.oEmoji || "⭕"; - - const dashmoji = options.idleEmoji || "➖"; - - const Args = { - user: 0, - a1: { - style: ButtonStyle.Secondary, - emoji: dashmoji, - disabled: false, - }, - a2: { - style: ButtonStyle.Secondary, - emoji: dashmoji, - disabled: false, - }, - a3: { - style: ButtonStyle.Secondary, - emoji: dashmoji, - disabled: false, - }, - b1: { - style: ButtonStyle.Secondary, - emoji: dashmoji, - disabled: false, - }, - b2: { - style: ButtonStyle.Secondary, - emoji: dashmoji, - disabled: false, - }, - b3: { - style: ButtonStyle.Secondary, - emoji: dashmoji, - disabled: false, - }, - c1: { - style: ButtonStyle.Secondary, - emoji: dashmoji, - disabled: false, - }, - c2: { - style: ButtonStyle.Secondary, - emoji: dashmoji, - disabled: false, - }, - c3: { - style: ButtonStyle.Secondary, - emoji: dashmoji, - disabled: false, - }, - }; - - const epm = client.embed({ - title: interaction.translate("fun/tictactoe:DESCRIPTION"), - color, - footer, - }); - - let msg; - if (interaction.commandId) { - msg = await interaction.editReply({ - embeds: [ - epm.setDescription( - interaction.translate("fun/tictactoe:WAITING", { - user: Args.userid, - emoji: client.emojis.cache.get(oEmoji) || "⭕", - }), - ), - ], - }); - } else if (!interaction.commandId) { - msg = await button.message.edit({ - embeds: [ - epm.setDescription( - interaction.translate("fun/tictactoe:WAITING", { - user: Args.userid, - emoji: client.emojis.cache.get(oEmoji) || "⭕", - }), - ), - ], - }); - } - - await ttt(msg); - - async function ttt(m) { - Args.userid = fighters[Args.user]; - const won = { - "<:O_:863314110560993340>": false, - "<:X_:863314044781723668>": false, - }; - - const a1 = new ButtonBuilder().setStyle(Args.a1.style).setEmoji(Args.a1.emoji).setCustomId("a1").setDisabled(Args.a1.disabled); - const a2 = new ButtonBuilder().setStyle(Args.a2.style).setEmoji(Args.a2.emoji).setCustomId("a2").setDisabled(Args.a2.disabled); - const a3 = new ButtonBuilder().setStyle(Args.a3.style).setEmoji(Args.a3.emoji).setCustomId("a3").setDisabled(Args.a3.disabled); - const b1 = new ButtonBuilder().setStyle(Args.b1.style).setEmoji(Args.b1.emoji).setCustomId("b1").setDisabled(Args.b1.disabled); - const b2 = new ButtonBuilder().setStyle(Args.b2.style).setEmoji(Args.b2.emoji).setCustomId("b2").setDisabled(Args.b2.disabled); - const b3 = new ButtonBuilder().setStyle(Args.b3.style).setEmoji(Args.b3.emoji).setCustomId("b3").setDisabled(Args.b3.disabled); - const c1 = new ButtonBuilder().setStyle(Args.c1.style).setEmoji(Args.c1.emoji).setCustomId("c1").setDisabled(Args.c1.disabled); - const c2 = new ButtonBuilder().setStyle(Args.c2.style).setEmoji(Args.c2.emoji).setCustomId("c2").setDisabled(Args.c2.disabled); - const c3 = new ButtonBuilder().setStyle(Args.c3.style).setEmoji(Args.c3.emoji).setCustomId("c3").setDisabled(Args.c3.disabled); - const a = new ActionRowBuilder().addComponents([a1, a2, a3]); - const b = new ActionRowBuilder().addComponents([b1, b2, b3]); - const c = new ActionRowBuilder().addComponents([c1, c2, c3]); - const buttons = [a, b, c]; - - if (Args.a1.emoji === oEmoji && Args.b1.emoji === oEmoji && Args.c1.emoji === oEmoji) won["<:O_:863314110560993340>"] = true; - - if (Args.a2.emoji === oEmoji && Args.b2.emoji === oEmoji && Args.c2.emoji === oEmoji) won["<:O_:863314110560993340>"] = true; - - if (Args.a3.emoji === oEmoji && Args.b3.emoji === oEmoji && Args.c3.emoji === oEmoji) won["<:O_:863314110560993340>"] = true; - - if (Args.a1.emoji === oEmoji && Args.b2.emoji === oEmoji && Args.c3.emoji === oEmoji) won["<:O_:863314110560993340>"] = true; - - if (Args.a3.emoji === oEmoji && Args.b2.emoji === oEmoji && Args.c1.emoji === oEmoji) won["<:O_:863314110560993340>"] = true; - - if (Args.a1.emoji === oEmoji && Args.a2.emoji === oEmoji && Args.a3.emoji === oEmoji) won["<:O_:863314110560993340>"] = true; - - if (Args.b1.emoji === oEmoji && Args.b2.emoji === oEmoji && Args.b3.emoji === oEmoji) won["<:O_:863314110560993340>"] = true; - - if (Args.c1.emoji === oEmoji && Args.c2.emoji === oEmoji && Args.c3.emoji === oEmoji) won["<:O_:863314110560993340>"] = true; - - if (won["<:O_:863314110560993340>"] !== false) { - if (Args.user === 0) { - const won = await client.users.fetch(fighters[1]).catch(console.error); - resolve(won); - - if (options.resultBtn === true) { - return m.edit({ - content: interaction.translate("fun/tictactoe:WON", { - winner: fighters[1], - emoji: client.emojis.cache.get(oEmoji) || "⭕", - }), - components: buttons, - - embeds: [ - epm.setDescription( - interaction.translate("fun/tictactoe:WON", { - winner: fighters[1], - emoji: client.emojis.cache.get(oEmoji) || "⭕", - }), - ), - ], - }); - } else if (!options.resultBtn || options.resultBtn === false) { - return m.edit({ - content: interaction.translate("fun/tictactoe:WON", { - winner: fighters[1], - emoji: client.emojis.cache.get(oEmoji) || "⭕", - }), - - embeds: [ - epm.setDescription( - `${interaction.translate("fun/tictactoe:WON", { - winner: fighters[1], - emoji: client.emojis.cache.get(oEmoji) || "⭕", - })}\n\`\`\`\n${Args.a1.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.a2.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.a3.emoji - .replace(oEmoji, "⭕") - .replace(xEmoji, "❌")}\n${Args.b1.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.b2.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.b3.emoji - .replace(oEmoji, "⭕") - .replace(xEmoji, "❌")}\n${Args.c1.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.c2.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.c3.emoji - .replace(oEmoji, "⭕") - .replace(xEmoji, "❌")}\n\`\`\``.replaceAll(dashmoji, "➖"), - ), - ], - components: [], - }); - } - } else if (Args.user === 1) { - const won = await client.users.fetch(fighters[0]).catch(console.error); - resolve(won); - - if (options.resultBtn === true) { - return m.edit({ - content: interaction.translate("fun/tictactoe:WON", { - winner: fighters[0], - emoji: client.emojis.cache.get(oEmoji) || "⭕", - }), - components: buttons, - embeds: [ - epm.setDescription( - interaction.translate("fun/tictactoe:WON", { - winner: fighters[0], - emoji: client.emojis.cache.get(oEmoji) || "⭕", - }), - ), - ], - }); - } else if (!options.resultBtn || options.resultBtn === false) { - return m.edit({ - content: interaction.translate("fun/tictactoe:WON", { - winner: fighters[0], - emoji: client.emojis.cache.get(oEmoji) || "⭕", - }), - - embeds: [ - epm.setDescription( - `${interaction.translate("fun/tictactoe:WON", { - winner: fighters[0], - emoji: client.emojis.cache.get(oEmoji) || "⭕", - })}\n\`\`\`\n${Args.a1.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.a2.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.a3.emoji - .replace(oEmoji, "⭕") - .replace(xEmoji, "❌")}\n${Args.b1.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.b2.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.b3.emoji - .replace(oEmoji, "⭕") - .replace(xEmoji, "❌")}\n${Args.c1.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.c2.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.c3.emoji - .replace(oEmoji, "⭕") - .replace(xEmoji, "❌")}\n\`\`\``.replaceAll(dashmoji, "➖"), - ), - ], - components: [], - }); - } - } - } - - if (Args.a1.emoji === xEmoji && Args.b1.emoji === xEmoji && Args.c1.emoji === xEmoji) won["<:X_:863314044781723668>"] = true; - if (Args.a2.emoji === xEmoji && Args.b2.emoji === xEmoji && Args.c2.emoji === xEmoji) won["<:X_:863314044781723668>"] = true; - if (Args.a3.emoji === xEmoji && Args.b3.emoji === xEmoji && Args.c3.emoji === xEmoji) won["<:X_:863314044781723668>"] = true; - if (Args.a1.emoji === xEmoji && Args.b2.emoji === xEmoji && Args.c3.emoji === xEmoji) won["<:X_:863314044781723668>"] = true; - if (Args.a3.emoji === xEmoji && Args.b2.emoji === xEmoji && Args.c1.emoji === xEmoji) won["<:X_:863314044781723668>"] = true; - if (Args.a1.emoji === xEmoji && Args.a2.emoji === xEmoji && Args.a3.emoji === xEmoji) won["<:X_:863314044781723668>"] = true; - if (Args.b1.emoji === xEmoji && Args.b2.emoji === xEmoji && Args.b3.emoji === xEmoji) won["<:X_:863314044781723668>"] = true; - if (Args.c1.emoji === xEmoji && Args.c2.emoji === xEmoji && Args.c3.emoji === xEmoji) won["<:X_:863314044781723668>"] = true; - if (won["<:X_:863314044781723668>"] !== false) { - if (Args.user === 0) { - const won = await client.users.fetch(fighters[1]).catch(console.error); - resolve(won); - - if (options.resultBtn === true) { - return m.edit({ - content: interaction.translate("fun/tictactoe:WON", { - winner: fighters[1], - emoji: client.emojis.cache.get(oEmoji) || "⭕", - }), - components: buttons, - embeds: [ - epm.setDescription( - interaction.translate("fun/tictactoe:WON", { - winner: fighters[1], - emoji: client.emojis.cache.get(oEmoji) || "⭕", - }), - ), - ], - }); - } else if (!options.resultBtn || options.resultBtn === false) { - return m.edit({ - content: interaction.translate("fun/tictactoe:WON", { - winner: fighters[1], - emoji: client.emojis.cache.get(oEmoji) || "⭕", - }), - embeds: [ - epm.setDescription( - `${interaction.translate("fun/tictactoe:WON", { - winner: fighters[1], - emoji: client.emojis.cache.get(oEmoji) || "⭕", - })}\n\`\`\`\n${Args.a1.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.a2.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.a3.emoji - .replace(oEmoji, "⭕") - .replace(xEmoji, "❌")}\n${Args.b1.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.b2.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.b3.emoji - .replace(oEmoji, "⭕") - .replace(xEmoji, "❌")}\n${Args.c1.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.c2.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.c3.emoji - .replace(oEmoji, "⭕") - .replace(xEmoji, "❌")}\n\`\`\``.replaceAll(dashmoji, "➖"), - ), - ], - components: [], - }); - } - } else if (Args.user === 1) { - const won = await client.users.fetch(fighters[0]).catch(console.error); - resolve(won); - - if (options.resultBtn === true) { - return m.edit({ - content: interaction.translate("fun/tictactoe:WON", { - winner: fighters[0], - emoji: client.emojis.cache.get(oEmoji) || "⭕", - }), - components: buttons, - embeds: [ - epm.setDescription( - interaction.translate("fun/tictactoe:WON", { - winner: fighters[0], - emoji: client.emojis.cache.get(oEmoji) || "⭕", - }), - ), - ], - }); - } else { - return m.edit({ - content: interaction.translate("fun/tictactoe:WON", { - winner: fighters[0], - emoji: client.emojis.cache.get(oEmoji) || "⭕", - }), - embeds: [ - epm.setDescription( - `${interaction.translate("fun/tictactoe:WON", { - winner: fighters[0], - emoji: client.emojis.cache.get(oEmoji) || "⭕", - })}\n\`\`\`\n${Args.a1.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.a2.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.a3.emoji - .replace(oEmoji, "⭕") - .replace(xEmoji, "❌")}\n${Args.b1.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.b2.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.b3.emoji - .replace(oEmoji, "⭕") - .replace(xEmoji, "❌")}\n${Args.c1.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.c2.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.c3.emoji - .replace(oEmoji, "⭕") - .replace(xEmoji, "❌")}\n\`\`\``.replaceAll(dashmoji, "➖"), - ), - ], - components: [], - }); - } - } - } - - m.edit({ - content: `<@${Args.userid}>`, - embeds: [ - epm.setDescription( - interaction.translate("fun/tictactoe:WAITING", { - user: Args.userid, - emoji: Args.user === 0 ? `${client.emojis.cache.get(oEmoji) || "⭕"}` : `${client.emojis.cache.get(xEmoji) || "❌"}`, - }), - ), - ], - components: [a, b, c], - }); - - const collector = m.createMessageComponentCollector({ - componentType: ComponentType.Button, - max: 1, - }); - - collector.on("collect", b => { - if (b.user.id !== Args.userid) { - b.reply({ - content: interaction.translate("fun/tictactoe:CANT_PLAY"), - ephemeral: true, - }); - - ttt(m); - } else { - if (Args.user === 0) { - Args.user = 1; - Args[b.customId] = { - style: ButtonStyle.Success, - emoji: oEmoji, - disabled: true, - }; - } else { - Args.user = 0; - Args[b.customId] = { - style: ButtonStyle.Danger, - emoji: xEmoji, - disabled: true, - }; - } - b.deferUpdate(); - const map = (obj, fun) => - Object.entries(obj).reduce( - (prev, [key, value]) => ({ - ...prev, - [key]: fun(key, value), - }), - {}, - ); - const objectFilter = (obj, predicate) => - Object.keys(obj) - .filter(key => predicate(obj[key])) - .reduce((res, key) => ((res[key] = obj[key]), res), {}); - const Brgs = objectFilter( - map(Args, (_, fruit) => fruit.emoji === dashmoji), - num => num === true, - ); - - if (Object.keys(Brgs).length === 0) { - if (Args.a1.emoji === oEmoji && Args.b1.emoji === oEmoji && Args.c1.emoji === oEmoji) won["<:O_:863314110560993340>"] = true; - if (Args.a2.emoji === oEmoji && Args.b2.emoji === oEmoji && Args.c2.emoji === oEmoji) won["<:O_:863314110560993340>"] = true; - if (Args.a3.emoji === oEmoji && Args.b3.emoji === oEmoji && Args.c3.emoji === oEmoji) won["<:O_:863314110560993340>"] = true; - if (Args.a1.emoji === oEmoji && Args.b2.emoji === oEmoji && Args.c3.emoji === oEmoji) won["<:O_:863314110560993340>"] = true; - if (Args.a3.emoji === oEmoji && Args.b2.emoji === oEmoji && Args.c1.emoji === oEmoji) won["<:O_:863314110560993340>"] = true; - if (Args.a1.emoji === oEmoji && Args.a2.emoji === oEmoji && Args.a3.emoji === oEmoji) won["<:O_:863314110560993340>"] = true; - if (Args.b1.emoji === oEmoji && Args.b2.emoji === oEmoji && Args.b3.emoji === oEmoji) won["<:O_:863314110560993340>"] = true; - if (Args.c1.emoji === oEmoji && Args.c2.emoji === oEmoji && Args.c3.emoji === oEmoji) won["<:O_:863314110560993340>"] = true; - - if (won["<:O_:863314110560993340>"] === true) return ttt(m); - else if (won["<:X_:863314044781723668>"] === true) return; - else { - ttt(m); - - if (options.resultBtn === true) { - return m.edit({ - content: interaction.translate("fun/tictactoe:TIE"), - embeds: [epm.setDescription(interaction.translate("fun/tictactoe:TIE_DESC"))], - }); - } else { - return m - .edit({ - content: interaction.translate("fun/tictactoe:TIE"), - embeds: [ - epm.setDescription( - `${interaction.translate("fun/tictactoe:TIE_DESC")}!\n\`\`\`\n${Args.a1.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.a2.emoji - .replace(oEmoji, "⭕") - .replace(xEmoji, "❌")} | ${Args.a3.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")}\n${Args.b1.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.b2.emoji - .replace(oEmoji, "⭕") - .replace(xEmoji, "❌")} | ${Args.b3.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")}\n${Args.c1.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")} | ${Args.c2.emoji - .replace(oEmoji, "⭕") - .replace(xEmoji, "❌")} | ${Args.c3.emoji.replace(oEmoji, "⭕").replace(xEmoji, "❌")}\n\`\`\``.replaceAll(dashmoji, "➖"), - ), - ], - components: [], - }) - .catch(() => {}); - } - } - } - - ttt(m); - } - }); - collector.on("end", (collected, reason) => { - if (collected.size === 0 && reason === "time") { - m.edit({ - content: interaction.translate("fun/tictactoe:NO_ANSWER", { - user: Args.userid, - }), - components: [], - }); - } - }); - } - } - }); - - collector.on("end", (_, reason) => { - if (reason === "time") { - const embed = client.embed({ - author: { - name: user.getUsername(), - iconURL: user.displayAvatarURL(), - }, - title: interaction.translate("fun/tictactoe:NO_ANSWER_TITLE"), - description: interaction.translate("misc:TIMED_OUT"), - color: options.timeoutEmbedColor || "#C90000", - footer, - }); - - m.interaction.editReply({ - content: interaction.translate("fun/tictactoe:NOT_ANSWERED", { - user: opponent.id, - }), - embeds: [embed], - components: [], - }); - } - if (reason === "decline") { - const embed = client.embed({ - author: { - name: user.getUsername(), - iconURL: user.displayAvatarURL(), - }, - title: interaction.translate("fun/tictactoe:CANCELED"), - description: interaction.translate("fun/tictactoe:CANCELED_DESC", { - user: opponent.id, - }), - color: options.timeoutEmbedColor || "#C90000", - footer, - }); - - m.interaction.editReply({ - embeds: [embed], - components: [], - }); - } - }); - } catch (e) { - console.log("TicTacToe errored:", e); - } - }); -}; diff --git a/src/index.ts b/src/index.ts index e5746e7b..a8c2b882 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,11 +1,10 @@ import { ExtendedClient } from "./structures/client.js"; import logger from "./helpers/logger.js"; -import { CLIENT_INTENTS, CLIENT_ALLOWED_MENTIONS } from "./constants/index.js"; -import { Partials } from "discord.js"; +import { CLIENT_INTENTS, CLIENT_PARTIALS, CLIENT_ALLOWED_MENTIONS } from "./constants/index.js"; const client = new ExtendedClient({ intents: CLIENT_INTENTS, - partials: [Partials.Channel], + partials: CLIENT_PARTIALS, allowedMentions: CLIENT_ALLOWED_MENTIONS, }); @@ -13,7 +12,7 @@ client.init(); client .on("disconnect", () => logger.warn("Bot disconnected.")) - .on("reconnecting", () => logger.warn("Bot reconnecting...")) + .on("reconnecting", () => logger.warn("Bot is reconnecting...")) .on("warn", logger.warn) .on("error", logger.error); diff --git a/src/services/languages/locales/en-US/administration/addemoji.json b/src/services/languages/locales/en-US/administration/addemoji.json index ac755cfc..1ea7f618 100644 --- a/src/services/languages/locales/en-US/administration/addemoji.json +++ b/src/services/languages/locales/en-US/administration/addemoji.json @@ -1,5 +1,7 @@ { "DESCRIPTION": "Adds an emoji to the current server from given link", "USAGE": "[link] [name]", - "EXAMPLES": "addemoji link:https://google.com name:google" + "EXAMPLES": "addemoji link:https://google.com name:google", + "SUCCESS": "{{emoji}} has been added", + "ERROR": "An error occurred while adding {{name}}.\n```{{error}}```" } \ No newline at end of file diff --git a/src/services/languages/locales/en-US/administration/stealemoji.json b/src/services/languages/locales/en-US/administration/stealemoji.json index ffe85172..2a53c76e 100644 --- a/src/services/languages/locales/en-US/administration/stealemoji.json +++ b/src/services/languages/locales/en-US/administration/stealemoji.json @@ -1,7 +1,5 @@ { "DESCRIPTION": "Copy an emoji to the current server", "USAGE": "[emoji]", - "EXAMPLES": "stealemoji emoji::coolstorybob:", - "SUCCESS": "{{emoji}} has been added", - "ERROR": "An error occurred while adding {{name}}.\n```{{e}}```" + "EXAMPLES": "stealemoji emoji::coolstorybob:" } \ No newline at end of file diff --git a/src/services/languages/locales/ru-RU/administration/addemoji.json b/src/services/languages/locales/ru-RU/administration/addemoji.json index 93638e19..17e59135 100644 --- a/src/services/languages/locales/ru-RU/administration/addemoji.json +++ b/src/services/languages/locales/ru-RU/administration/addemoji.json @@ -1,5 +1,7 @@ { "DESCRIPTION": "Добавляет эмодзи на сервер по ссылке", "USAGE": "[link] [name]", - "EXAMPLES": "addemoji link:https://google.com name:google" + "EXAMPLES": "addemoji link:https://google.com name:google", + "SUCCESS": "{{emoji}} добавлен.", + "ERROR": "Произошла ошибка при добавлении {{name}}.\n```{{error}}```" } \ No newline at end of file diff --git a/src/services/languages/locales/uk-UA/administration/addemoji.json b/src/services/languages/locales/uk-UA/administration/addemoji.json index 8ef7869a..8ff22bf9 100644 --- a/src/services/languages/locales/uk-UA/administration/addemoji.json +++ b/src/services/languages/locales/uk-UA/administration/addemoji.json @@ -1,5 +1,7 @@ { "DESCRIPTION": "Додає емодзі на сервер за посиланням", "USAGE": "[link] [name]", - "EXAMPLES": "addemoji link:https://google.com name:google" + "EXAMPLES": "addemoji link:https://google.com name:google", + "SUCCESS": "{{emoji}} додано", + "ERROR": "Відбулася помилка при додаванні {{name}}.\n```{{error}}```" } \ No newline at end of file diff --git a/src/services/languages/locales/uk-UA/administration/stealemoji.json b/src/services/languages/locales/uk-UA/administration/stealemoji.json index 042ae58e..2e96b72f 100644 --- a/src/services/languages/locales/uk-UA/administration/stealemoji.json +++ b/src/services/languages/locales/uk-UA/administration/stealemoji.json @@ -1,7 +1,5 @@ { "DESCRIPTION": "Скопіювати емодзі на поточний сервер", "USAGE": "[emoji]", - "EXAMPLES": "stealemoji emoji::coolstorybob:", - "SUCCESS": "{{emoji}} додано", - "ERROR": "Відбулася помилка при додаванні {{name}}.\n```{{e}}```" + "EXAMPLES": "stealemoji emoji::coolstorybob:" } \ No newline at end of file diff --git a/src/utils/get-path.ts b/src/utils/get-path.ts index 1cd47c30..c7ff8b69 100644 --- a/src/utils/get-path.ts +++ b/src/utils/get-path.ts @@ -6,15 +6,12 @@ export const getFilePaths = async (directory: string, nesting: boolean) => { let filePaths: string[] = []; const absoluteDirectory = path.isAbsolute(directory) ? directory : path.join(PROJECT_ROOT, directory); - const files = await fs.readdir(absoluteDirectory, { withFileTypes: true }); for (const file of files) { const filePath = path.join(directory, file.name); - if (file.isFile()) { - filePaths.push(filePath); - } + if (file.isFile()) filePaths.push(filePath); if (nesting && file.isDirectory()) { const nestedFiles = await getFilePaths(filePath, true); diff --git a/src/utils/loadCronTasks.ts b/src/utils/loadCronTasks.ts index 45589fd3..42bb69f8 100644 --- a/src/utils/loadCronTasks.ts +++ b/src/utils/loadCronTasks.ts @@ -6,7 +6,6 @@ import { toFileURL } from "./resolve-file.js"; const loadCronTasks = async (taskPath: string): Promise => { try { const filePaths = (await getFilePaths(taskPath, true)).filter(file => file.endsWith(".js") || file.endsWith(".ts")); - const tasks = []; for (const filePath of filePaths) { diff --git a/src/utils/use-client.ts b/src/utils/use-client.ts index b44b8db8..6d98a471 100644 --- a/src/utils/use-client.ts +++ b/src/utils/use-client.ts @@ -2,8 +2,7 @@ import { SUPER_CONTEXT } from "@/constants/index.js"; export default function useClient() { const store = SUPER_CONTEXT.getStore(); - if (!store) { - throw new Error("Client is not initialized. Please initialize it first."); - } + if (!store) throw new Error("Client is not initialized. Please initialize it first."); + return store; }