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 5b16cc59..00000000 Binary files a/src/assets/fonts/KeepCalm-Medium.ttf and /dev/null differ diff --git a/src/assets/fonts/RubikMonoOne-Regular.ttf b/src/assets/fonts/RubikMonoOne-Regular.ttf deleted file mode 100644 index ee6af948..00000000 Binary files a/src/assets/fonts/RubikMonoOne-Regular.ttf and /dev/null differ diff --git a/src/assets/img/greetings_background.png b/src/assets/img/greetings_background.png deleted file mode 100644 index cc8d3d05..00000000 Binary files a/src/assets/img/greetings_background.png and /dev/null differ 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; }