From 1db24e47000a2dd48f38cbdc72ac0c4b47885817 Mon Sep 17 00:00:00 2001 From: AmaneSerenetia <74483226+MinazukiAmane@users.noreply.github.com> Date: Sun, 17 Mar 2024 13:58:37 +0900 Subject: [PATCH] dev sync latest --- .env.example | 15 +- .eslintrc.json | 17 + .gitbook.yaml | 4 + .gitignore | 1 + .prettierrc.json | 11 + bot.js | 28 +- config.js | 236 +- dashboard/app.js | 22 +- ...hed-1657722487-alerts.less => alerts.less} | 0 ...hed-1657722487-badges.less => badges.less} | 0 ...57722488-bootstrap.less => bootstrap.less} | 0 ...2488-breadcrumbs.less => breadcrumbs.less} | 0 ...-button-groups.less => button-groups.less} | 0 ...d-1657722487-buttons.less => buttons.less} | 0 ...1657722487-carousel.less => carousel.less} | 0 ...ashed-1657722487-close.less => close.less} | 0 ...trashed-1657722487-code.less => code.less} | 0 ...mations.less => component-animations.less} | 0 ...57722487-dropdowns.less => dropdowns.less} | 0 ...ashed-1657722488-forms.less => forms.less} | 0 ...722487-glyphicons.less => glyphicons.less} | 0 ...trashed-1657722487-grid.less => grid.less} | 0 ...88-input-groups.less => input-groups.less} | 0 ...57722487-jumbotron.less => jumbotron.less} | 0 ...hed-1657722488-labels.less => labels.less} | 0 ...722487-list-group.less => list-group.less} | 0 ...ashed-1657722487-media.less => media.less} | 0 ...hed-1657722488-mixins.less => mixins.less} | 0 ...hed-1657722488-modals.less => modals.less} | 0 ...hed-1657722487-navbar.less => navbar.less} | 0 ...trashed-1657722487-navs.less => navs.less} | 0 ...57722487-normalize.less => normalize.less} | 0 ...ashed-1657722488-pager.less => pager.less} | 0 ...722488-pagination.less => pagination.less} | 0 ...hed-1657722487-panels.less => panels.less} | 0 ...1657722487-popovers.less => popovers.less} | 0 ...ashed-1657722487-print.less => print.less} | 0 ...-progress-bars.less => progress-bars.less} | 0 ...nsive-embed.less => responsive-embed.less} | 0 ...ilities.less => responsive-utilities.less} | 0 ...2488-scaffolding.less => scaffolding.less} | 0 ...hed-1657722487-tables.less => tables.less} | 0 ...ashed-1657722487-theme.less => theme.less} | 0 ...722487-thumbnails.less => thumbnails.less} | 0 ...d-1657722487-tooltip.less => tooltip.less} | 0 ...trashed-1657722488-type.less => type.less} | 0 ...57722488-utilities.less => utilities.less} | 0 ...57722487-variables.less => variables.less} | 0 ...ashed-1657722488-wells.less => wells.less} | 0 ...717167-_all-skins.less => _all-skins.less} | 0 ...black-light.less => skin-black-light.less} | 0 ...717167-skin-black.less => skin-black.less} | 0 ...n-blue-light.less => skin-blue-light.less} | 0 ...57717168-skin-blue.less => skin-blue.less} | 0 ...green-light.less => skin-green-light.less} | 0 ...717167-skin-green.less => skin-green.less} | 0 ...rple-light.less => skin-purple-light.less} | 0 ...7167-skin-purple.less => skin-purple.less} | 0 ...kin-red-light.less => skin-red-light.less} | 0 ...1657717167-skin-red.less => skin-red.less} | 0 ...llow-light.less => skin-yellow-light.less} | 0 ...7167-skin-yellow.less => skin-yellow.less} | 0 ...ootstrap-slider.js => bootstrap-slider.js} | 0 ...ashed-1657722521-slider.css => slider.css} | 0 ...{.trashed-1657722660-aero.png => aero.png} | Bin ...hed-1657722661-aero@2x.png => aero@2x.png} | Bin ...{.trashed-1657722660-blue.png => blue.png} | Bin ...hed-1657722661-blue@2x.png => blue@2x.png} | Bin ...{.trashed-1657722661-flat.png => flat.png} | Bin ...hed-1657722659-flat@2x.png => flat@2x.png} | Bin ...trashed-1657722660-green.png => green.png} | Bin ...d-1657722660-green@2x.png => green@2x.png} | Bin ...{.trashed-1657722660-grey.png => grey.png} | Bin ...hed-1657722660-grey@2x.png => grey@2x.png} | Bin ...ashed-1657722661-orange.png => orange.png} | Bin ...1657722660-orange@2x.png => orange@2x.png} | Bin ...{.trashed-1657722660-pink.png => pink.png} | Bin ...hed-1657722661-pink@2x.png => pink@2x.png} | Bin ...ashed-1657722660-purple.png => purple.png} | Bin ...1657722660-purple@2x.png => purple@2x.png} | Bin .../{.trashed-1657722659-red.png => red.png} | Bin ...ashed-1657722659-red@2x.png => red@2x.png} | Bin ...ashed-1657722660-yellow.png => yellow.png} | Bin ...1657722660-yellow@2x.png => yellow@2x.png} | Bin ...d-1657722661-futurico.png => futurico.png} | Bin ...722661-futurico@2x.png => futurico@2x.png} | Bin ...{.trashed-1657722661-line.png => line.png} | Bin ...hed-1657722661-line@2x.png => line@2x.png} | Bin ...{.trashed-1657722662-aero.png => aero.png} | Bin ...hed-1657722662-aero@2x.png => aero@2x.png} | Bin ...{.trashed-1657722662-blue.png => blue.png} | Bin ...hed-1657722662-blue@2x.png => blue@2x.png} | Bin ...trashed-1657722662-green.png => green.png} | Bin ...d-1657722662-green@2x.png => green@2x.png} | Bin ...{.trashed-1657722662-grey.png => grey.png} | Bin ...hed-1657722662-grey@2x.png => grey@2x.png} | Bin ...hed-1657722662-minimal.png => minimal.png} | Bin ...57722662-minimal@2x.png => minimal@2x.png} | Bin ...ashed-1657722662-orange.png => orange.png} | Bin ...1657722662-orange@2x.png => orange@2x.png} | Bin ...{.trashed-1657722662-pink.png => pink.png} | Bin ...hed-1657722662-pink@2x.png => pink@2x.png} | Bin ...ashed-1657722662-purple.png => purple.png} | Bin ...1657722662-purple@2x.png => purple@2x.png} | Bin .../{.trashed-1657722661-red.png => red.png} | Bin ...ashed-1657722661-red@2x.png => red@2x.png} | Bin ...ashed-1657722662-yellow.png => yellow.png} | Bin ...1657722662-yellow@2x.png => yellow@2x.png} | Bin ...hed-1657722661-polaris.png => polaris.png} | Bin ...57722661-polaris@2x.png => polaris@2x.png} | Bin ...{.trashed-1657722661-aero.png => aero.png} | Bin ...hed-1657722661-aero@2x.png => aero@2x.png} | Bin ...{.trashed-1657722661-blue.png => blue.png} | Bin ...hed-1657722661-blue@2x.png => blue@2x.png} | Bin ...trashed-1657722661-green.png => green.png} | Bin ...d-1657722661-green@2x.png => green@2x.png} | Bin ...{.trashed-1657722661-grey.png => grey.png} | Bin ...hed-1657722661-grey@2x.png => grey@2x.png} | Bin ...ashed-1657722661-orange.png => orange.png} | Bin ...1657722661-orange@2x.png => orange@2x.png} | Bin ...{.trashed-1657722661-pink.png => pink.png} | Bin ...hed-1657722661-pink@2x.png => pink@2x.png} | Bin ...ashed-1657722661-purple.png => purple.png} | Bin ...1657722661-purple@2x.png => purple@2x.png} | Bin .../{.trashed-1657722661-red.png => red.png} | Bin ...ashed-1657722661-red@2x.png => red@2x.png} | Bin ...ashed-1657722661-square.png => square.png} | Bin ...1657722661-square@2x.png => square@2x.png} | Bin ...ashed-1657722661-yellow.png => yellow.png} | Bin ...1657722661-yellow@2x.png => yellow@2x.png} | Bin dashboard/routes/discord.js | 20 +- dashboard/routes/guild-manager.js | 148 +- dashboard/utils.js | 6 +- dashboard/views/includes/footer.ejs | 4 +- dashboard/views/includes/head.ejs | 2 +- dashboard/views/includes/sidebar.ejs | 28 +- dashboard/views/manager/basic.ejs | 211 +- dashboard/views/manager/greeting.ejs | 22 +- jsconfig.json | 8 +- package-lock.json | 8529 +++++++++++++---- package.json | 97 +- scripts/db-v4-to-v5.js | 375 + src/commands/admin/automod/anti.js | 184 + src/commands/admin/automod/autodelete.js | 213 + src/commands/admin/automod/automod.js | 571 +- src/commands/admin/automod/automodconfig.js | 245 - src/commands/admin/autorole.js | 122 +- src/commands/admin/counter-setup.js | 134 +- src/commands/admin/embed.js | 261 + src/commands/admin/flag-translation.js | 95 +- src/commands/admin/greeting/farewell.js | 377 +- src/commands/admin/greeting/welcome.js | 368 +- src/commands/admin/maxwarn.js | 164 +- src/commands/admin/modlog.js | 91 +- src/commands/admin/reaction-role/addrr.js | 124 +- src/commands/admin/reaction-role/removerr.js | 92 +- src/commands/admin/setprefix.js | 77 +- src/commands/admin/ticket/ticket.js | 457 - src/commands/admin/xpsystem.js | 71 - src/commands/anime/nsfw.js | 101 - src/commands/anime/react.js | 83 +- src/commands/economy/bank.js | 208 +- src/commands/economy/beg.js | 53 +- src/commands/economy/daily.js | 49 +- src/commands/economy/gamble.js | 69 +- src/commands/economy/sub/balance.js | 26 +- src/commands/economy/sub/deposit.js | 26 +- src/commands/economy/sub/transfer.js | 10 +- src/commands/economy/sub/withdraw.js | 26 +- src/commands/fun/animal.js | 62 + src/commands/fun/facts.js | 65 + src/commands/fun/flip.js | 127 + src/commands/fun/meme.js | 146 + src/commands/fun/snake.js | 39 + src/commands/fun/together.js | 80 + src/commands/giveaways/giveaway.js | 709 +- src/commands/giveaways/sub/edit.js | 4 +- src/commands/giveaways/sub/end.js | 2 +- src/commands/giveaways/sub/list.js | 2 +- src/commands/giveaways/sub/pause.js | 2 +- src/commands/giveaways/sub/reroll.js | 2 +- src/commands/giveaways/sub/resume.js | 2 +- src/commands/giveaways/sub/start.js | 40 +- src/commands/image/filters.js | 178 +- src/commands/image/generators.js | 144 +- src/commands/image/overlay.js | 111 + src/commands/information/avatar.js | 32 - src/commands/information/botinvite.js | 34 - src/commands/information/botstats.js | 31 - src/commands/information/channelinfo.js | 49 - src/commands/information/eligibility.js | 34 - src/commands/information/emojiinfo.js | 32 - src/commands/information/guildinfo.js | 31 - src/commands/information/leaderboard.js | 213 +- src/commands/information/message/avatar.js | 21 + src/commands/information/message/botinvite.js | 24 + src/commands/information/message/botstats.js | 21 + .../information/message/channelinfo.js | 38 + src/commands/information/message/emojiinfo.js | 22 + src/commands/information/message/guildinfo.js | 21 + src/commands/information/message/uptime.js | 18 + src/commands/information/message/userinfo.js | 22 + src/commands/information/ping.js | 47 +- src/commands/information/profile.js | 49 - src/commands/information/rank.js | 91 - src/commands/information/shared/avatar.js | 19 +- src/commands/information/shared/botinvite.js | 14 +- src/commands/information/shared/botstats.js | 73 +- src/commands/information/shared/channel.js | 60 +- .../information/shared/eligibility.js | 49 - src/commands/information/shared/emoji.js | 6 +- src/commands/information/shared/guild.js | 79 +- src/commands/information/shared/profile.js | 31 - src/commands/information/shared/update.js | 45 - src/commands/information/shared/user.js | 44 +- src/commands/information/slash-bot.js | 104 - src/commands/information/slash-info.js | 140 - src/commands/information/slash/bot.js | 95 + src/commands/information/slash/info.js | 135 + src/commands/information/update.js | 31 - src/commands/information/uptime.js | 28 - src/commands/information/userinfo.js | 33 - src/commands/invites/addinvites.js | 88 +- src/commands/invites/invitecodes.js | 68 +- src/commands/invites/inviter.js | 88 +- src/commands/invites/inviterank.js | 157 +- src/commands/invites/inviteranks.js | 60 +- src/commands/invites/invites.js | 100 +- src/commands/invites/invitesimport.js | 68 +- src/commands/invites/invitetracker.js | 101 +- src/commands/invites/resetInvites.js | 76 +- src/commands/moderation/ban.js | 99 +- src/commands/moderation/deafen.js | 36 - src/commands/moderation/disconnect.js | 35 - src/commands/moderation/kick.js | 90 +- src/commands/moderation/message/deafen.js | 25 + src/commands/moderation/message/disconnect.js | 24 + src/commands/moderation/message/move.js | 34 + src/commands/moderation/message/purge.js | 39 + .../moderation/message/purgeattachment.js | 41 + src/commands/moderation/message/purgebots.js | 41 + src/commands/moderation/message/purgelinks.js | 41 + src/commands/moderation/message/purgetoken.js | 42 + src/commands/moderation/message/purgeuser.js | 44 + src/commands/moderation/message/undeafen.js | 28 + src/commands/moderation/message/vmute.js | 25 + src/commands/moderation/message/vunmute.js | 28 + src/commands/moderation/move.js | 44 - src/commands/moderation/nick.js | 146 +- src/commands/moderation/purge.js | 46 - src/commands/moderation/purgeattachment.js | 48 - src/commands/moderation/purgebots.js | 47 - src/commands/moderation/purgelinks.js | 48 - src/commands/moderation/purgetoken.js | 49 - src/commands/moderation/purgeuser.js | 52 - src/commands/moderation/shared/deafen.js | 14 +- src/commands/moderation/shared/disconnect.js | 12 +- src/commands/moderation/shared/move.js | 16 +- src/commands/moderation/shared/undeafen.js | 14 +- src/commands/moderation/shared/vmute.js | 14 +- src/commands/moderation/shared/vunmute.js | 14 +- src/commands/moderation/slash-purge.js | 232 - src/commands/moderation/slash-voice.js | 176 - src/commands/moderation/slash/purge.js | 224 + src/commands/moderation/slash/voice.js | 169 + src/commands/moderation/softban.js | 90 +- src/commands/moderation/timeout.js | 132 +- src/commands/moderation/unban.js | 125 + src/commands/moderation/undeafen.js | 36 - src/commands/moderation/untimeout.js | 94 +- src/commands/moderation/vmute.js | 36 - src/commands/moderation/vunmute.js | 36 - src/commands/moderation/warn.js | 88 +- src/commands/moderation/warnings.js | 130 +- src/commands/music/bassboost.js | 103 +- src/commands/music/loop.js | 94 +- src/commands/music/lyric.js | 66 + src/commands/music/lyrics.js | 139 - src/commands/music/np.js | 97 +- src/commands/music/pause.js | 51 +- src/commands/music/play.js | 320 +- src/commands/music/queue.js | 75 +- src/commands/music/resume.js | 53 +- src/commands/music/search.js | 408 +- src/commands/music/seek.js | 73 +- src/commands/music/shuffle.js | 51 +- src/commands/music/skip.js | 59 +- src/commands/music/stop.js | 61 +- src/commands/music/volume.js | 76 +- src/commands/owner/eval.js | 88 +- src/commands/owner/leaveserver.js | 37 + src/commands/owner/listservers.js | 129 + src/commands/social/reputation.js | 147 +- src/commands/stats/rank.js | 82 + src/commands/stats/stats.js | 93 + src/commands/stats/statstracking.js | 60 + src/commands/stats/xp.js | 115 + src/commands/suggestions/suggest.js | 99 + src/commands/suggestions/suggestion.js | 422 + src/commands/ticket/ticket.js | 417 + src/commands/ticket/ticketcat.js | 172 + src/commands/utility/bigemoji.js | 71 +- src/commands/utility/covid.js | 125 +- src/commands/utility/github.js | 92 +- src/commands/utility/help.js | 175 +- src/commands/utility/paste.js | 79 +- src/commands/utility/pokedex.js | 73 +- src/commands/utility/proxies.js | 73 +- src/commands/utility/translate.js | 150 +- src/commands/utility/urban.js | 95 +- src/commands/utility/weather.js | 101 +- src/contexts/avatar.js | 57 +- src/contexts/profile.js | 24 - src/data.json | 62 +- src/database/mongoose.js | 32 + src/database/schemas/AutomodLogs.js | 39 + src/{ => database}/schemas/Giveaways.js | 5 +- src/database/schemas/Guild.js | 153 + src/{ => database}/schemas/Member.js | 59 +- src/database/schemas/MemberStats.js | 66 + src/{ => database}/schemas/ModLog.js | 50 +- .../schemas/ReactionRoles.js} | 57 +- src/database/schemas/Suggestions.js | 70 + src/{ => database}/schemas/TranslateLog.js | 24 +- src/database/schemas/User.js | 72 + src/events/guild/guildCreate.js | 33 +- src/events/guild/guildDelete.js | 41 +- src/events/interactions/interactionCreate.js | 62 +- src/events/invite/inviteCreate.js | 4 +- src/events/invite/inviteDelete.js | 4 +- src/events/message/messageCreate.js | 53 +- src/events/message/messageDelete.js | 27 +- src/events/music/nodeConnect.js | 8 - src/events/music/nodeError.js | 9 - src/events/music/nodeReconnect.js | 8 - src/events/music/queueEnd.js | 12 - src/events/music/trackError.js | 11 - src/events/music/trackStart.js | 25 - src/events/raw.js | 7 - src/events/reaction/messageReactionAdd.js | 16 +- src/events/reaction/messageReactionRemove.js | 10 +- src/events/ready.js | 51 +- src/events/voice/voiceStateUpdate.js | 31 +- src/handlers/automod.js | 159 +- src/handlers/command.js | 222 + src/handlers/context.js | 69 + src/handlers/counter.js | 5 +- .../giveaway.js} | 29 +- src/handlers/greeting.js | 34 +- src/handlers/index.js | 10 +- src/handlers/invite.js | 21 +- src/handlers/lavaclient.js | 83 + src/handlers/presence.js | 48 + src/handlers/reaction.js | 109 - src/handlers/reactionRoles.js | 46 + src/handlers/stats.js | 120 + src/handlers/suggestion.js | 360 + src/handlers/ticket.js | 292 +- src/handlers/translation.js | 90 + src/handlers/xp.js | 51 - src/helpers/BotUtils.js | 80 + src/helpers/HttpUtils.js | 107 + src/helpers/ModUtils.js | 525 + src/helpers/Utils.js | 136 + src/helpers/Validator.js | 227 + src/helpers/channelTypes.js | 31 + src/helpers/extenders/Guild.js | 115 + src/helpers/extenders/GuildChannel.js | 30 + src/helpers/extenders/Message.js | 25 + src/helpers/logger.js | 134 +- src/helpers/permissions.js | 43 + src/schemas/Guild.js | 150 - src/schemas/User.js | 56 - src/structures/BaseContext.js | 165 +- src/structures/BotClient.js | 277 +- src/structures/Command.js | 493 +- src/structures/CommandCategory.js | 24 +- src/structures/MusicManager.js | 41 - src/utils/botUtils.js | 177 - src/utils/gaUtils.js | 17 - src/utils/guildUtils.js | 172 - src/utils/httpUtils.js | 108 - src/utils/imageUtils.js | 71 - src/utils/miscUtils.js | 114 - src/utils/modUtils.js | 497 - src/utils/ticketUtils.js | 220 - 386 files changed, 20545 insertions(+), 12263 deletions(-) create mode 100644 .eslintrc.json create mode 100644 .gitbook.yaml create mode 100644 .prettierrc.json rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-alerts.less => alerts.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-badges.less => badges.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722488-bootstrap.less => bootstrap.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722488-breadcrumbs.less => breadcrumbs.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-button-groups.less => button-groups.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-buttons.less => buttons.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-carousel.less => carousel.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-close.less => close.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-code.less => code.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-component-animations.less => component-animations.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-dropdowns.less => dropdowns.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722488-forms.less => forms.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-glyphicons.less => glyphicons.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-grid.less => grid.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722488-input-groups.less => input-groups.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-jumbotron.less => jumbotron.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722488-labels.less => labels.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-list-group.less => list-group.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-media.less => media.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722488-mixins.less => mixins.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722488-modals.less => modals.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-navbar.less => navbar.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-navs.less => navs.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-normalize.less => normalize.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722488-pager.less => pager.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722488-pagination.less => pagination.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-panels.less => panels.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-popovers.less => popovers.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-print.less => print.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722488-progress-bars.less => progress-bars.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-responsive-embed.less => responsive-embed.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722488-responsive-utilities.less => responsive-utilities.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722488-scaffolding.less => scaffolding.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-tables.less => tables.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-theme.less => theme.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-thumbnails.less => thumbnails.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-tooltip.less => tooltip.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722488-type.less => type.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722488-utilities.less => utilities.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722487-variables.less => variables.less} (100%) rename dashboard/public/build/bootstrap-less/{.trashed-1657722488-wells.less => wells.less} (100%) rename dashboard/public/build/less/skins/{.trashed-1657717167-_all-skins.less => _all-skins.less} (100%) rename dashboard/public/build/less/skins/{.trashed-1657717167-skin-black-light.less => skin-black-light.less} (100%) rename dashboard/public/build/less/skins/{.trashed-1657717167-skin-black.less => skin-black.less} (100%) rename dashboard/public/build/less/skins/{.trashed-1657717167-skin-blue-light.less => skin-blue-light.less} (100%) rename dashboard/public/build/less/skins/{.trashed-1657717168-skin-blue.less => skin-blue.less} (100%) rename dashboard/public/build/less/skins/{.trashed-1657717168-skin-green-light.less => skin-green-light.less} (100%) rename dashboard/public/build/less/skins/{.trashed-1657717167-skin-green.less => skin-green.less} (100%) rename dashboard/public/build/less/skins/{.trashed-1657717168-skin-purple-light.less => skin-purple-light.less} (100%) rename dashboard/public/build/less/skins/{.trashed-1657717167-skin-purple.less => skin-purple.less} (100%) rename dashboard/public/build/less/skins/{.trashed-1657717167-skin-red-light.less => skin-red-light.less} (100%) rename dashboard/public/build/less/skins/{.trashed-1657717167-skin-red.less => skin-red.less} (100%) rename dashboard/public/build/less/skins/{.trashed-1657717168-skin-yellow-light.less => skin-yellow-light.less} (100%) rename dashboard/public/build/less/skins/{.trashed-1657717167-skin-yellow.less => skin-yellow.less} (100%) rename dashboard/public/plugins/bootstrap-slider/{.trashed-1657722521-bootstrap-slider.js => bootstrap-slider.js} (100%) rename dashboard/public/plugins/bootstrap-slider/{.trashed-1657722521-slider.css => slider.css} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722660-aero.png => aero.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722661-aero@2x.png => aero@2x.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722660-blue.png => blue.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722661-blue@2x.png => blue@2x.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722661-flat.png => flat.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722659-flat@2x.png => flat@2x.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722660-green.png => green.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722660-green@2x.png => green@2x.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722660-grey.png => grey.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722660-grey@2x.png => grey@2x.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722661-orange.png => orange.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722660-orange@2x.png => orange@2x.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722660-pink.png => pink.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722661-pink@2x.png => pink@2x.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722660-purple.png => purple.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722660-purple@2x.png => purple@2x.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722659-red.png => red.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722659-red@2x.png => red@2x.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722660-yellow.png => yellow.png} (100%) rename dashboard/public/plugins/iCheck/flat/{.trashed-1657722660-yellow@2x.png => yellow@2x.png} (100%) rename dashboard/public/plugins/iCheck/futurico/{.trashed-1657722661-futurico.png => futurico.png} (100%) rename dashboard/public/plugins/iCheck/futurico/{.trashed-1657722661-futurico@2x.png => futurico@2x.png} (100%) rename dashboard/public/plugins/iCheck/line/{.trashed-1657722661-line.png => line.png} (100%) rename dashboard/public/plugins/iCheck/line/{.trashed-1657722661-line@2x.png => line@2x.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-aero.png => aero.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-aero@2x.png => aero@2x.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-blue.png => blue.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-blue@2x.png => blue@2x.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-green.png => green.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-green@2x.png => green@2x.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-grey.png => grey.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-grey@2x.png => grey@2x.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-minimal.png => minimal.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-minimal@2x.png => minimal@2x.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-orange.png => orange.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-orange@2x.png => orange@2x.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-pink.png => pink.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-pink@2x.png => pink@2x.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-purple.png => purple.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-purple@2x.png => purple@2x.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722661-red.png => red.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722661-red@2x.png => red@2x.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-yellow.png => yellow.png} (100%) rename dashboard/public/plugins/iCheck/minimal/{.trashed-1657722662-yellow@2x.png => yellow@2x.png} (100%) rename dashboard/public/plugins/iCheck/polaris/{.trashed-1657722661-polaris.png => polaris.png} (100%) rename dashboard/public/plugins/iCheck/polaris/{.trashed-1657722661-polaris@2x.png => polaris@2x.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-aero.png => aero.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-aero@2x.png => aero@2x.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-blue.png => blue.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-blue@2x.png => blue@2x.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-green.png => green.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-green@2x.png => green@2x.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-grey.png => grey.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-grey@2x.png => grey@2x.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-orange.png => orange.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-orange@2x.png => orange@2x.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-pink.png => pink.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-pink@2x.png => pink@2x.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-purple.png => purple.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-purple@2x.png => purple@2x.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-red.png => red.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-red@2x.png => red@2x.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-square.png => square.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-square@2x.png => square@2x.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-yellow.png => yellow.png} (100%) rename dashboard/public/plugins/iCheck/square/{.trashed-1657722661-yellow@2x.png => yellow@2x.png} (100%) create mode 100644 scripts/db-v4-to-v5.js create mode 100644 src/commands/admin/automod/anti.js create mode 100644 src/commands/admin/automod/autodelete.js delete mode 100644 src/commands/admin/automod/automodconfig.js create mode 100644 src/commands/admin/embed.js delete mode 100644 src/commands/admin/ticket/ticket.js delete mode 100644 src/commands/admin/xpsystem.js delete mode 100644 src/commands/anime/nsfw.js create mode 100644 src/commands/fun/animal.js create mode 100644 src/commands/fun/facts.js create mode 100644 src/commands/fun/flip.js create mode 100644 src/commands/fun/meme.js create mode 100644 src/commands/fun/snake.js create mode 100644 src/commands/fun/together.js create mode 100644 src/commands/image/overlay.js delete mode 100644 src/commands/information/avatar.js delete mode 100644 src/commands/information/botinvite.js delete mode 100644 src/commands/information/botstats.js delete mode 100644 src/commands/information/channelinfo.js delete mode 100644 src/commands/information/eligibility.js delete mode 100644 src/commands/information/emojiinfo.js delete mode 100644 src/commands/information/guildinfo.js create mode 100644 src/commands/information/message/avatar.js create mode 100644 src/commands/information/message/botinvite.js create mode 100644 src/commands/information/message/botstats.js create mode 100644 src/commands/information/message/channelinfo.js create mode 100644 src/commands/information/message/emojiinfo.js create mode 100644 src/commands/information/message/guildinfo.js create mode 100644 src/commands/information/message/uptime.js create mode 100644 src/commands/information/message/userinfo.js delete mode 100644 src/commands/information/profile.js delete mode 100644 src/commands/information/rank.js delete mode 100644 src/commands/information/shared/eligibility.js delete mode 100644 src/commands/information/shared/profile.js delete mode 100644 src/commands/information/shared/update.js delete mode 100644 src/commands/information/slash-bot.js delete mode 100644 src/commands/information/slash-info.js create mode 100644 src/commands/information/slash/bot.js create mode 100644 src/commands/information/slash/info.js delete mode 100644 src/commands/information/update.js delete mode 100644 src/commands/information/uptime.js delete mode 100644 src/commands/information/userinfo.js delete mode 100644 src/commands/moderation/deafen.js delete mode 100644 src/commands/moderation/disconnect.js create mode 100644 src/commands/moderation/message/deafen.js create mode 100644 src/commands/moderation/message/disconnect.js create mode 100644 src/commands/moderation/message/move.js create mode 100644 src/commands/moderation/message/purge.js create mode 100644 src/commands/moderation/message/purgeattachment.js create mode 100644 src/commands/moderation/message/purgebots.js create mode 100644 src/commands/moderation/message/purgelinks.js create mode 100644 src/commands/moderation/message/purgetoken.js create mode 100644 src/commands/moderation/message/purgeuser.js create mode 100644 src/commands/moderation/message/undeafen.js create mode 100644 src/commands/moderation/message/vmute.js create mode 100644 src/commands/moderation/message/vunmute.js delete mode 100644 src/commands/moderation/move.js delete mode 100644 src/commands/moderation/purge.js delete mode 100644 src/commands/moderation/purgeattachment.js delete mode 100644 src/commands/moderation/purgebots.js delete mode 100644 src/commands/moderation/purgelinks.js delete mode 100644 src/commands/moderation/purgetoken.js delete mode 100644 src/commands/moderation/purgeuser.js delete mode 100644 src/commands/moderation/slash-purge.js delete mode 100644 src/commands/moderation/slash-voice.js create mode 100644 src/commands/moderation/slash/purge.js create mode 100644 src/commands/moderation/slash/voice.js create mode 100644 src/commands/moderation/unban.js delete mode 100644 src/commands/moderation/undeafen.js delete mode 100644 src/commands/moderation/vmute.js delete mode 100644 src/commands/moderation/vunmute.js create mode 100644 src/commands/music/lyric.js delete mode 100644 src/commands/music/lyrics.js create mode 100644 src/commands/owner/leaveserver.js create mode 100644 src/commands/owner/listservers.js create mode 100644 src/commands/stats/rank.js create mode 100644 src/commands/stats/stats.js create mode 100644 src/commands/stats/statstracking.js create mode 100644 src/commands/stats/xp.js create mode 100644 src/commands/suggestions/suggest.js create mode 100644 src/commands/suggestions/suggestion.js create mode 100644 src/commands/ticket/ticket.js create mode 100644 src/commands/ticket/ticketcat.js delete mode 100644 src/contexts/profile.js create mode 100644 src/database/mongoose.js create mode 100644 src/database/schemas/AutomodLogs.js rename src/{ => database}/schemas/Giveaways.js (97%) create mode 100644 src/database/schemas/Guild.js rename src/{ => database}/schemas/Member.js (63%) create mode 100644 src/database/schemas/MemberStats.js rename src/{ => database}/schemas/ModLog.js (52%) rename src/{schemas/Message.js => database/schemas/ReactionRoles.js} (68%) create mode 100644 src/database/schemas/Suggestions.js rename src/{ => database}/schemas/TranslateLog.js (65%) create mode 100644 src/database/schemas/User.js delete mode 100644 src/events/music/nodeConnect.js delete mode 100644 src/events/music/nodeError.js delete mode 100644 src/events/music/nodeReconnect.js delete mode 100644 src/events/music/queueEnd.js delete mode 100644 src/events/music/trackError.js delete mode 100644 src/events/music/trackStart.js delete mode 100644 src/events/raw.js create mode 100644 src/handlers/command.js create mode 100644 src/handlers/context.js rename src/{structures/GiveawayManager.js => handlers/giveaway.js} (54%) create mode 100644 src/handlers/lavaclient.js create mode 100644 src/handlers/presence.js delete mode 100644 src/handlers/reaction.js create mode 100644 src/handlers/reactionRoles.js create mode 100644 src/handlers/stats.js create mode 100644 src/handlers/suggestion.js create mode 100644 src/handlers/translation.js delete mode 100644 src/handlers/xp.js create mode 100644 src/helpers/BotUtils.js create mode 100644 src/helpers/HttpUtils.js create mode 100644 src/helpers/ModUtils.js create mode 100644 src/helpers/Utils.js create mode 100644 src/helpers/Validator.js create mode 100644 src/helpers/channelTypes.js create mode 100644 src/helpers/extenders/Guild.js create mode 100644 src/helpers/extenders/GuildChannel.js create mode 100644 src/helpers/extenders/Message.js create mode 100644 src/helpers/permissions.js delete mode 100644 src/schemas/Guild.js delete mode 100644 src/schemas/User.js delete mode 100644 src/structures/MusicManager.js delete mode 100644 src/utils/botUtils.js delete mode 100644 src/utils/gaUtils.js delete mode 100644 src/utils/guildUtils.js delete mode 100644 src/utils/httpUtils.js delete mode 100644 src/utils/imageUtils.js delete mode 100644 src/utils/miscUtils.js delete mode 100644 src/utils/modUtils.js delete mode 100644 src/utils/ticketUtils.js diff --git a/.env.example b/.env.example index 349bdfe..0179419 100644 --- a/.env.example +++ b/.env.example @@ -1,14 +1,21 @@ +@@ -1,23 +0,0 @@ BOT_TOKEN= -MONGO_CONNECTION=mongodb://0.0.0.0:27017 +MONGO_CONNECTION= +# Webhooks [Optional] ERROR_LOGS= JOIN_LEAVE_LOGS= -BOT_SECRET=HtLZgRhB3BCsAurCnaew262TylrJV5-Q -SESSION_PASSWORD=AmaneChanDesu12 +BOT_SECRET= +SESSION_PASSWORD= +# Required for Weather Command (https://weatherstack.com) WEATHERSTACK_KEY= +# Required for image commands (https://strangeapi.fun/docs) +STRANGE_API_KEY= + +# SPOTFIY [Required for Spotify Support] SPOTIFY_CLIENT_ID= -SPOTIFY_CLIENT_SECRET= +SPOTIFY_CLIENT_SECRET= \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..6e03748 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,17 @@ +{ + "env": { + "node": true, + "commonjs": true, + "es2021": true + }, + "extends": "eslint:recommended", + "parserOptions": { + "ecmaVersion": 12 + }, + "plugins": ["jsdoc"], + "rules": { + "no-unused-vars": ["error", { "args": "none" }], + "jsdoc/no-undefined-types": 1, + "no-cond-assign": 0 + } +} diff --git a/.gitbook.yaml b/.gitbook.yaml new file mode 100644 index 0000000..e66b6e8 --- /dev/null +++ b/.gitbook.yaml @@ -0,0 +1,4 @@ +root: ./docs/ +structure: + readme: ../README.md + summary: SUMMARY.md diff --git a/.gitignore b/.gitignore index 24756d5..e9cd46f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ node_modules docs +.env.asli # Logs logs diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..43763f0 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,11 @@ +{ + "trailingComma": "es5", + "tabWidth": 2, + "useTabs": false, + "semi": true, + "singleQuote": false, + "printWidth": 120, + "bracketSpacing": true, + "arrowParens": "always", + "endOfLine": "crlf" +} diff --git a/bot.js b/bot.js index 068d126..799a785 100644 --- a/bot.js +++ b/bot.js @@ -1,11 +1,17 @@ require("dotenv").config(); require("module-alias/register"); -const path = require("path"); -const { startupCheck } = require("@utils/botUtils"); -const { BotClient } = require("@src/structures"); +// register extenders +require("@helpers/extenders/Message"); +require("@helpers/extenders/Guild"); +require("@helpers/extenders/GuildChannel"); -global.__appRoot = path.resolve(__dirname); +const { checkForUpdates } = require("@helpers/BotUtils"); +const { initializeMongoose } = require("@src/database/mongoose"); +const { BotClient } = require("@src/structures"); +const { validateConfiguration } = require("@helpers/Validator"); + +validateConfiguration(); // initialize client const client = new BotClient(); @@ -13,21 +19,29 @@ client.loadCommands("src/commands"); client.loadContexts("src/contexts"); client.loadEvents("src/events"); - // find unhandled promise rejections process.on("unhandledRejection", (err) => client.logger.error(`Unhandled exception`, err)); (async () => { - await startupCheck(); + // check for updates + await checkForUpdates(); + + // start the dashboard if (client.config.DASHBOARD.enabled) { client.logger.log("Launching dashboard"); try { const { launch } = require("@root/dashboard/app"); + + // let the dashboard initialize the database await launch(client); } catch (ex) { client.logger.error("Failed to launch dashboard", ex); } + } else { + // initialize the database + await initializeMongoose(); } - await client.initializeMongoose(); + + // start the client await client.login(process.env.BOT_TOKEN); })(); diff --git a/config.js b/config.js index 3c72f03..d60b6b9 100644 --- a/config.js +++ b/config.js @@ -1,110 +1,134 @@ module.exports = { - OWNER_IDS: ["334307216926703616","1010905208391487548"], // Bot owner ID's - PREFIX: "::", // Default prefix for the bot - SUPPORT_SERVER: "https://kiera-bot.serenetia.com", // Your bot support server - PRESENCE: { - ENABLED: true, // Whether or not the bot should update its status - STATUS: "online", // The bot's status [online, idle, dnd, invisible] - TYPE: "LISTENING", // Status type for the bot [PLAYING | LISTENING | WATCHING | COMPETING] - MESSAGE: "/play with {members} members in {servers} servers", // Your bot status message - }, - DASHBOARD: { - enabled: true, // enable or disable dashboard - baseURL: "https://dash-kiera.serenetia.com", // base url - failureURL: "https://dash-kiera.serenetia.com", // failure redirect url - port: "3559", // port to run the bot on - }, - INTERACTIONS: { - SLASH: true, // Should the interactions be enabled - CONTEXT: true, // Should contexts be enabled - GLOBAL: true, // Should the interactions be registered globally - TEST_GUILD_ID: "753500548656791573", // Guild ID where the interactions should be registered. [** Test you commands here first **] //NOT REQUIRED - }, - XP_SYSTEM: { - COOLDOWN: 5, // Cooldown in seconds between messages - DEFAULT_LVL_UP_MSG: "{m}, You just advanced to **Level {l}**", - }, - MISCELLANEOUS: { - DAILY_COINS: 100, // coins to be received by daily command - }, - ECONOMY: { - CURRENCY: "₪", - DAILY_COINS: 1000, // coins to be received by daily command - MIN_BEG_AMOUNT: 1000, // minimum coins to be received when beg command is used - MAX_BEG_AMOUNT: 25000, // maximum coins to be received when beg command is used - }, - SUGGESTIONS: { - ENABLED: true, // Should the suggestion system be enabled - EMOJI: { - UP_VOTE: "⬆️", - DOWN_VOTE: "⬇️", - }, - DEFAULT_EMBED: "#0099ff", - APPROVED_EMBED: "#00ff00", - DENIED_EMBED: "#ff0000", - }, - IMAGE: { - BASE_API: "https://image-api.strangebot.xyz", - }, - MUSIC: { - IDLE_TIME: 60, // Time in seconds before the bot disconnects from the voice channel - MAX_SEARCH_RESULTS: 20, - NODES: [ - { - host: "lavalink.serenetia.com", - port: 443, - password: "amanechan", - secure: true, - version: "v3", - }, - { - host: "lavalink-sg.serenetia.com", - port: 443, - password: "amanechan", - secure: true, - version: "v3", - }, - { - host: "lavalink-sg2.serenetia.com", - port: 443, - password: "amanechan", - secure: true, - version: "v4", - useVersionPath: true, - }, - ], - }, - /* Bot Embed Colors */ + OWNER_IDS: ["334307216926703616","1010905208391487548"], // Bot owner ID's + SUPPORT_SERVER: "https://kiera-bot.serenetia.com", // Your bot support server + PREFIX_COMMANDS: { + ENABLED: true, // Enable/Disable prefix commands + DEFAULT_PREFIX: "kt?", // Default prefix for the bot + }, + INTERACTIONS: { + SLASH: true, // Should the interactions be enabled + CONTEXT: true, // Should contexts be enabled + GLOBAL: true, // Should the interactions be registered globally + TEST_GUILD_ID: "753500548656791573", // Guild ID where the interactions should be registered. [** Test you commands here first **] + }, + EMBED_COLORS: { + BOT_EMBED: "#068ADD", + TRANSPARENT: "#36393F", + SUCCESS: "#00A56A", + ERROR: "#D61A3C", + WARNING: "#F7E919", + }, + CACHE_SIZE: { + GUILDS: 10000, + USERS: 1000000, + MEMBERS: 1000000, + }, + MESSAGES: { + API_ERROR: "Unexpected Backend Error! Try again later or contact support server", + }, + + // PLUGINS + + AUTOMOD: { + ENABLED: false, + LOG_EMBED: "#36393F", + DM_EMBED: "#36393F", + }, + + DASHBOARD: { + enabled: true, // enable or disable dashboard + baseURL: "http://localhost:8080", // base url + failureURL: "http://localhost:8080", // failure redirect url + port: "8080", // port to run the bot on + }, + + ECONOMY: { + ENABLED: false, + CURRENCY: "₪", + DAILY_COINS: 100, // coins to be received by daily command + MIN_BEG_AMOUNT: 100, // minimum coins to be received when beg command is used + MAX_BEG_AMOUNT: 2500, // maximum coins to be received when beg command is used + }, + + MUSIC: { + ENABLED: true, + IDLE_TIME: 60, // Time in seconds before the bot disconnects from an idle voice channel + MAX_SEARCH_RESULTS: 5, + DEFAULT_SOURCE: "YT", // YT = Youtube, YTM = Youtube Music, SC = SoundCloud + // Add any number of lavalink nodes here + // Refer to https://github.com/freyacodes/Lavalink to host your own lavalink server + LAVALINK_NODES: [ + { + host: "103.125.38.143", + port: 3556, + password: "amanechan", + id: "Indonesia Node", + secure: false, + }, + ], + }, + + GIVEAWAYS: { + ENABLED: false, + REACTION: "🎁", + START_EMBED: "#FF468A", + END_EMBED: "#FF468A", + }, + + IMAGE: { + ENABLED: false, + BASE_API: "https://strangeapi.hostz.me/api", + }, + + INVITE: { + ENABLED: false, + }, + + MODERATION: { + ENABLED: false, EMBED_COLORS: { - BOT_EMBED: "#068ADD", - TRANSPARENT: "#36393F", - SUCCESS: "#00A56A", - ERROR: "#D61A3C", - WARNING: "#F7E919", - AUTOMOD: "#36393F", - TICKET_CREATE: "#068ADD", - TICKET_CLOSE: "#068ADD", - TIMEOUT_LOG: "#102027", - UNTIMEOUT_LOG: "#4B636E", - KICK_LOG: "#FF7961", - SOFTBAN_LOG: "#AF4448", - BAN_LOG: "#D32F2F", - VMUTE_LOG: "#102027", - VUNMUTE_LOG: "#4B636E", - DEAFEN_LOG: "#102027", - UNDEAFEN_LOG: "#4B636E", - DISCONNECT_LOG: "RANDOM", - MOVE_LOG: "RANDOM", - GIVEAWAYS: "#FF468A", - UPDATE: "#000000", + TIMEOUT: "#102027", + UNTIMEOUT: "#4B636E", + KICK: "#FF7961", + SOFTBAN: "#AF4448", + BAN: "#D32F2F", + UNBAN: "#00C853", + VMUTE: "#102027", + VUNMUTE: "#4B636E", + DEAFEN: "#102027", + UNDEAFEN: "#4B636E", + DISCONNECT: "RANDOM", + MOVE: "RANDOM", }, - /* Maximum number of keys that can be stored */ - CACHE_SIZE: { - GUILDS: 10000, - USERS: 1000000, - MEMBERS: 1000000, + }, + + PRESENCE: { + ENABLED: true, // Whether or not the bot should update its status + STATUS: "online", // The bot's status [online, idle, dnd, invisible] + TYPE: "LISTENING", // Status type for the bot [PLAYING | LISTENING | WATCHING | COMPETING] + MESSAGE: "/play with {members} members in {servers} servers", // Your bot status message + }, + + STATS: { + ENABLED: false, + XP_COOLDOWN: 5, // Cooldown in seconds between messages + DEFAULT_LVL_UP_MSG: "{member:tag}, You just advanced to **Level {level}**", + }, + + SUGGESTIONS: { + ENABLED: false, // Should the suggestion system be enabled + EMOJI: { + UP_VOTE: "⬆️", + DOWN_VOTE: "⬇️", }, - MESSAGES: { - API_ERROR: "Unexpected Backend Error! Try again later or contact support server", - }, -}; \ No newline at end of file + DEFAULT_EMBED: "#4F545C", + APPROVED_EMBED: "#43B581", + DENIED_EMBED: "#F04747", + }, + + TICKET: { + ENABLED: false, + CREATE_EMBED: "#068ADD", + CLOSE_EMBED: "#068ADD", + }, +}; diff --git a/dashboard/app.js b/dashboard/app.js index 96995a5..c980e0f 100644 --- a/dashboard/app.js +++ b/dashboard/app.js @@ -7,6 +7,8 @@ module.exports.launch = async (client) => { const express = require("express"), session = require("express-session"), + MongoStore = require("connect-mongo"), + mongoose = require("@src/database/mongoose"), path = require("path"), app = express(); @@ -19,6 +21,8 @@ module.exports.launch = async (client) => { client.states = {}; client.config = config; + const db = await mongoose.initializeMongoose(); + /* App configuration */ app .use(express.json()) // For post methods @@ -28,7 +32,23 @@ module.exports.launch = async (client) => { .use(express.static(path.join(__dirname, "/public"))) // Set the css and js folder to ./public .set("views", path.join(__dirname, "/views")) // Set the ejs templates to ./views .set("port", config.DASHBOARD.port) // Set the dashboard port - .use(session({ secret: process.env.SESSION_PASSWORD, resave: false, saveUninitialized: false })) // Set the express session password and configuration + .use( + session({ + secret: process.env.SESSION_PASSWORD, + cookie: { maxAge: 336 * 60 * 60 * 1000 }, + name: "djs_connection_cookie", + resave: true, + saveUninitialized: false, + store: MongoStore.create({ + client: db.getClient(), + dbName: db.name, + collectionName: "sessions", + stringify: false, + autoRemove: "interval", + autoRemoveInterval: 1, + }), + }) + ) // Set the express session password and configuration .use(async function (req, res, next) { req.user = req.session.user; req.client = client; diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-alerts.less b/dashboard/public/build/bootstrap-less/alerts.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-alerts.less rename to dashboard/public/build/bootstrap-less/alerts.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-badges.less b/dashboard/public/build/bootstrap-less/badges.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-badges.less rename to dashboard/public/build/bootstrap-less/badges.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722488-bootstrap.less b/dashboard/public/build/bootstrap-less/bootstrap.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722488-bootstrap.less rename to dashboard/public/build/bootstrap-less/bootstrap.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722488-breadcrumbs.less b/dashboard/public/build/bootstrap-less/breadcrumbs.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722488-breadcrumbs.less rename to dashboard/public/build/bootstrap-less/breadcrumbs.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-button-groups.less b/dashboard/public/build/bootstrap-less/button-groups.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-button-groups.less rename to dashboard/public/build/bootstrap-less/button-groups.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-buttons.less b/dashboard/public/build/bootstrap-less/buttons.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-buttons.less rename to dashboard/public/build/bootstrap-less/buttons.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-carousel.less b/dashboard/public/build/bootstrap-less/carousel.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-carousel.less rename to dashboard/public/build/bootstrap-less/carousel.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-close.less b/dashboard/public/build/bootstrap-less/close.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-close.less rename to dashboard/public/build/bootstrap-less/close.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-code.less b/dashboard/public/build/bootstrap-less/code.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-code.less rename to dashboard/public/build/bootstrap-less/code.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-component-animations.less b/dashboard/public/build/bootstrap-less/component-animations.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-component-animations.less rename to dashboard/public/build/bootstrap-less/component-animations.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-dropdowns.less b/dashboard/public/build/bootstrap-less/dropdowns.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-dropdowns.less rename to dashboard/public/build/bootstrap-less/dropdowns.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722488-forms.less b/dashboard/public/build/bootstrap-less/forms.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722488-forms.less rename to dashboard/public/build/bootstrap-less/forms.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-glyphicons.less b/dashboard/public/build/bootstrap-less/glyphicons.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-glyphicons.less rename to dashboard/public/build/bootstrap-less/glyphicons.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-grid.less b/dashboard/public/build/bootstrap-less/grid.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-grid.less rename to dashboard/public/build/bootstrap-less/grid.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722488-input-groups.less b/dashboard/public/build/bootstrap-less/input-groups.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722488-input-groups.less rename to dashboard/public/build/bootstrap-less/input-groups.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-jumbotron.less b/dashboard/public/build/bootstrap-less/jumbotron.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-jumbotron.less rename to dashboard/public/build/bootstrap-less/jumbotron.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722488-labels.less b/dashboard/public/build/bootstrap-less/labels.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722488-labels.less rename to dashboard/public/build/bootstrap-less/labels.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-list-group.less b/dashboard/public/build/bootstrap-less/list-group.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-list-group.less rename to dashboard/public/build/bootstrap-less/list-group.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-media.less b/dashboard/public/build/bootstrap-less/media.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-media.less rename to dashboard/public/build/bootstrap-less/media.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722488-mixins.less b/dashboard/public/build/bootstrap-less/mixins.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722488-mixins.less rename to dashboard/public/build/bootstrap-less/mixins.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722488-modals.less b/dashboard/public/build/bootstrap-less/modals.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722488-modals.less rename to dashboard/public/build/bootstrap-less/modals.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-navbar.less b/dashboard/public/build/bootstrap-less/navbar.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-navbar.less rename to dashboard/public/build/bootstrap-less/navbar.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-navs.less b/dashboard/public/build/bootstrap-less/navs.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-navs.less rename to dashboard/public/build/bootstrap-less/navs.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-normalize.less b/dashboard/public/build/bootstrap-less/normalize.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-normalize.less rename to dashboard/public/build/bootstrap-less/normalize.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722488-pager.less b/dashboard/public/build/bootstrap-less/pager.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722488-pager.less rename to dashboard/public/build/bootstrap-less/pager.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722488-pagination.less b/dashboard/public/build/bootstrap-less/pagination.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722488-pagination.less rename to dashboard/public/build/bootstrap-less/pagination.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-panels.less b/dashboard/public/build/bootstrap-less/panels.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-panels.less rename to dashboard/public/build/bootstrap-less/panels.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-popovers.less b/dashboard/public/build/bootstrap-less/popovers.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-popovers.less rename to dashboard/public/build/bootstrap-less/popovers.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-print.less b/dashboard/public/build/bootstrap-less/print.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-print.less rename to dashboard/public/build/bootstrap-less/print.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722488-progress-bars.less b/dashboard/public/build/bootstrap-less/progress-bars.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722488-progress-bars.less rename to dashboard/public/build/bootstrap-less/progress-bars.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-responsive-embed.less b/dashboard/public/build/bootstrap-less/responsive-embed.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-responsive-embed.less rename to dashboard/public/build/bootstrap-less/responsive-embed.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722488-responsive-utilities.less b/dashboard/public/build/bootstrap-less/responsive-utilities.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722488-responsive-utilities.less rename to dashboard/public/build/bootstrap-less/responsive-utilities.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722488-scaffolding.less b/dashboard/public/build/bootstrap-less/scaffolding.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722488-scaffolding.less rename to dashboard/public/build/bootstrap-less/scaffolding.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-tables.less b/dashboard/public/build/bootstrap-less/tables.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-tables.less rename to dashboard/public/build/bootstrap-less/tables.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-theme.less b/dashboard/public/build/bootstrap-less/theme.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-theme.less rename to dashboard/public/build/bootstrap-less/theme.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-thumbnails.less b/dashboard/public/build/bootstrap-less/thumbnails.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-thumbnails.less rename to dashboard/public/build/bootstrap-less/thumbnails.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-tooltip.less b/dashboard/public/build/bootstrap-less/tooltip.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-tooltip.less rename to dashboard/public/build/bootstrap-less/tooltip.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722488-type.less b/dashboard/public/build/bootstrap-less/type.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722488-type.less rename to dashboard/public/build/bootstrap-less/type.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722488-utilities.less b/dashboard/public/build/bootstrap-less/utilities.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722488-utilities.less rename to dashboard/public/build/bootstrap-less/utilities.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722487-variables.less b/dashboard/public/build/bootstrap-less/variables.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722487-variables.less rename to dashboard/public/build/bootstrap-less/variables.less diff --git a/dashboard/public/build/bootstrap-less/.trashed-1657722488-wells.less b/dashboard/public/build/bootstrap-less/wells.less similarity index 100% rename from dashboard/public/build/bootstrap-less/.trashed-1657722488-wells.less rename to dashboard/public/build/bootstrap-less/wells.less diff --git a/dashboard/public/build/less/skins/.trashed-1657717167-_all-skins.less b/dashboard/public/build/less/skins/_all-skins.less similarity index 100% rename from dashboard/public/build/less/skins/.trashed-1657717167-_all-skins.less rename to dashboard/public/build/less/skins/_all-skins.less diff --git a/dashboard/public/build/less/skins/.trashed-1657717167-skin-black-light.less b/dashboard/public/build/less/skins/skin-black-light.less similarity index 100% rename from dashboard/public/build/less/skins/.trashed-1657717167-skin-black-light.less rename to dashboard/public/build/less/skins/skin-black-light.less diff --git a/dashboard/public/build/less/skins/.trashed-1657717167-skin-black.less b/dashboard/public/build/less/skins/skin-black.less similarity index 100% rename from dashboard/public/build/less/skins/.trashed-1657717167-skin-black.less rename to dashboard/public/build/less/skins/skin-black.less diff --git a/dashboard/public/build/less/skins/.trashed-1657717167-skin-blue-light.less b/dashboard/public/build/less/skins/skin-blue-light.less similarity index 100% rename from dashboard/public/build/less/skins/.trashed-1657717167-skin-blue-light.less rename to dashboard/public/build/less/skins/skin-blue-light.less diff --git a/dashboard/public/build/less/skins/.trashed-1657717168-skin-blue.less b/dashboard/public/build/less/skins/skin-blue.less similarity index 100% rename from dashboard/public/build/less/skins/.trashed-1657717168-skin-blue.less rename to dashboard/public/build/less/skins/skin-blue.less diff --git a/dashboard/public/build/less/skins/.trashed-1657717168-skin-green-light.less b/dashboard/public/build/less/skins/skin-green-light.less similarity index 100% rename from dashboard/public/build/less/skins/.trashed-1657717168-skin-green-light.less rename to dashboard/public/build/less/skins/skin-green-light.less diff --git a/dashboard/public/build/less/skins/.trashed-1657717167-skin-green.less b/dashboard/public/build/less/skins/skin-green.less similarity index 100% rename from dashboard/public/build/less/skins/.trashed-1657717167-skin-green.less rename to dashboard/public/build/less/skins/skin-green.less diff --git a/dashboard/public/build/less/skins/.trashed-1657717168-skin-purple-light.less b/dashboard/public/build/less/skins/skin-purple-light.less similarity index 100% rename from dashboard/public/build/less/skins/.trashed-1657717168-skin-purple-light.less rename to dashboard/public/build/less/skins/skin-purple-light.less diff --git a/dashboard/public/build/less/skins/.trashed-1657717167-skin-purple.less b/dashboard/public/build/less/skins/skin-purple.less similarity index 100% rename from dashboard/public/build/less/skins/.trashed-1657717167-skin-purple.less rename to dashboard/public/build/less/skins/skin-purple.less diff --git a/dashboard/public/build/less/skins/.trashed-1657717167-skin-red-light.less b/dashboard/public/build/less/skins/skin-red-light.less similarity index 100% rename from dashboard/public/build/less/skins/.trashed-1657717167-skin-red-light.less rename to dashboard/public/build/less/skins/skin-red-light.less diff --git a/dashboard/public/build/less/skins/.trashed-1657717167-skin-red.less b/dashboard/public/build/less/skins/skin-red.less similarity index 100% rename from dashboard/public/build/less/skins/.trashed-1657717167-skin-red.less rename to dashboard/public/build/less/skins/skin-red.less diff --git a/dashboard/public/build/less/skins/.trashed-1657717168-skin-yellow-light.less b/dashboard/public/build/less/skins/skin-yellow-light.less similarity index 100% rename from dashboard/public/build/less/skins/.trashed-1657717168-skin-yellow-light.less rename to dashboard/public/build/less/skins/skin-yellow-light.less diff --git a/dashboard/public/build/less/skins/.trashed-1657717167-skin-yellow.less b/dashboard/public/build/less/skins/skin-yellow.less similarity index 100% rename from dashboard/public/build/less/skins/.trashed-1657717167-skin-yellow.less rename to dashboard/public/build/less/skins/skin-yellow.less diff --git a/dashboard/public/plugins/bootstrap-slider/.trashed-1657722521-bootstrap-slider.js b/dashboard/public/plugins/bootstrap-slider/bootstrap-slider.js similarity index 100% rename from dashboard/public/plugins/bootstrap-slider/.trashed-1657722521-bootstrap-slider.js rename to dashboard/public/plugins/bootstrap-slider/bootstrap-slider.js diff --git a/dashboard/public/plugins/bootstrap-slider/.trashed-1657722521-slider.css b/dashboard/public/plugins/bootstrap-slider/slider.css similarity index 100% rename from dashboard/public/plugins/bootstrap-slider/.trashed-1657722521-slider.css rename to dashboard/public/plugins/bootstrap-slider/slider.css diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722660-aero.png b/dashboard/public/plugins/iCheck/flat/aero.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722660-aero.png rename to dashboard/public/plugins/iCheck/flat/aero.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722661-aero@2x.png b/dashboard/public/plugins/iCheck/flat/aero@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722661-aero@2x.png rename to dashboard/public/plugins/iCheck/flat/aero@2x.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722660-blue.png b/dashboard/public/plugins/iCheck/flat/blue.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722660-blue.png rename to dashboard/public/plugins/iCheck/flat/blue.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722661-blue@2x.png b/dashboard/public/plugins/iCheck/flat/blue@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722661-blue@2x.png rename to dashboard/public/plugins/iCheck/flat/blue@2x.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722661-flat.png b/dashboard/public/plugins/iCheck/flat/flat.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722661-flat.png rename to dashboard/public/plugins/iCheck/flat/flat.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722659-flat@2x.png b/dashboard/public/plugins/iCheck/flat/flat@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722659-flat@2x.png rename to dashboard/public/plugins/iCheck/flat/flat@2x.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722660-green.png b/dashboard/public/plugins/iCheck/flat/green.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722660-green.png rename to dashboard/public/plugins/iCheck/flat/green.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722660-green@2x.png b/dashboard/public/plugins/iCheck/flat/green@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722660-green@2x.png rename to dashboard/public/plugins/iCheck/flat/green@2x.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722660-grey.png b/dashboard/public/plugins/iCheck/flat/grey.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722660-grey.png rename to dashboard/public/plugins/iCheck/flat/grey.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722660-grey@2x.png b/dashboard/public/plugins/iCheck/flat/grey@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722660-grey@2x.png rename to dashboard/public/plugins/iCheck/flat/grey@2x.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722661-orange.png b/dashboard/public/plugins/iCheck/flat/orange.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722661-orange.png rename to dashboard/public/plugins/iCheck/flat/orange.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722660-orange@2x.png b/dashboard/public/plugins/iCheck/flat/orange@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722660-orange@2x.png rename to dashboard/public/plugins/iCheck/flat/orange@2x.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722660-pink.png b/dashboard/public/plugins/iCheck/flat/pink.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722660-pink.png rename to dashboard/public/plugins/iCheck/flat/pink.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722661-pink@2x.png b/dashboard/public/plugins/iCheck/flat/pink@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722661-pink@2x.png rename to dashboard/public/plugins/iCheck/flat/pink@2x.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722660-purple.png b/dashboard/public/plugins/iCheck/flat/purple.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722660-purple.png rename to dashboard/public/plugins/iCheck/flat/purple.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722660-purple@2x.png b/dashboard/public/plugins/iCheck/flat/purple@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722660-purple@2x.png rename to dashboard/public/plugins/iCheck/flat/purple@2x.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722659-red.png b/dashboard/public/plugins/iCheck/flat/red.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722659-red.png rename to dashboard/public/plugins/iCheck/flat/red.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722659-red@2x.png b/dashboard/public/plugins/iCheck/flat/red@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722659-red@2x.png rename to dashboard/public/plugins/iCheck/flat/red@2x.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722660-yellow.png b/dashboard/public/plugins/iCheck/flat/yellow.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722660-yellow.png rename to dashboard/public/plugins/iCheck/flat/yellow.png diff --git a/dashboard/public/plugins/iCheck/flat/.trashed-1657722660-yellow@2x.png b/dashboard/public/plugins/iCheck/flat/yellow@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/flat/.trashed-1657722660-yellow@2x.png rename to dashboard/public/plugins/iCheck/flat/yellow@2x.png diff --git a/dashboard/public/plugins/iCheck/futurico/.trashed-1657722661-futurico.png b/dashboard/public/plugins/iCheck/futurico/futurico.png similarity index 100% rename from dashboard/public/plugins/iCheck/futurico/.trashed-1657722661-futurico.png rename to dashboard/public/plugins/iCheck/futurico/futurico.png diff --git a/dashboard/public/plugins/iCheck/futurico/.trashed-1657722661-futurico@2x.png b/dashboard/public/plugins/iCheck/futurico/futurico@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/futurico/.trashed-1657722661-futurico@2x.png rename to dashboard/public/plugins/iCheck/futurico/futurico@2x.png diff --git a/dashboard/public/plugins/iCheck/line/.trashed-1657722661-line.png b/dashboard/public/plugins/iCheck/line/line.png similarity index 100% rename from dashboard/public/plugins/iCheck/line/.trashed-1657722661-line.png rename to dashboard/public/plugins/iCheck/line/line.png diff --git a/dashboard/public/plugins/iCheck/line/.trashed-1657722661-line@2x.png b/dashboard/public/plugins/iCheck/line/line@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/line/.trashed-1657722661-line@2x.png rename to dashboard/public/plugins/iCheck/line/line@2x.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-aero.png b/dashboard/public/plugins/iCheck/minimal/aero.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-aero.png rename to dashboard/public/plugins/iCheck/minimal/aero.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-aero@2x.png b/dashboard/public/plugins/iCheck/minimal/aero@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-aero@2x.png rename to dashboard/public/plugins/iCheck/minimal/aero@2x.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-blue.png b/dashboard/public/plugins/iCheck/minimal/blue.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-blue.png rename to dashboard/public/plugins/iCheck/minimal/blue.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-blue@2x.png b/dashboard/public/plugins/iCheck/minimal/blue@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-blue@2x.png rename to dashboard/public/plugins/iCheck/minimal/blue@2x.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-green.png b/dashboard/public/plugins/iCheck/minimal/green.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-green.png rename to dashboard/public/plugins/iCheck/minimal/green.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-green@2x.png b/dashboard/public/plugins/iCheck/minimal/green@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-green@2x.png rename to dashboard/public/plugins/iCheck/minimal/green@2x.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-grey.png b/dashboard/public/plugins/iCheck/minimal/grey.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-grey.png rename to dashboard/public/plugins/iCheck/minimal/grey.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-grey@2x.png b/dashboard/public/plugins/iCheck/minimal/grey@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-grey@2x.png rename to dashboard/public/plugins/iCheck/minimal/grey@2x.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-minimal.png b/dashboard/public/plugins/iCheck/minimal/minimal.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-minimal.png rename to dashboard/public/plugins/iCheck/minimal/minimal.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-minimal@2x.png b/dashboard/public/plugins/iCheck/minimal/minimal@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-minimal@2x.png rename to dashboard/public/plugins/iCheck/minimal/minimal@2x.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-orange.png b/dashboard/public/plugins/iCheck/minimal/orange.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-orange.png rename to dashboard/public/plugins/iCheck/minimal/orange.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-orange@2x.png b/dashboard/public/plugins/iCheck/minimal/orange@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-orange@2x.png rename to dashboard/public/plugins/iCheck/minimal/orange@2x.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-pink.png b/dashboard/public/plugins/iCheck/minimal/pink.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-pink.png rename to dashboard/public/plugins/iCheck/minimal/pink.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-pink@2x.png b/dashboard/public/plugins/iCheck/minimal/pink@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-pink@2x.png rename to dashboard/public/plugins/iCheck/minimal/pink@2x.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-purple.png b/dashboard/public/plugins/iCheck/minimal/purple.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-purple.png rename to dashboard/public/plugins/iCheck/minimal/purple.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-purple@2x.png b/dashboard/public/plugins/iCheck/minimal/purple@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-purple@2x.png rename to dashboard/public/plugins/iCheck/minimal/purple@2x.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722661-red.png b/dashboard/public/plugins/iCheck/minimal/red.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722661-red.png rename to dashboard/public/plugins/iCheck/minimal/red.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722661-red@2x.png b/dashboard/public/plugins/iCheck/minimal/red@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722661-red@2x.png rename to dashboard/public/plugins/iCheck/minimal/red@2x.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-yellow.png b/dashboard/public/plugins/iCheck/minimal/yellow.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-yellow.png rename to dashboard/public/plugins/iCheck/minimal/yellow.png diff --git a/dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-yellow@2x.png b/dashboard/public/plugins/iCheck/minimal/yellow@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/minimal/.trashed-1657722662-yellow@2x.png rename to dashboard/public/plugins/iCheck/minimal/yellow@2x.png diff --git a/dashboard/public/plugins/iCheck/polaris/.trashed-1657722661-polaris.png b/dashboard/public/plugins/iCheck/polaris/polaris.png similarity index 100% rename from dashboard/public/plugins/iCheck/polaris/.trashed-1657722661-polaris.png rename to dashboard/public/plugins/iCheck/polaris/polaris.png diff --git a/dashboard/public/plugins/iCheck/polaris/.trashed-1657722661-polaris@2x.png b/dashboard/public/plugins/iCheck/polaris/polaris@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/polaris/.trashed-1657722661-polaris@2x.png rename to dashboard/public/plugins/iCheck/polaris/polaris@2x.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-aero.png b/dashboard/public/plugins/iCheck/square/aero.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-aero.png rename to dashboard/public/plugins/iCheck/square/aero.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-aero@2x.png b/dashboard/public/plugins/iCheck/square/aero@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-aero@2x.png rename to dashboard/public/plugins/iCheck/square/aero@2x.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-blue.png b/dashboard/public/plugins/iCheck/square/blue.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-blue.png rename to dashboard/public/plugins/iCheck/square/blue.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-blue@2x.png b/dashboard/public/plugins/iCheck/square/blue@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-blue@2x.png rename to dashboard/public/plugins/iCheck/square/blue@2x.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-green.png b/dashboard/public/plugins/iCheck/square/green.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-green.png rename to dashboard/public/plugins/iCheck/square/green.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-green@2x.png b/dashboard/public/plugins/iCheck/square/green@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-green@2x.png rename to dashboard/public/plugins/iCheck/square/green@2x.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-grey.png b/dashboard/public/plugins/iCheck/square/grey.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-grey.png rename to dashboard/public/plugins/iCheck/square/grey.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-grey@2x.png b/dashboard/public/plugins/iCheck/square/grey@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-grey@2x.png rename to dashboard/public/plugins/iCheck/square/grey@2x.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-orange.png b/dashboard/public/plugins/iCheck/square/orange.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-orange.png rename to dashboard/public/plugins/iCheck/square/orange.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-orange@2x.png b/dashboard/public/plugins/iCheck/square/orange@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-orange@2x.png rename to dashboard/public/plugins/iCheck/square/orange@2x.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-pink.png b/dashboard/public/plugins/iCheck/square/pink.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-pink.png rename to dashboard/public/plugins/iCheck/square/pink.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-pink@2x.png b/dashboard/public/plugins/iCheck/square/pink@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-pink@2x.png rename to dashboard/public/plugins/iCheck/square/pink@2x.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-purple.png b/dashboard/public/plugins/iCheck/square/purple.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-purple.png rename to dashboard/public/plugins/iCheck/square/purple.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-purple@2x.png b/dashboard/public/plugins/iCheck/square/purple@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-purple@2x.png rename to dashboard/public/plugins/iCheck/square/purple@2x.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-red.png b/dashboard/public/plugins/iCheck/square/red.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-red.png rename to dashboard/public/plugins/iCheck/square/red.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-red@2x.png b/dashboard/public/plugins/iCheck/square/red@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-red@2x.png rename to dashboard/public/plugins/iCheck/square/red@2x.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-square.png b/dashboard/public/plugins/iCheck/square/square.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-square.png rename to dashboard/public/plugins/iCheck/square/square.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-square@2x.png b/dashboard/public/plugins/iCheck/square/square@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-square@2x.png rename to dashboard/public/plugins/iCheck/square/square@2x.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-yellow.png b/dashboard/public/plugins/iCheck/square/yellow.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-yellow.png rename to dashboard/public/plugins/iCheck/square/yellow.png diff --git a/dashboard/public/plugins/iCheck/square/.trashed-1657722661-yellow@2x.png b/dashboard/public/plugins/iCheck/square/yellow@2x.png similarity index 100% rename from dashboard/public/plugins/iCheck/square/.trashed-1657722661-yellow@2x.png rename to dashboard/public/plugins/iCheck/square/yellow@2x.png diff --git a/dashboard/routes/discord.js b/dashboard/routes/discord.js index ad0c0ae..90568a3 100644 --- a/dashboard/routes/discord.js +++ b/dashboard/routes/discord.js @@ -7,6 +7,12 @@ const fetch = require("node-fetch"), // Gets login page router.get("/login", async function (req, res) { if (!req.user || !req.user.id || !req.user.guilds) { + // check if client user is ready + if (!req.client.user?.id) { + req.client.logger.debug("Client is not ready! Redirecting to /login"); + return res.redirect("/login"); + } + return res.redirect( `https://discordapp.com/api/oauth2/authorize?client_id=${ req.client.user.id @@ -19,7 +25,11 @@ router.get("/login", async function (req, res) { }); router.get("/callback", async (req, res) => { - if (!req.query.code) return res.redirect(req.client.config.DASHBOARD.failureURL); + if (!req.query.code) { + req.client.logger.debug({ query: req.query, body: req.body }); + req.client.logger.error("Failed to login to dashboard! Check /logs folder for more details"); + return res.redirect(req.client.config.DASHBOARD.failureURL); + } if (req.query.state && req.query.state.startsWith("invite")) { if (req.query.code) { const guildID = req.query.state.substr("invite".length, req.query.state.length); @@ -43,7 +53,11 @@ router.get("/callback", async (req, res) => { // Fetch tokens (used to fetch user information's) const tokens = await response.json(); // If the code isn't valid - if (tokens.error || !tokens.access_token) return res.redirect(`/api/login&state=${req.query.state}`); + if (tokens.error || !tokens.access_token) { + req.client.logger.debug(tokens); + req.client.logger.error("Failed to login to dashboard! Check /logs folder for more details"); + return res.redirect(`/api/login&state=${req.query.state}`); + } const userData = { infos: null, guilds: null, @@ -51,7 +65,7 @@ router.get("/callback", async (req, res) => { while (!userData.infos || !userData.guilds) { /* User infos */ if (!userData.infos) { - response = await fetch("http://discordapp.com/api/users/@me", { + response = await fetch("https://discordapp.com/api/users/@me", { method: "GET", headers: { Authorization: `Bearer ${tokens.access_token}` }, }); diff --git a/dashboard/routes/guild-manager.js b/dashboard/routes/guild-manager.js index 84c3b6a..f4c1b36 100644 --- a/dashboard/routes/guild-manager.js +++ b/dashboard/routes/guild-manager.js @@ -76,27 +76,41 @@ router.post("/:serverID/basic", CheckAuth, async (req, res) => { const settings = await getSettings(guild); const data = req.body; + // BASIC CONFIGURATION if (Object.prototype.hasOwnProperty.call(data, "basicUpdate")) { if (data.prefix && data.prefix !== settings.prefix) { settings.prefix = data.prefix; } - data.ranking = data.ranking === "on" ? true : false; - if (data.ranking !== (settings.ranking.enabled || false)) { - settings.ranking.enabled = data.ranking; - } - data.flag_translation = data.flag_translation === "on" ? true : false; if (data.flag_translation !== (settings.flag_translation.enabled || false)) { settings.flag_translation.enabled = data.flag_translation; } - data.modlog_channel = guild.channels.cache.find((ch) => "#" + ch.name === data.modlog_channel)?.id || null; - if (data.modlog_channel !== settings.modlog_channel) { - settings.modlog_channel = data.modlog_channel; + data.invite_tracking = data.invite_tracking === "on" ? true : false; + if (data.invite_tracking !== (settings.invite.tracking || false)) { + settings.invite.tracking = data.invite_tracking; } } + // STATISTICS CONFIGURATION + if (Object.prototype.hasOwnProperty.call(data, "statsUpdate")) { + data.ranking = data.ranking === "on" ? true : false; + if (data.ranking !== (settings.stats.enabled || false)) { + settings.stats.enabled = data.ranking; + } + + if (data.levelup_message && data.levelup_message !== settings.stats.xp.message) { + settings.stats.xp.message = data.levelup_message; + } + + data.levelup_channel = guild.channels.cache.find((ch) => "#" + ch.name === data.levelup_channel)?.id || null; + if (data.levelup_channel !== settings.stats.xp.channel) { + settings.stats.xp.channel = data.levelup_channel; + } + } + + // TICKET CONFIGURATION if (Object.prototype.hasOwnProperty.call(data, "ticketUpdate")) { if (data.limit && data.limit != settings.ticket.limit) { settings.ticket.limit = data.limit; @@ -108,19 +122,29 @@ router.post("/:serverID/basic", CheckAuth, async (req, res) => { } } - if (Object.prototype.hasOwnProperty.call(data, "inviteUpdate")) { - data.tracking = data.tracking === "on" ? true : false; - if (data.tracking !== (settings.invite.tracking || false)) { - settings.invite.tracking = data.tracking; + // MODERATION CONFIGURATION + if (Object.prototype.hasOwnProperty.call(data, "modUpdate")) { + if (data.max_warnings && data.max_warnings != settings.max_warn.limit) { + settings.max_warn.limit = data.max_warnings; + } + + if (data.max_warn_action !== settings.max_warn.action) { + settings.max_warn.action = data.max_warn_action; + } + + data.modlog_channel = guild.channels.cache.find((ch) => "#" + ch.name === data.modlog_channel)?.id || null; + if (data.modlog_channel !== settings.modlog_channel) { + settings.modlog_channel = data.modlog_channel; } } + // AUTOMOD CONFIGURATION if (Object.prototype.hasOwnProperty.call(data, "automodUpdate")) { - if (data.max_strikes != settings.automod.strikes) { + if (data.max_strikes && data.max_strikes !== settings.automod.strikes) { settings.automod.strikes = data.max_strikes; } - if (data.automod_action !== settings.automod.action) { + if (data.automod_action && data.automod_action !== settings.automod.action) { settings.automod.action = data.automod_action; } @@ -128,21 +152,9 @@ router.post("/:serverID/basic", CheckAuth, async (req, res) => { settings.automod.max_lines = data.max_lines; } - if (data.max_mentions && data.max_mentions !== settings.automod.max_mentions) { - settings.automod.max_mentions = data.max_mentions; - } - if (data.max_role_mentions && data.max_role_mentions !== settings.automod.max_role_mentions) { - settings.automod.max_role_mentions = data.max_role_mentions; - } - - data.anti_links = data.anti_links === "on" ? true : false; - if (data.anti_links !== (settings.automod.anti_links || false)) { - settings.automod.anti_links = data.anti_links; - } - - data.anti_scam = data.anti_scam === "on" ? true : false; - if (data.anti_scam !== (settings.automod.anti_scam || false)) { - settings.automod.anti_scam = data.anti_scam; + data.anti_attachments = data.anti_attachments === "on" ? true : false; + if (data.anti_attachments !== (settings.automod.anti_attachments || false)) { + settings.automod.anti_attachments = data.anti_attachments; } data.anti_invites = data.anti_invites === "on" ? true : false; @@ -150,10 +162,32 @@ router.post("/:serverID/basic", CheckAuth, async (req, res) => { settings.automod.anti_invites = data.anti_invites; } + data.anti_links = data.anti_links === "on" ? true : false; + if (data.anti_links !== (settings.automod.anti_links || false)) { + settings.automod.anti_links = data.anti_links; + } + + data.anti_spam = data.anti_spam === "on" ? true : false; + if (data.anti_spam !== (settings.automod.anti_spam || false)) { + settings.automod.anti_spam = data.anti_spam; + } + data.anti_ghostping = data.anti_ghostping === "on" ? true : false; if (data.anti_ghostping !== (settings.automod.anti_ghostping || false)) { settings.automod.anti_ghostping = data.anti_ghostping; } + + data.anti_massmention = data.anti_massmention === "on" ? true : false; + if (data.anti_massmention !== (settings.automod.anti_massmention || false)) { + settings.automod.anti_massmention = data.anti_massmention; + } + + if (data.channels?.length) { + if (typeof data.channels === "string") data.channels = [data.channels]; + settings.automod.wh_channels = data.channels + .map((ch) => guild.channels.cache.find((c) => "#" + c.name === ch)?.id) + .filter((c) => c); + } } await settings.save(); @@ -185,32 +219,56 @@ router.post("/:serverID/greeting", CheckAuth, async (req, res) => { Object.prototype.hasOwnProperty.call(data, "welcomeEnable") || Object.prototype.hasOwnProperty.call(data, "welcomeUpdate") ) { + if (data.content !== settings.welcome.content) { + settings.welcome.content = data.content; + } + data.content = data.content.replace(/\r?\n/g, "\\n"); if (data.content && data.content !== settings.welcome.content) { settings.welcome.content = data.content; } + if (data.description !== settings.welcome.embed.description) { + settings.welcome.embed.description = data.description; + } + data.description = data.description?.replaceAll(/\r\n/g, "\\n"); if (data.description && data.description !== settings.welcome.embed?.description) { settings.welcome.embed.description = data.description; } + if (data.footer !== settings.welcome.embed.footer) { + settings.welcome.embed.footer = data.footer; + } + if (data.footer && data.footer !== settings.welcome.embed?.footer) { settings.welcome.embed.footer = data.footer; } + if (data.hexcolor !== settings.welcome.embed.hexcolor) { + settings.welcome.embed.hexcolor = data.hexcolor; + } + if (data.hexcolor && data.hexcolor !== settings.welcome.embed?.color) { settings.welcome.embed.color = data.hexcolor; } + if (data.image !== settings.welcome.embed.image) { + settings.welcome.embed.image = data.image; + } + + if (data.image && data.image !== settings.welcome.embed?.image) { + settings.welcome.embed.image = data.image; + } + data.thumbnail = data.thumbnail === "on" ? true : false; if (data.thumbnail !== (settings.welcome.embed?.thumbnail || false)) { settings.welcome.embed.thumbnail = data.thumbnail; } data.channel = guild.channels.cache.find((ch) => "#" + ch.name === data.channel)?.id; - if (data.channel !== settings.welcome.channel_id) { - settings.welcome.channel_id = data.channel; + if (data.channel !== settings.welcome.channel) { + settings.welcome.channel = data.channel; } if (!settings.welcome.enabled) settings.welcome.enabled = true; @@ -224,32 +282,56 @@ router.post("/:serverID/greeting", CheckAuth, async (req, res) => { Object.prototype.hasOwnProperty.call(data, "farewellEnable") || Object.prototype.hasOwnProperty.call(data, "farewellUpdate") ) { + if (data.content !== settings.farewell.content) { + settings.farewell.content = data.content; + } + data.content = data.content.replace(/\r?\n/g, "\\n"); if (data.content && data.content !== settings.farewell.content) { settings.farewell.content = data.content; } + if (data.description !== settings.farewell.description) { + settings.farewell.description = data.description; + } + data.description = data.description?.replaceAll(/\r\n/g, "\\n"); if (data.description && data.description !== settings.farewell.embed?.description) { settings.farewell.embed.description = data.description; } + if (data.footer !== settings.farewell.footer) { + settings.farewell.footer = data.footer; + } + if (data.footer && data.footer !== settings.farewell.embed?.footer) { settings.farewell.embed.footer = data.footer; } + if (data.hexcolor !== settings.farewell.hexcolor) { + settings.farewell.hexcolor = data.hexcolor; + } + if (data.hexcolor && data.hexcolor !== settings.farewell.embed?.color) { settings.farewell.embed.color = data.hexcolor; } + if (data.image !== settings.farewell.image) { + settings.farewell.image = data.image; + } + + if (data.image && data.image !== settings.farewell.embed?.image) { + settings.farewell.embed.image = data.image; + } + data.thumbnail = data.thumbnail === "on" ? true : false; if (data.thumbnail !== (settings.farewell.embed?.thumbnail || false)) { settings.farewell.embed.thumbnail = data.thumbnail; } data.channel = guild.channels.cache.find((ch) => "#" + ch.name === data.channel)?.id; - if (data.channel !== settings.farewell.channel_id) { - settings.farewell.channel_id = data.channel; + if (data.channel !== settings.farewell.channel) { + settings.farewell.channel = data.channel; } if (!settings.farewell.enabled) settings.farewell.enabled = true; diff --git a/dashboard/utils.js b/dashboard/utils.js index 926b72c..36260ac 100644 --- a/dashboard/utils.js +++ b/dashboard/utils.js @@ -12,8 +12,8 @@ async function fetchUser(userData, client, query) { if (userData.guilds) { userData.guilds.forEach((guild) => { if (guild.permissions) { - const perms = new Discord.Permissions(BigInt(guild.permissions)); - if (perms.has("MANAGE_GUILD")) guild.admin = true; + const perms = new Discord.PermissionsBitField(BigInt(guild.permissions)); + if (perms.has("ManageGuild")) guild.admin = true; } guild.settingsUrl = client.guilds.cache.get(guild.id) ? `/manage/${guild.id}/` @@ -33,7 +33,7 @@ async function fetchUser(userData, client, query) { } const user = await client.users.fetch(userData.id); user.displayAvatar = user.displayAvatarURL(); - const userDb = await getUser(user.id); + const userDb = await getUser(user); const userInfos = { ...user, ...userDb, ...userData, ...user.presence }; return userInfos; } diff --git a/dashboard/views/includes/footer.ejs b/dashboard/views/includes/footer.ejs index a83c5bd..951df46 100644 --- a/dashboard/views/includes/footer.ejs +++ b/dashboard/views/includes/footer.ejs @@ -1,9 +1,9 @@ diff --git a/dashboard/views/includes/head.ejs b/dashboard/views/includes/head.ejs index 8a7a488..13e6146 100644 --- a/dashboard/views/includes/head.ejs +++ b/dashboard/views/includes/head.ejs @@ -2,7 +2,7 @@ - KIera | Dashboard + Kiera | Dashboard diff --git a/dashboard/views/includes/sidebar.ejs b/dashboard/views/includes/sidebar.ejs index f1519bf..ad65cfb 100644 --- a/dashboard/views/includes/sidebar.ejs +++ b/dashboard/views/includes/sidebar.ejs @@ -4,13 +4,12 @@