From 0a870a405a9acbccc6bef56f35c1b0e90a551fac Mon Sep 17 00:00:00 2001 From: Hampus Kraft Date: Tue, 1 Nov 2022 17:51:47 +0100 Subject: [PATCH] Bug fixes and cleanup (#450) * chore: fix formatting * chore: remove outdated database.sql * fix: add aiomysql to requirements.txt * fix: syntax error in minecraft cog * chore: update example config * fix: add missing munmute_help string * fix: syntax warnings * fix: silence aiomysql warnings * fix: await close of aiohttp session * chore: remove unnecssary diff * chore: use original import order * chore: remove aiomysql * chore: change example `DATABASE` to postgres --- GearBot/Cogs/Minecraft.py | 7 +- GearBot/Util/Utils.py | 2 +- README.md | 2 - config/master.json.example | 141 +++++++++++++------------- database.sql | 76 -------------- lang/bot.json | 5 +- lang/en_US.json | 72 ++++++++------ lang/shared.json | 4 +- template.json | 198 ++++++++++++++++++------------------- 9 files changed, 214 insertions(+), 293 deletions(-) delete mode 100644 database.sql diff --git a/GearBot/Cogs/Minecraft.py b/GearBot/Cogs/Minecraft.py index d5aaa32a..e54fa224 100644 --- a/GearBot/Cogs/Minecraft.py +++ b/GearBot/Cogs/Minecraft.py @@ -52,7 +52,7 @@ async def get_info(self, ctx, project_name, log): async def fetch_info(self, project_name): session: aiohttp.ClientSession = self.bot.aiosession async with session.get(f"https://api.cfwidget.com/mc-mods/minecraft/{project_name}") as reply: - if reply.status is 200: # all good, we can parse it + if reply.status == 200: # all good, we can parse it parsed = json.loads(await reply.text()) p_type = parsed["type"] info = { @@ -91,13 +91,13 @@ async def fetch_info(self, project_name): info["versions"] = map return info - elif reply.status is 202: # New project, wait for the api to fetch it + elif reply.status == 202: # New project, wait for the api to fetch it GearbotLogging.info(f"Info for {project_name} not available yet, trying again in 10 seconds.") await asyncio.sleep(10) return await self.fetch_info(project_name) elif reply.status in (400, 404): return None - elif reply.status is 500: + elif reply.status == 500: GearbotLogging.error(f"Fetching info for {project_name} failed.") return False else: @@ -128,6 +128,7 @@ async def cf(self, ctx): pass async def info(self, ctx, project_name: str): + pass # @cf.command() # async def latest(self, ctx, project_name: str, version: str): diff --git a/GearBot/Util/Utils.py b/GearBot/Util/Utils.py index 46929d1f..3dbf5074 100644 --- a/GearBot/Util/Utils.py +++ b/GearBot/Util/Utils.py @@ -44,7 +44,7 @@ async def cleanExit(bot, trigger): await GearbotLogging.bot_log(f"Shutdown triggered by {trigger}.") await bot.logout() await bot.close() - bot.aiosession.close() + await bot.aiosession.close() def trim_message(message, limit): diff --git a/README.md b/README.md index d3b66091..7112c2cd 100644 --- a/README.md +++ b/README.md @@ -1,3 +1 @@ # Gearbot - - diff --git a/config/master.json.example b/config/master.json.example index f23f88b1..7ee814eb 100644 --- a/config/master.json.example +++ b/config/master.json.example @@ -1,76 +1,69 @@ { - "LOGIN_TOKEN": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", - "BOT_LOG_CHANNEL": 365908831328403456, - "CROWDIN_KEY": null, - "DATABASE_HOST": "localhost", - "DATABASE_NAME": "gearbot", - "DATABASE_PASS": "database password", - "DATABASE_PORT": 3306, - "DATABASE_USER": "gearbot", - "APEX_KEY": "", - "REDIS_HOST": "localhost", - "REDIS_PORT": 6379, - "REDIS_SOCKET": "", - "SENTRY_DSN": "", - "EMOJI": { - }, - "EMOJI_GUILD": null, - "GUIDES": 0, - "inbox": 0, - "COGS": [ - "Basic", - "Admin", - "Moderation", - "ServerAdmin", - "ModLog", - "CustCommands", - "BCVersionChecker", - "Reload", - "ReactionHandler", - "Censor", - "Infractions", - "Interactions", - "Minecraft", - "DMMessages", - "Reminders", - "Emoji", - "AntiSpam" - ], - "TRANSLATIONS": { - "CHANNEL": 0, - "KEY": "", - "LOGIN": "", - "SOURCE": "DISABLED", - "WEBROOT": "" - }, - "DOCS": true, - "DISABLED_COMMANDS": [], - "DASH_OUTAGE": { - "outage_detection": false, - "max_bot_outage_warnings": 1, - "dash_outage_channel": 999999999, - "dash_outage_pinged_roles": [], - "dash_outage_message": "The Dashboard went down! Please look into it!", - "dash_outage_embed": { - "title": "Dashboard Outage Detected", - "timestamp": "", - "color": "FF0000", - "description": "The Dashboard is suspected to be down, it hasn't responded in over 3 minutes!", - "author": { - "name": "Gearbot Dashboard Monitor" - }, - "fields": [ - { - "name": "Alert Count", - "value": "{warnings_sent}/{MAX_BOT_OUTAGE_WARNINGS}", - "inline": true - } - ] - } - }, - "global_inf_counter": true, - "min_cached_users": 0, - "purge_db": true - + "LOGIN_TOKEN": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", + "BOT_LOG_CHANNEL": 365908831328403456, + "CROWDIN_KEY": null, + "DATABASE": "postgres://gearbot:gearbot@localhost:5432/gearbot", + "APEX_KEY": "", + "REDIS_HOST": "localhost", + "REDIS_PORT": 6379, + "REDIS_SOCKET": "", + "SENTRY_DSN": "", + "EMOJI": {}, + "EMOJI_GUILD": 365498559174410241, + "GUIDES": 0, + "inbox": 0, + "COGS": [ + "Basic", + "Admin", + "Moderation", + "ServerAdmin", + "ModLog", + "CustCommands", + "BCVersionChecker", + "Reload", + "ReactionHandler", + "Censor", + "Infractions", + "Interactions", + "Minecraft", + "DMMessages", + "Reminders", + "Emoji", + "AntiSpam" + ], + "TRANSLATIONS": { + "CHANNEL": 0, + "KEY": "", + "LOGIN": "", + "SOURCE": "DISABLED", + "WEBROOT": "" + }, + "DOCS": true, + "DISABLED_COMMANDS": [], + "DASH_OUTAGE": { + "outage_detection": false, + "max_bot_outage_warnings": 1, + "dash_outage_channel": 999999999, + "dash_outage_pinged_roles": [], + "dash_outage_message": "The Dashboard went down! Please look into it!", + "dash_outage_embed": { + "title": "Dashboard Outage Detected", + "timestamp": "", + "color": "FF0000", + "description": "The Dashboard is suspected to be down, it hasn't responded in over 3 minutes!", + "author": { + "name": "Gearbot Dashboard Monitor" + }, + "fields": [ + { + "name": "Alert Count", + "value": "{warnings_sent}/{MAX_BOT_OUTAGE_WARNINGS}", + "inline": true + } + ] + } + }, + "global_inf_counter": true, + "min_cached_users": 0, + "purge_db": true } - diff --git a/database.sql b/database.sql deleted file mode 100644 index 19defcbe..00000000 --- a/database.sql +++ /dev/null @@ -1,76 +0,0 @@ -create table customcommand -( - id int unsigned auto_increment primary key, - serverid bigint not null, - trigger varchar(20) not null, - response varchar(2000) not null, - index (serverid) -); - - -create table loggedmessage -( - messageid bigint primary key not null, - content varchar(2000) collate utf8mb4_general_ci null, - author bigint not null, - channel bigint not null, - server bigint not null, - type tinyint null, - pinnned bool, - index (author), - index (channel), - index (server) - -); - -create table loggedattachment -( - id bigint primary key not null, - name varchar(100) not null, - isImage bool not null, - messageid bigint references loggedmessage (messageid), - index (messageid) -); - -create table infraction -( - id int unsigned primary key not null, - guild_id bigint not null, - user_id bigint not null, - mod_id bigint not null, - type varchar(10) not null -); - - -create table reminder -( - id int unsigned primary key not null, - user_id bigint not null, - channel_id bigint not null, - guild_id bigint not null, - message_id bigint not null, - dm tinyint(1), - to_remind varchar(1800) collate utf8mb4_general_ci, - send int unsigned not null, - time int unsigned not null, - status enum ('1', '2', '3'), - index (user_id) -); - -create table userinfo -( - id bigint primary key not null, - api_token varchar(100) not null, - refresh_token varchar(100) not null, - expires_at datetime not null, - unique (api_token) -); - -create table dashsession -( - id varchar(50) primary key not null, - user_id bigint not null references userinfo (id), - expires_at datetime not null, - index (user_id) -) - diff --git a/lang/bot.json b/lang/bot.json index 09dcdc03..0967ef42 100644 --- a/lang/bot.json +++ b/lang/bot.json @@ -1,4 +1 @@ -{ - - -} +{} diff --git a/lang/en_US.json b/lang/en_US.json index 09f1330b..b802e6eb 100644 --- a/lang/en_US.json +++ b/lang/en_US.json @@ -12,7 +12,7 @@ "custom_command_empty_reply": "You want me to say nothing for that trigger? That makes no sense. If you want to remove an existing trigger, please use remove instead.", "custom_command_added": "Command `{trigger}` has been added!", "custom_command_updating": "Updating...", - "custom_command_not_updating": "Keeping the old one.", + "custom_command_not_updating": "Keeping old command", "custom_command_override_confirmation": "This command already exists, do you want to replace it with this new text?", "custom_command_removed": "Command `{trigger}` has been removed.", "custom_command_not_found": "Unable to remove `{trigger}` as it doesn't seem to exist.", @@ -645,7 +645,7 @@ "system_message": "**System message**: {type}", "attachment_item": "**Attachment #{num}**: {attachment}", "attachment_single": "**Attachment**: {attachment}", - "raid_terminate_no_raid": "Wait, there was a raid going on? Nobody informed me of that!", + "raid_terminate_no_raid": "Wait, there was a raid going on? Nobody informed me of that!", "about_apexstats": "Get stats from a player in Apex Legends.", "apexstats_invalid_platform": "It's not possible for me to retrive stats from that platform yet. I'm however able to get a players stats on the following platforms: PC, PSN and Xbox.", "apexstats_user_not_found": "A user with that name could not be found on the specified platform.", @@ -672,7 +672,7 @@ "invite_censor_forbidden_edit": "Tried to censor message by {user} (`{user_id}`) in {channel}, invite code `{code}` to `{server_name}` is not allowed, but it seems I am missing permission to remove the message{reply}\n```{message}```{attachments}", "inf_unmute": "{mod} unmuted {user}", "help_page_default_perm": "Default permission requirement", - "help_page_default_lvl": "Default level", + "help_page_default_lvl": "Default level", "command": "Command", "explanation": "Explanation", "example": "Example", @@ -718,8 +718,8 @@ "slowmode_no_perms": "Unable to set the slowmode for {channel}, I do not have the required permissions", "slowmode_log": "{user} (`{user_id}`) set the slowmode interval to {duration} seconds in {channel} (`{channel_id}`)", "slowmode_set": "Slowmode is now set to {duration} in {channel}", - "mute_punishment_failure":"Failed to mute {user} (`{user_id}`) for {duration} for `{reason}` (`#{inf}`) due to missing permissions!", - "kick_punishment_failure":"Failed to kick {user} (`{user_id}`) for `{reason}` (`#{inf}`) due to missing permissions!", + "mute_punishment_failure": "Failed to mute {user} (`{user_id}`) for {duration} for `{reason}` (`#{inf}`) due to missing permissions!", + "kick_punishment_failure": "Failed to kick {user} (`{user_id}`) for `{reason}` (`#{inf}`) due to missing permissions!", "config_change": "The **{option_name}** config option was changed from **`{old}`** to **`{new}`** by **{user}** (`{user_id}`)", "config_change_role_removed": "The **{role_name}** role (`{role_id}`) was removed from the {type} role list by **{user}** (`{user_id}`)", "config_change_role_added": "The **{role_name}** role (`{role_id}`) was added to the {type} role list by **{user}** (`{user_id}`)", @@ -765,28 +765,30 @@ "logging_category_removed": "{count, plural, one {A logging category was} other {The following logging categories were}} removed from {channel} (`{channel_id}`) by **{user}** (`{user_id}`): `{categories}`", "logging_key_disabled": "{count, plural, one {A logging key was} other {The following logging keys were}} disabled for {channel} (`{channel_id}`) by **{user}** (`{user_id}`): `{disabled}`", "logging_key_enabled": "{count, plural, one {A logging key was} other {The following logging keys were}} enabled for {channel} (`{channel_id}`) by **{user}** (`{user_id}`): `{enabled}`", - "unban_forbidden": "Unable to unban people who are on this server and are above me", + "unban_forbidden": "Unable to unban people who are on this server and are above me", "ping_help": "See if the bot is still online.", "quote_help": "Quotes the requested message.", - "custom_commands_help": "Lists all custom commands for this server, also the base command to making, updating and removing them.", + "custom_commands_help": "Lists all custom commands for this server, also the base command to making, updating and removing them.", "coinflip_help": "Random decision making.", - "assignable_roles_help": "Lists self-assignable roles or adds/removes 'role' from you.", - "help_help": "Lists all commands, the commands from a cog or info about a command.", + "assignable_roles_help": "Lists self-assignable roles or adds/removes 'role' from you.", + "help_help": "Lists all commands, the commands from a cog or info about a command.", "warn_help": "Adds a new warning, the user is not informed of this.", - "inf_search_help": "Shows all infractions given by or to a given user.", - "inf_update_help": "Updates an infraction.", - "kick_help": "Kicks a user from the server.", + "inf_search_help": "Shows all infractions given by or to a given user.", + "inf_update_help": "Updates an infraction.", + "kick_help": "Kicks a user from the server.", "ban_help": "Bans a user from the server.", - "forceban_help": "Bans a user even if they are not in the server.", + "forceban_help": "Bans a user even if they are not in the server.", "purge_help": "Purges up to 1000 messages in this channel.", "unban_help": "Unbans a user from the server.", "mute_help": "Temporarily mutes someone.", -"unmute_help": "Lifts a mute.", + "unmute_help": "Lifts a mute.", "configure_help": "Configure server specific settings.", - "role_help": "Shows self-assignable roles or assigns/removes one.", "lang_help": "Sets the language for GearBot to use.", -"language_help": "Sets the language to use on this server.", + "role_help": "Shows self-assignable roles or assigns/removes one.", + "lang_help": "Sets the language for GearBot to use.", + "language_help": "Sets the language to use on this server.", "cog_overrides_help": "Configure permission overrides for cogs.", - "command_overrides_help": "Configure permission overrides for individual commands, this ignores any overrides.", "inf_help": "Base infractions command, see the subcommands for details.", + "command_overrides_help": "Configure permission overrides for individual commands, this ignores any overrides.", + "inf_help": "Base infractions command, see the subcommands for details.", "softban_help": "Soft bans a user from the server (ban, removes last day of messages and unbans).", "configure_mute_help": "Sets what role to use for muting people.", "lvl4_help": "Allows adding/removing people to lvl 4 permission lvl for a command.", @@ -799,7 +801,7 @@ "inf_delete_help": "Deletes an infraction. This can not be undone!", "roles_help": "Prints a list of all roles in the server, possible modes are alphabetic or hierarchy (default)", "about_help": "Shows some runtime info like uptime, messages seen and link to support server.", -"cf_help": "Base command to pull mod info from CurseForge, still WIP", + "cf_help": "Base command to pull mod info from CurseForge, still WIP", "archive_help": "Base command for archiving, use the subcommands to actually make archives", "archive_channel_help": "Archive messages from a channel", "archive_user_help": "Archive messages from a user", @@ -807,10 +809,12 @@ "mwarn_help": "Warns multiple users with the same reason", "mcleanban_help": "Cleanbans multiple users with the same reason, cleans their messages.", "munban_help": "Unbans multiple users with the same reason", - "mkick_help": "Kicks multiple users with the same reason","clean_help": "Gets out the broom to clean whatever mess needs cleaning", + "mkick_help": "Kicks multiple users with the same reason", + "clean_help": "Gets out the broom to clean whatever mess needs cleaning", "clean_user_help": "Removes messages by one or more users", "clean_bots_help": "Removes messages sent by any bot", - "clean_all_help": "Just clean everything","clean_until_help": "Cleans until the given message (message is also removed)", + "clean_all_help": "Just clean everything", + "clean_until_help": "Cleans until the given message (message is also removed)", "clean_last_help": "Cleans all messages send in the last x time (5 m for example)", "clean_between_help": "Cleans both messages given and everything in between", "role_denied_block": "The **{role}** role is on the blocked roles list", @@ -818,25 +822,31 @@ "dog_help": "Random dogs!", "role_add_help": "Adds a role to someone", "role_remove_help": "Removes a role from someone", - "configure_role_list_help": "Configures or shows the managed roles config list","remind_help": "Base command for reminders", - "remind_me_help": "Schedule to be reminded about something","perm_denied_message_help": "Configure if a message should be shown if someone tries to run a command they do not have access to", - "mod_role_help": "Adds or removes roles from members", "uid_help": "Prints out any Discord user IDs found in the specified text", -"clean_missing_targets": "You didn't specify who's messages I should be cleaning and I doubt you want me cleaning yours. Can we try that again? But this time with a bit more ~~feeling~~ targets.", + "configure_role_list_help": "Configures or shows the managed roles config list", + "remind_help": "Base command for reminders", + "remind_me_help": "Schedule to be reminded about something", + "perm_denied_message_help": "Configure if a message should be shown if someone tries to run a command they do not have access to", + "mod_role_help": "Adds or removes roles from members", + "uid_help": "Prints out any Discord user IDs found in the specified text", + "clean_missing_targets": "You didn't specify who's messages I should be cleaning and I doubt you want me cleaning yours. Can we try that again? But this time with a bit more ~~feeling~~ targets.", "clean_everywhere_help": "Removes messages by one or more users in all channels", "clean_ban_help": "Same as a regular ban, but removes one day of messages by default, can go up to 7", - "bean_help": "Beans a user on the server.", "inf_claim_help": "Claim responsibility for an infraction as moderator", -"emoji_help": "Base command for managing emoji", + "bean_help": "Beans a user on the server.", + "inf_claim_help": "Claim responsibility for an infraction as moderator", + "emoji_help": "Base command for managing emoji", "emoji_roles_help": "Manage the role requirements to use emoji", "emoji_delete_help": "Removes an emoji", "emoji_update_help": "Changes the emoji name", - "emoji_upload_help": "Uploads a new emoji","inf_info_help": "Shows details about a specific infraction.", + "emoji_upload_help": "Uploads a new emoji", + "inf_info_help": "Shows details about a specific infraction.", "ignored_channels_help": "Configures ignored channels", "ignored_channels_changes_help": "Configures channels to ignore for logging channel changes", "ignored_channels_add_help": "Adds a channel to the ignored list", "ignored_channels_remove_help": "Removes a channel from the ignored list again", "ignored_channels_edits_help": "Configures channel to ignore for edit and delete logs", "ignored_channels_list_help": "Shows the list of channels currently on the ignore list", - "tempban_help": "Temporarily bans someone from the server (regardless on if they are on the server atm or not)", "seen_help": "Shows when the last message by the user was logged", + "tempban_help": "Temporarily bans someone from the server (regardless on if they are on the server atm or not)", + "seen_help": "Shows when the last message by the user was logged", "timezone_help": "Configures the timezone used for logging timestamps", "jumbo_help": "Jumbo emoji", "serverinfo_help": "Shows information about the current server.", @@ -852,7 +862,8 @@ "configure_ignored_users_help": "Configures users to ignore for edit/delete logs (like bots spamming the logs with edits)", "command_create_help": "Create a new command", "command_remove_help": "Removes a custom command", - "command_update_help": "Sets a new reply for the specified command", "slowmode_help": "Control the slowmode on a channel", + "command_update_help": "Sets a new reply for the specified command", + "slowmode_help": "Control the slowmode on a channel", "verification_help": "Changes the Verification Level", "mod_nickname_help": "Base command for nickname.", "mod_nickname_add_help": "Adds or edits a user's nickname.", @@ -881,6 +892,7 @@ "inf_update_log": "Infraction #{inf} for {user} (`{userid}`) has been updated by {mod} (`{modid}`) to `{reason}`", "munmute_confirm": "Are you sure you want to unmute those people?", "munmute_confirmation": "Sucessfully unmuted {count} users", + "munmute_help": "Unmute multiple users at the same time", "mass_failures_unmute": "I was unable to unmute the following users: ({page_num}/{pages}):", "censor_emoji_messages_enabled": "Messages only containing emoji will now be censored", "censor_emoji_messages_disbabled": "Messages only containing emoji will no longer be censored", @@ -1074,7 +1086,6 @@ "thread_update_simple_by": "Thread <#{thing_id}> was updated by {person} (`{person_id}`): `{attr}` changed from `{before}` to `{after}`", "thread_member_add": "{user} (`{user_id}`) is now a member of thread <#{thread_id}> in <#{channel_id}>", "thread_member_remove": "{user} (`{user_id}`) is no longer a member of thread <#{thread_id}> in <#{channel_id}>", - "custom_command_not_updating": "Keeping old command", "cleanban_to_clean_everywhere": "This user is already banned so cleanbanning them is not possible, do you want me to clean their messages instead?", "substituting_message_author": "Subsituting message id with message author", "no_longer_valid": "This interaction is no longer valid, please run the command again", @@ -1089,7 +1100,6 @@ "help_cog_description": "Show help for only the {cog} cog", "full_censor_list_empty": "The full message censor list is empty", "view_expired": "This message has expired, please run the command again instead", - "dm_on_unmute_msg_already_disabled": "DMing people when they are unmuted was already disabled", "infraction_dm_settings": "Infraction DM Settings", "dm_notifications_help": "Shows the current settings for infraction DMs", "no_runnable_commands": "There are no commands in this cog that you can use" diff --git a/lang/shared.json b/lang/shared.json index 0e0dcd23..0967ef42 100644 --- a/lang/shared.json +++ b/lang/shared.json @@ -1,3 +1 @@ -{ - -} \ No newline at end of file +{} diff --git a/template.json b/template.json index 11430749..9792e873 100644 --- a/template.json +++ b/template.json @@ -1,101 +1,101 @@ { - "VERSION": 37, - "GENERAL": { - "LANG": "en_US", - "PERM_DENIED_MESSAGE": true, - "PREFIX": "!", - "TIMESTAMPS": true, - "NEW_USER_THRESHOLD": 86400, - "TIMEZONE": "Europe/Brussels", - "GHOST_MESSAGE_THRESHOLD": 10, - "GHOST_PING_THRESHOLD": 20, - "BOT_DELETED_STILL_GHOSTS": true - }, - "ROLES": { - "SELF_ROLES": [], - "ROLE_LIST": [], - "ROLE_LIST_MODE": true, - "MUTE_ROLE": 0 - }, - "LOG_CHANNELS": {}, - "MESSAGE_LOGS": { - "ENABLED": false, - "IGNORED_CHANNELS_CHANGES": [], - "IGNORED_CHANNELS_OTHER": [], - "IGNORED_USERS": [], - "EMBED": false, - "MESSAGE_ID": false - }, - "CENSORING": { - "ENABLED": false, - "ALLOW_TRUSTED_BYPASS": false, - "ALLOW_TRUSTED_CENSOR_BYPASS": false, - "WORD_CENSORLIST": [], - "TOKEN_CENSORLIST": [], - "ALLOWED_INVITE_LIST": [], - "DOMAIN_LIST_ALLOWED": false, - "DOMAIN_LIST": [], - "FULL_MESSAGE_LIST": [], - "CENSOR_EMOJI_ONLY_MESSAGES": false, - "IGNORE_IDS": false, - "MAX_LIST_LENGTH": 400 - }, - "FLAGGING": { - "WORD_LIST": [], - "TOKEN_LIST": [], - "TRUSTED_BYPASS": false, - "IGNORE_IDS": false, - "MAX_LIST_LENGTH": 400 - }, - "INFRACTIONS": { - "DM_ON_WARN": false, - "DM_ON_UNMUTE": false, - "DM_ON_MUTE": false, - "DM_ON_KICK": false, - "DM_ON_BAN": false, - "DM_ON_TEMPBAN": false, - "WARNING": null, - "UNMUTE": null, - "MUTE": null, - "KICK": null, - "BAN": null, - "TEMPBAN": null - }, - "PERM_OVERRIDES": {}, - "RAID_HANDLING": { - "ENABLED": false, - "HANDLERS": [], - "INVITE": "" - }, - "ANTI_SPAM": { - "CLEAN": false, - "ENABLED": false, - "EXEMPT_ROLES": [], - "EXEMPT_USERS": [], - "BUCKETS": [] - }, - "DASH_SECURITY": { - "ACCESS": 2, - "INFRACTION": 2, - "VIEW_CONFIG": 2, - "ALTER_CONFIG": 3 - }, - "PERMISSIONS": { - "LVL4_ROLES": [], - "LVL4_USERS": [], - "ADMIN_ROLES": [], - "ADMIN_USERS": [], - "MOD_ROLES": [], - "MOD_USERS": [], - "TRUSTED_ROLES": [], - "TRUSTED_USERS": [] - }, - "SERVER_LINKS": [], - "CUSTOM_COMMANDS": { - "ROLES": [], - "ROLE_REQUIRED": false, - "CHANNELS": [], - "CHANNELS_IGNORED": true, - "MOD_BYPASS": true - } + "VERSION": 37, + "GENERAL": { + "LANG": "en_US", + "PERM_DENIED_MESSAGE": true, + "PREFIX": "!", + "TIMESTAMPS": true, + "NEW_USER_THRESHOLD": 86400, + "TIMEZONE": "Europe/Brussels", + "GHOST_MESSAGE_THRESHOLD": 10, + "GHOST_PING_THRESHOLD": 20, + "BOT_DELETED_STILL_GHOSTS": true + }, + "ROLES": { + "SELF_ROLES": [], + "ROLE_LIST": [], + "ROLE_LIST_MODE": true, + "MUTE_ROLE": 0 + }, + "LOG_CHANNELS": {}, + "MESSAGE_LOGS": { + "ENABLED": false, + "IGNORED_CHANNELS_CHANGES": [], + "IGNORED_CHANNELS_OTHER": [], + "IGNORED_USERS": [], + "EMBED": false, + "MESSAGE_ID": false + }, + "CENSORING": { + "ENABLED": false, + "ALLOW_TRUSTED_BYPASS": false, + "ALLOW_TRUSTED_CENSOR_BYPASS": false, + "WORD_CENSORLIST": [], + "TOKEN_CENSORLIST": [], + "ALLOWED_INVITE_LIST": [], + "DOMAIN_LIST_ALLOWED": false, + "DOMAIN_LIST": [], + "FULL_MESSAGE_LIST": [], + "CENSOR_EMOJI_ONLY_MESSAGES": false, + "IGNORE_IDS": false, + "MAX_LIST_LENGTH": 400 + }, + "FLAGGING": { + "WORD_LIST": [], + "TOKEN_LIST": [], + "TRUSTED_BYPASS": false, + "IGNORE_IDS": false, + "MAX_LIST_LENGTH": 400 + }, + "INFRACTIONS": { + "DM_ON_WARN": false, + "DM_ON_UNMUTE": false, + "DM_ON_MUTE": false, + "DM_ON_KICK": false, + "DM_ON_BAN": false, + "DM_ON_TEMPBAN": false, + "WARNING": null, + "UNMUTE": null, + "MUTE": null, + "KICK": null, + "BAN": null, + "TEMPBAN": null + }, + "PERM_OVERRIDES": {}, + "RAID_HANDLING": { + "ENABLED": false, + "HANDLERS": [], + "INVITE": "" + }, + "ANTI_SPAM": { + "CLEAN": false, + "ENABLED": false, + "EXEMPT_ROLES": [], + "EXEMPT_USERS": [], + "BUCKETS": [] + }, + "DASH_SECURITY": { + "ACCESS": 2, + "INFRACTION": 2, + "VIEW_CONFIG": 2, + "ALTER_CONFIG": 3 + }, + "PERMISSIONS": { + "LVL4_ROLES": [], + "LVL4_USERS": [], + "ADMIN_ROLES": [], + "ADMIN_USERS": [], + "MOD_ROLES": [], + "MOD_USERS": [], + "TRUSTED_ROLES": [], + "TRUSTED_USERS": [] + }, + "SERVER_LINKS": [], + "CUSTOM_COMMANDS": { + "ROLES": [], + "ROLE_REQUIRED": false, + "CHANNELS": [], + "CHANNELS_IGNORED": true, + "MOD_BYPASS": true + } }