From 26be30272aa1f6752d907912ad1e485dfa21f26a Mon Sep 17 00:00:00 2001 From: hfgd123 Date: Wed, 11 Mar 2026 20:29:38 +0100 Subject: [PATCH 1/4] Weird things are happening. Tried to rebuild it --- locales/en.json | 6 ++ modules/name-list-cleaner/configs/config.json | 90 +++++++++++++++++++ modules/name-list-cleaner/events/botReady.js | 7 ++ .../events/guildMemberUpdate.js | 9 ++ modules/name-list-cleaner/module.json | 24 +++++ modules/name-list-cleaner/renameMember.js | 65 ++++++++++++++ 6 files changed, 201 insertions(+) create mode 100644 modules/name-list-cleaner/configs/config.json create mode 100644 modules/name-list-cleaner/events/botReady.js create mode 100644 modules/name-list-cleaner/events/guildMemberUpdate.js create mode 100644 modules/name-list-cleaner/module.json create mode 100644 modules/name-list-cleaner/renameMember.js diff --git a/locales/en.json b/locales/en.json index a0637a9..2df8a88 100644 --- a/locales/en.json +++ b/locales/en.json @@ -993,5 +993,11 @@ "label-jump": "Jump to Message", "no-message-link": "This ping was blocked by AutoMod", "list-entry-text": "%index. **Pinged %target** at %time\n%link" + }, + "name-list-cleaner": { + "owner-cannot-be-renamed": "The owner of the server (%u) cannot be renamed.", + "nickname-error": "An error occurred while trying to change the nickname of %u: %e", + "nickname-reset": "The nickname of %u has been reset, as it started with a blacklisted character.", + "nickname-changed": "The nickname of %u has been changed, as it started with a blacklisted character." } } diff --git a/modules/name-list-cleaner/configs/config.json b/modules/name-list-cleaner/configs/config.json new file mode 100644 index 0000000..9180dbe --- /dev/null +++ b/modules/name-list-cleaner/configs/config.json @@ -0,0 +1,90 @@ +{ + "description": { + "en": "Configure the function of the module here", + "de": "Stelle hier die Funktionen des Modules ein" + }, + "humanName": { + "en": "Configuration", + "de": "Konfiguration" + }, + "filename": "config.json", + "content": [ + { + "name": "keepNickname", + "humanName": { + "en": "Keep nickname", + "de": "Nickname behalten" + }, + "default": { + "en": true + }, + "description": { + "en": "If yes: special characters will be removed from nicknames; if no: the nickname will be removed and the username will be shown instead.", + "de": "Wenn ja: Sonderzeichen werden aus den Nicknames entfernt; wenn nein: der Nickname wird entfernt und stattdessen der Benutzername angezeigt." + }, + "type": "boolean" + }, + { + "name": "symbolWhitelist", + "humanName": { + "en": "Character Whitelist/Blacklist", + "de": "Zeichen Whitelist/Blacklist" + }, + "default": { + "en": [] + }, + "description": { + "en": "A list of characters that should be allowed (whitelist) or blocked (blacklist) at the start of usernames. If the list is empty, all non-alphanumeric characters will be removed.", + "de": "Eine Liste von Zeichen, die am Anfang von Benutzernamen erlaubt (Whitelist) oder blockiert (Blacklist) werden sollen. Wenn die Liste leer ist, werden alle nicht-alphanumerischen Zeichen entfernt." + }, + "type": "array", + "content": "string" + }, + { + "name": "isBlacklist", + "humanName": { + "en": "Use blacklist instead of whitelist", + "de": "Blacklist statt Whitelist verwenden" + }, + "default": { + "en": false + }, + "description": { + "en": "If yes: the list of characters will be treated as a blacklist (characters in the list will be blocked); if no: the list will be treated as a whitelist (only characters in the list and alphanumeric characters will be allowed).", + "de": "Wenn ja: die Liste der Zeichen wird als Blacklist behandelt (Zeichen in der Liste werden blockiert); wenn nein: die Liste wird als Whitelist behandelt (nur Zeichen in der Liste und alphanumerische Zeichen werden erlaubt)." + }, + "type": "boolean" + }, + { + "name": "userWhitelist", + "humanName": { + "en": "User Whitelist", + "de": "Benutzer-Whitelist" + }, + "default": { + "en": [] + }, + "description": { + "en": "A list of user IDs that should be exempt from the username check. Usernames of these users will not be modified.", + "de": "Eine Liste von Benutzer-IDs, die von der Benutzernamenprüfung ausgenommen werden sollen. Die Benutzernamen dieser Benutzer werden nicht geändert." + }, + "type": "array", + "content": "userID" + }, + { + "name": "alsoCheckUsernames", + "humanName": { + "en": "Also check usernames", + "de": "Auch Benutzernamen überprüfen" + }, + "default": { + "en": false + }, + "description": { + "en": "If yes: not only nicknames but also usernames will be checked for special characters and modified accordingly. If no: only nicknames will be checked and modified, usernames will be left unchanged.", + "de": "Wenn ja: nicht nur Nicknames, sondern auch Benutzernamen werden auf Sonderzeichen überprüft und entsprechend geändert. Wenn nein: nur Nicknames werden überprüft und geändert, Benutzernamen bleiben unverändert." + }, + "type": "boolean" + } + ] +} \ No newline at end of file diff --git a/modules/name-list-cleaner/events/botReady.js b/modules/name-list-cleaner/events/botReady.js new file mode 100644 index 0000000..aeb44e6 --- /dev/null +++ b/modules/name-list-cleaner/events/botReady.js @@ -0,0 +1,7 @@ +const {renameMember} = require('../renameMember'); + +module.exports.run = async function (client) { + for (const member of client.guild.members.cache.values()) { + await renameMember(client, member); + } +} \ No newline at end of file diff --git a/modules/name-list-cleaner/events/guildMemberUpdate.js b/modules/name-list-cleaner/events/guildMemberUpdate.js new file mode 100644 index 0000000..1e8d39d --- /dev/null +++ b/modules/name-list-cleaner/events/guildMemberUpdate.js @@ -0,0 +1,9 @@ +const {renameMember} = require("../renameMember"); +module.exports.run = async function (client, oldGuildMember, newGuildMember) { + + if (!client.botReadyAt) return; + if (newGuildMember.guild.id !== client.guild.id) return; + if (oldGuildMember.nickname === newGuildMember.nickname && oldGuildMember.user.username === newGuildMember.user.username) return; + await renameMember(client, newGuildMember); +} + diff --git a/modules/name-list-cleaner/module.json b/modules/name-list-cleaner/module.json new file mode 100644 index 0000000..890ebd1 --- /dev/null +++ b/modules/name-list-cleaner/module.json @@ -0,0 +1,24 @@ +{ + "name": "name-list-cleaner", + "humanReadableName": { + "en": "Name List Cleaner", + "de": "Namenslisten Cleaner" + }, + "author": { + "name": "hfgd", + "link": "https://github.com/hfgd123", + "scnxOrgID": "2" + }, + "openSourceURL": "https://github.com/hfgd123/CustomDCBot/tree/main/modules/name-list-cleaner", + "config-example-files": [ + "configs/config.json" + ], + "events-dir": "/events", + "tags": [ + "tools" + ], + "description": { + "en": "Remove special characters from the beginning of usernames", + "de": "Entferne Sonderzeichen vom Anfang von Benutzernamen" + } +} \ No newline at end of file diff --git a/modules/name-list-cleaner/renameMember.js b/modules/name-list-cleaner/renameMember.js new file mode 100644 index 0000000..b6d5242 --- /dev/null +++ b/modules/name-list-cleaner/renameMember.js @@ -0,0 +1,65 @@ +const {localize} = require("../../src/functions/localize"); +renameMember = async function (client, guildMember) { + let newName; + const moduleConf = client.configurations['name-list-cleaner']['config']; + if (moduleConf.userWhitelist.includes(guildMember.user.id)) return; + + + if (guildMember.nickname !== null) { + newName = await checkUsername(client, guildMember.nickname, false); + if (newName === guildMember.nickname) return; + } else if (moduleConf.alsoCheckUsernames) { + newName = await checkUsername(client, guildMember.user.username, true); + if (newName === guildMember.user.username) return; + } else return; + if (guildMember.guild.ownerId === guildMember.id) { + client.logger.error('[name-list-cleaner] ' + localize('name-list-cleaner', 'owner-cannot-be-renamed', {u: guildMember.user.username})) + return; + } + if (moduleConf.keepNickname) { + try { + await guildMember.setNickname(newName, localize('name-list-cleaner', 'nickname-changed', {u: guildMember.user.username})); + } catch (e) { + client.logger.error('[name-list-cleaner] ' + localize('name-list-cleaner', 'nickname-error', {u: guildMember.user.username, e: e})) + } + } else { + if (guildMember.nickname === null) { + return; + } + try { + await guildMember.setNickname(null, localize('name-list-cleaner', 'nickname-reset', {u: guildMember.user.username})); + } catch (e) { + client.logger.error('[name-list-cleaner] ' + localize('name-list-cleaner', 'nickname-error', {u: guildMember.user.username, e: e})) + } + } +} + +module.exports.renameMember = renameMember; + +async function checkUsername(client, name, isUsername) { + const moduleConf = client.configurations['name-list-cleaner']['config']; + if (name.length === 0) { + if (isUsername) { + return 'User' + } else { + return null; + } + } + if (moduleConf.symbolWhitelist.length === 0) { + if (name.charAt(0).match(/^[a-zA-Z0-9]$/)) { + return name; + } else { + return await checkUsername(client, name.substring(1), isUsername); + } + } else if (!moduleConf.symbolWhitelist.includes(name.charAt(0)) && !moduleConf.isBlacklist) { + if (name.charAt(0).match(/^[a-zA-Z0-9]$/)) { + return name; + } else { + return await checkUsername(client, name.substring(1), isUsername); + } + } else if (moduleConf.symbolWhitelist.includes(name.charAt(0)) && moduleConf.isBlacklist) { + return await checkUsername(client, name.substring(1), isUsername); + } else { + return name; + } +} \ No newline at end of file From 53ce53b4d560dd7df41420c2e29f63ea4382d241 Mon Sep 17 00:00:00 2001 From: hfgd123 Date: Wed, 11 Mar 2026 20:30:23 +0100 Subject: [PATCH 2/4] Weird things are happening. Tried to rebuild it --- locales/en.json | 569 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 560 insertions(+), 9 deletions(-) diff --git a/locales/en.json b/locales/en.json index 2df8a88..67597d9 100644 --- a/locales/en.json +++ b/locales/en.json @@ -35,7 +35,40 @@ "channel-unlock-data-not-found": "Unlocking channel with ID %c failed because it was never locked (which is weird to begin with).", "module-disable": "Module %m got disabled because %r", "migrate-success": "Migration from %o to %m finished successfully.", - "migrate-start": "Migration from %o to %m started... Please do not stop the bot" + "migrate-start": "Migration from %o to %m started... Please do not stop the bot", + "shutdown-deferred": "Shutdown requested but a database migration is in progress. Will shut down after migration completes.", + "shutdown-after-migration": "Migration complete, proceeding with shutdown." + }, + "scnx": { + "activating": "Initializing SCNX-Integration…", + "notLongerInSCNX": "Server disabled or not longer in SCNX. Exiting.", + "activated": "SCNX Integration successfully activated. Get ready to enjoy all the benefits of SCNX", + "loggedInAs": "CustomBot %b logged in as \"%u\" on server %s with version %v an plan \"%p\"", + "choose-roles": "Select roles", + "early-access-missing": "This module is currently early access, but neither the server owner nor any of the trusted admins of this server have early access unlocked.", + "early-access-unlocked": "Early Access has been unlocked", + "early-access-locked": "Early Access features are unavailable", + "select-to-run-action": "Select to run action…", + "localeUpdate": "Updated locales", + "localeUpdateSkip": "Skipped locale update", + "reportAbuse": "Report abuse", + "localeFetchFailed": "Could not fetch locales to update them: SCNX returned %s", + "issueTrackingActivated": "Activated Issue-Tracking successfully. Your bot will now report any unfixable issues to the developers.", + "newVersion": "**⬆ New version available: %v 🎉**\n\nTo apply these changes, please restart your bot in your SCNX Dashboard.\nUpdates should be applied as soon as possible, as they include bug-fixes, improvements and new features. You can find a detailed changelog in our Discord-Server.", + "freePlanExpiring-title": "⚠ **%s's free plan is going to expire in 24 hours**", + "freePlanExpiring-description": "The free plan of \"%s\" is going to expire %r (%t). Please either watch an Ad in your SCNX Dashboard or upgrade to a payed plan to keep your bot online and running.\nThank you.", + "freePlanExpiring-upgrade": "Upgrade to paid plan", + "freePlanExpiring-watchAd": "Watch advertisement", + "freePlanExpiring-footer": "Sent to this channel, because you configured SCNX this way. You can edit notification-settings in the Pricing-Panel in your SCNX Dashboard", + "pro-field-reset": "Had to reset the value of the field \"%f\" to its default value, because customization of this field is only available to the \"%p\" plan, but this server has only \"%c\".", + "plan-STARTER": "Starter", + "plan-ACTIVE_GUILD": "Active Guild", + "plan-PRO": "Pro", + "plan-UNLIMITED": "Unlimited", + "plan-PROFESSIONAL": "Professional", + "plan-ENTERPRISE": "Enterprise", + "reduced-dashboard-active": "Reduced dashboard mode is active, meaning that period server data will be transmitted due allow the SCNX Dashboard to work.", + "reduced-dashboard-transmitting": "Transmitted updated server data due to reduced dashboard mode." }, "reload": { "reloading-config": "Reloading configuration…", @@ -95,7 +128,9 @@ "select-module-hint": "👇 Use the dropdown below to browse commands by module.", "back-to-overview": "Back to overview", "modules-overview": "📋 Modules & Commands", - "built-in-description": "Core commands built into the bot" + "built-in-description": "Core commands built into the bot", + "custom-commands-label": "Custom Commands", + "custom-commands-description": "User-created custom slash commands" }, "bot-feedback": { "command-description": "Send feedback about the bot to the bot developer", @@ -190,7 +225,20 @@ "set-command-year-description": "Year of your birthday", "delete-command-description": "Deletes your birthday from this server", "migration-happening": "Database-Schema not up-to-date. Migration database... This could take a while. Do not restart your bot to avoid data loss.", - "migration-done": "Successfully migrated database to newest version." + "migration-done": "Successfully migrated database to newest version.", + "birthday-locked": "Your birthday has been locked by an admin and cannot be edited.", + "locked-indicator": "Locked by admin", + "manage-command-description": "Manage user birthdays (admin)", + "admin-set-description": "Set a user's birthday", + "admin-remove-description": "Remove a user's birthday", + "admin-lock-description": "Lock a user's birthday from editing", + "admin-unlock-description": "Unlock a user's birthday", + "admin-user-description": "The user to manage", + "admin-birthday-set": "Birthday for %u set to %dd.%mm", + "admin-no-birthday": "%u has no birthday set", + "admin-birthday-removed": "Birthday for %u has been removed", + "admin-birthday-locked": "Birthday for %u has been locked", + "admin-birthday-unlocked": "Birthday for %u has been unlocked" }, "months": { "1": "January", @@ -206,6 +254,47 @@ "11": "November", "12": "December" }, + "giveaways": { + "no-link": "None", + "no-winners": "None", + "not-supported-for-news-channel": "Not supported for news-channels", + "leave-giveaway": "❌ Leave giveaway", + "giveaway-left": "You have successfully left this giveaway 👍", + "required-messages": "Must have %mc new messages (check with `/gmessages`)", + "required-messages-user": "Have at least %mc new messages (%um/%mc messages)", + "roles-required": "Must have one of this roles to enter: %r", + "giveaway-ended-successfully": "Giveaway ended successfully.", + "no-giveaways-found": "No giveaways found", + "gmessages-description": "See your messages for a giveaway", + "jump-to-message-hover": "Jump to message", + "messages": "Messages", + "giveaway-messages": "Giveaway-Messages", + "duration-parsing-failed": "Duration-Parsing failed.", + "channel-type-not-supported": "Channel-Type not supported", + "parameter-parsing-failed": "Parsing of parameters failed", + "started-successfully": "Started giveaway successfully in %c.", + "reroll-done": "Done :+1:", + "select-menu-description": "Will end in #%c on %d", + "no-giveaways-for-reroll": "They are no currently running giveaways. Maybe you are looking for /reroll?", + "select-giveaway-to-end": "Please select the giveaway which you want to end.", + "please-select": "Please select", + "gmanage-description": "Manage giveaways", + "gmanage-start-description": "Start a new giveaway", + "gmanage-channel-description": "Channel to start the giveaway in", + "gmanage-price-description": "Price that can be won", + "gmanage-duration-description": "Duration of the giveaway (e.g: \"2h 40m\" or \"7d 2h 3m\")", + "gmanage-winnercount-description": "Count of winners that should be selected", + "gmanage-requiredmessages-description": "Count of new (!) messages that a user needs to have before entering", + "gmanage-requiredroles-description": "Role that user need to have to enter the giveaway", + "gmanage-sponsor-description": "Sets a different giveaway-starter, useful if you have a sponsor", + "gmanage-sponsorlink-description": "Link to a sponsor if applicable", + "gend-description": "End a giveaway", + "gereroll-description": "Rerolls an ended giveaway", + "gereroll-msgid-description": "Message-ID of the giveaway", + "gereroll-winnercount-description": "How many new winners there should be", + "migration-happening": "Database not up-to-date. Migrating database...", + "migration-done": "Migrated database successfully." + }, "levels": { "leaderboard-channel-not-found": "Leaderboard-Channel not found or wrong type", "leaderboard-notation": "%p. %u: Level %l - %xp XP", @@ -257,6 +346,31 @@ "idle": "Away", "online": "Online" }, + "partner-list": { + "could-not-give-role": "Could not give role to user %u", + "could-not-remove-role": "Could not remove role from user %u", + "list-location": "[Partner List] The partner list is currently located here: %l. Delete the message and restart the bot, to re-send it.", + "partner-not-found": "Partner could not be found. Please check if you are using the right partner-ID. The partner-ID is not identical with the server-id of the partner. The Partner-ID can be found [here](https://gblobscdn.gitbook.com/assets%2F-MNyHzQ4T8hs4m6x1952%2F-MWDvDO9-_JwAGqtD6at%2F-MWDxIcOHB9VcWhjsWt7%2Fscreen_20210320-102628.png?alt=media&token=2f9ac1f7-1a14-445c-b34e-83057789578e) in the partner-embed.", + "successful-edit": "Edited partner-list successfully.", + "channel-not-found": "Could not find channel with ID %c or the channel has a wrong type (only text-channels supported)", + "no-partners": "There are currently no partners. This is odd, but that's how it is ¯\\_(ツ)_/¯\n\nTo add a partner, run `/partner add` as a slash-command.", + "information": "Information", + "command-description": "Manages the partner-list on this server", + "padd-description": "Add a new partner", + "padd-name-description": "Name of the partner", + "padd-category-description": "Please select one of the categories specified in your configuration", + "padd-owner-description": "Owner of the partnered server", + "padd-inviteurl-description": "Invite to the partnered server", + "pedit-description": "Edits an existing partner", + "pedit-id-description": "ID of the partner", + "pedit-name-description": "New name of the partner", + "pedit-inviteurl-description": "New invite to this partner", + "pedit-category-description": "New category of this partner", + "pedit-owner-description": "New owner of the partner server", + "pedit-staff-description": "New designated staff member for this partner server", + "pdelete-description": "Deletes an exiting partner", + "pdelete-id-description": "ID of the partner" + }, "ping-on-vc-join": { "channel-not-found": "Notify channel %c not found", "could-not-send-pn": "Could not send PN to %m" @@ -308,8 +422,8 @@ "ended-poll": "Poll ended successfully", "view-public-votes": "View current voters", "not-public": "This poll does not appear to be public, no results can be displayed.", - "poll-private": "\uD83D\uDD12 This poll is **anonymous**, meaning that no one can see what you voted (not even the admins).", - "poll-public": "\uD83D\uDD13 This poll is **public**, meaning that everyone can see what you voted.", + "poll-private": "🔒 This poll is **anonymous**, meaning that no one can see what you voted (not even the admins).", + "poll-public": "🔓 This poll is **public**, meaning that everyone can see what you voted.", "not-text-channel": "You need to select a text-channel that is not an announcement-channel." }, "channel-stats": { @@ -423,6 +537,41 @@ "edit-modal-username-placeholder": "Username of the user", "user-not-found": "User not found" }, + "guess-the-number": { + "command-description": "Manage your guess-the-number-games", + "status-command-description": "Shows the current status of a guess-the-number-game in this channel", + "create-command-description": "Create a new guess-the-number-game in this channel", + "create-min-description": "Minimal value users can guess", + "create-max-description": "Maximal value users can guess", + "create-number-description": "Number users should guess to win", + "end-command-description": "Ends the current game", + "session-already-running": "There is a session already running in this channel. Please end it with /guess-the-number end", + "session-not-running": "There is currently no session running.", + "gamechannel-modus": "You can't use this command in a gamechannel. To end a game, disable the gamechannel modus and try using the end command.", + "session-ended-successfully": "Ended session successfully. Locked channel successfully.", + "current-session": "Current session", + "number": "Number", + "min-val": "Min-Value", + "max-val": "Max-Value", + "owner": "Owner", + "guess-count": "Count of guesses", + "min-max-discrepancy": "`min` can't be bigger or equal to `max`", + "max-discrepancy": "`number` can't be bigger than `max`.", + "min-discrepancy": "`number` can't be smaller than `min`.", + "emoji-guide-button": "What does the reaction under my guess mean?", + "guide-wrong-guess": "Your guess was wrong (but your entry was valid)", + "guide-win": "You guessed correctly - you win :tada:", + "guide-admin-guess": "Your guess was invalid, because you are an admin - admins can't participate because they can see the correct number", + "guide-invalid-guess": "Your guess was invalid (e.g. below the minimal / over the maximal number, not a number, …)", + "created-successfully": "Created game successfully. Users can now start guessing in this channel. The winning number is **%n**. You can always check the status by running `/guess-the-number-status`. Note that you as an admin can not guess.", + "game-ended": "Game ended", + "game-started": "Game started", + "leaderboard-button": "Leaderboard", + "leaderboard-title": "Guess-the-Number Leaderboard", + "leaderboard-empty": "No games have been won yet.", + "wins": "wins", + "guesses": "guesses" + }, "massrole": { "command-description": "Manage roles for all members", "add-subcommand-description": "Add a role to all members", @@ -673,13 +822,91 @@ "ticket-log-value": "Transcript with %n messages can be found [here](%u).", "closed-by": "👷 Ticket closed by" }, + "custom-commands": { + "not-found": "This custom-command does not longer exist. It might have been deleted or deactivated.", + "parameter-not-set": "This parameter did not get specified", + "true": "True", + "no-roles-default": "⚠️ You do not have enough permissions to execute this custom command because you are missing the roles required to execute this command.", + "fix-no-reply": "**⚠ This Custom-Command is not properly set up**\nTo fix this, add the \"Reply to message or interaction\"-Action to this Custom-Command and reload your configuration.", + "false": "False" + }, + "logging": { + "action-Create": "➕ %i created", + "action-Delete": "🗑 %i deleted", + "not-set": "Not set", + "action-Update": "🖊 %i edited", + "action-ban": "🔨 User banned", + "action-unban": "🔨 User unbanned", + "type-Channel": "Channel", + "type-CHANNEL_OVERWRITE": "Channel-Overwrite", + "type-Role": "Role", + "type-Emoji": "Emoji", + "type-Guild": "Server", + "type-MESSAGE": "Message", + "user-header": "👤 Executed by", + "target-header": "➡ Target: %i", + "reason-header": "🗒 Reason", + "content-header": "💬 Content", + "old-content-header": "💬 Previous content", + "new-content-header": "🖊 New content", + "was": "Was", + "key-color": "Color", + "key-communication_disabled_until": "Timeout expires at", + "key-premium_progress_bar_enabled": "Show Booster-Progress-Bar", + "key-afk_timeout": "AFK-Timeout", + "key-default_message_notifications": "Only @mentions notifications settings", + "key-system_channel_id": "System-Channel", + "key-afk_channel_id": "AFK-Channel", + "key-nick": "Nickname", + "vc-user": "👤 User", + "key-allow": "✅ Allowed permission overwrites", + "key-deny": "⛔ Denied permission overwrites", + "vc-channel": "☎ Channel", + "vc-new-channel": "➡ New channel", + "vc-old-channel": "☎ Old channel", + "key-deaf": "Deafened?", + "key-mute": "Muted?", + "key-roles": "Roles", + "key-role-updates": "Roles updated", + "new": "New", + "jump-to-message": "Jump to message", + "position": "Position", + "key-name": "Name", + "key-type": "Type", + "key-nsfw": "Age restricted channel", + "key-rate_limit_per_user": "Slowmode", + "key-topic": "Channel-Topic", + "key-permissions": "Permissions", + "non-set": "", + "sentAt-header": "📅 Message sent at", + "author-header": "👤 Message-Author", + "vc-joined": "📥 User joined a Voice-Channel", + "vc-leaved": "📤 User left a Voice-Channel", + "vc-switched": "🔃 User switched a Voice-Channel", + "true": "Activated", + "type-User": "User", + "false": "Disabled" + }, "reminders": { "command-description": "Set a reminder for yourself", "in-description": "After what time should we remind you? (eg. \"2h 30m\")", "what-description": "What should we remind you about?", "dm-description": "Should we send you a DM instead of reminding your in this channel?", "one-minute-in-future": "Your reminder needs to be at least one minute in the future", - "reminder-set": "Reminder set. We'll remind you at %d." + "reminder-set": "Reminder set. We'll remind you at %d.", + "snooze-10m": "10 min", + "snooze-30m": "30 min", + "snooze-1h": "1 hour", + "snooze-1d": "1 day", + "snoozed": "Reminder snoozed. We'll remind you again at %d.", + "snooze-not-allowed": "You can only snooze your own reminders." + }, + "akinator": { + "command-description": "Let akinator guess a character/object/animal", + "type-description": "Select what akinator should guess (default: character)", + "character-name": "Character", + "object-name": "Object", + "animal-name": "Animal" }, "afk-system": { "command-description": "Manage your AFK-Status on this server", @@ -692,6 +919,48 @@ "afk-nickname-change-audit-log": "Updated user nickname because they started an AFK-Session", "can-not-edit-nickname": "Can not edit nickname of %u: %e" }, + "invite-tracking": { + "hook-installed": "Installed hook to receive more information about invites", + "log-channel-not-found-but-set": "Log-Channel %c not found, but it's set in your configuration.", + "new-member": "New member joined", + "member-leave": "Member left", + "joined-at": "Joined at", + "invite-type": "Invite-Type", + "member": "Member", + "invite": "Invite", + "invite-code": "Invite-Code: [%c](%u)", + "invite-channel": "Channel: %c", + "expires-at": "Expires at: %t", + "created-at": "Created at: %t", + "inviter": "Invited by: %u (%a/%i active invites)", + "uses": "Uses: %u", + "createdAt": "Created at: %t", + "max-uses": "Max-Uses: %u", + "normal-invite": "Normal Invite", + "vanity-invite": "Vanity-Invite", + "missing-permissions": "I don't have enough permissions to determine the invite", + "unknown-invite": "Sorry, but I couldn't determine the invite this person used", + "joined-for-the-x-time": "%u joined this server %x times before this, the last one was %t.", + "revoke-invite": "Revoke this invite", + "invite-not-found": "This invite could not be found... Maybe it already got revoked?", + "invite-revoked": "Invite revoked successfully.", + "missing-revoke-permissions": "Sorry, but you can't revoke this invite: Missing `MANAGE_GUILD` permission.", + "invite-revoke-audit-log": "%u revoked this invite", + "invite-revoked-error": "Could not revoke invite %c: %e", + "trace-command-description": "Trace the invites of a user", + "argument-user-description": "User to trace invites from", + "invited-by": "Invited by", + "invited-users": "Invited users", + "inviter-not-found": "Could not determine who invited this user.", + "no-users-invited": "This user hasn't invited any other users.", + "and-x-more-users": "And %x more users", + "and-x-more-invites": "And %x more invites", + "created-invites": "Created invites", + "not-showing-left-users": "Invited users who left are not displayed here.", + "no-invites": "This user has create no invites", + "revoke-user-invite": "Revoke all user's invites", + "revoked-invites-successfully": "All invites from this user got revoked successfully" + }, "tic-tac-toe": { "command-description": "Play tic-tac-toe against someone in the chat", "user-description": "User to play against", @@ -823,6 +1092,42 @@ "icon-option-description": "Your role-icon", "confirm-option-remove-description": "Do you really want to delete your custom role? This will not reset any running cooldowns" }, + "team-goals": { + "command-description": "See you and other's progress on the weekly team-goal", + "progress-command-description": "See a user's progress on this weekly team-goal", + "history-command-description": "See a user's past weekly team-goals", + "passed": "✅ Goals passed", + "pending": "❌ Goals not yet passed", + "passed-description": "Good job! You passed the weekly goal of %g with %s messages - you will receive the weekly notification on %e. 🎉", + "failed-description": "Almost there! You still need to %r messages to pass the goal of %g messages - you have time to complete this till %d.\n\n%bar", + "no-history": "Sorry, but we haven't recorded any past goal data about this user. Try again after the next weekly goal notification.", + "week": "Week between %start and %end: %result (%messages / %goal messages)", + "passedShort": "passed", + "failedShort": "failed", + "historyTitle": "Goal-History of the last %n weeks", + "statsTitle": "📈 Analytics", + "statsContent": "You passed %p of the goals in the %l weeks.", + "user-description": "User to shows stats of (default: you)" + }, + "youtube-notifications": { + "youtube-channel-not-found": "[YouTube-Notifications] YouTube-Channel \"%i\" not found. Disabled internally.", + "user-not-on-server": "[YouTube-Notifications] Could not find user %u on this server" + }, + "twitter-notifications": { + "twitter-user-not-found": "[Twitter-Notifications] Twitter-User \"%u\" not found. Disabled internally." + }, + "tiktok-notifications": { + "tiktok-user-not-found": "[TikTok-Notifications] TikToker \"%u\" not found. Disabled internally." + }, + "threads-notifications": { + "threads-user-not-found": "[Threads-Notifications] Thread user \"%u\" not found. Disabled internally." + }, + "reddit-notifications": { + "sub-not-found": "[Reddit-Notifications] Subbreddit %s not found. Disabled internally." + }, + "rss-notifications": { + "feed-not-working": "[RSS Notifications] Feed \"%u\" invalid, not working or empty." + }, "rock-paper-scissors": { "stone": "Stone", "paper": "Paper", @@ -888,6 +1193,32 @@ "inactive-warn": "%u, it's your turn in the uno game!", "inactive-win": "The uno game has ended. %u won as all others have been eliminated!" }, + "chat-gpt": { + "header": "Error generating response - no AI credits were deducted.", + "timeout": "Image generation request timeout or SCNX backend connection failure.", + "content-blocked": "Your prompt has been rejected by our content filtering system. Do not use this bot to generate NSFW images.", + "description": "Something went wrong when trying to generate an answer.\nReason: ```%e```", + "button": "Learn more", + "errored": "Error generating response", + "reset": "Successfully reset personality. Messages sent before this message will be ignored. Ask me anything ^^", + "out-of-funds": "This server has run out of AI Coins", + "out-of-funds-description": "AI Coins are needed to power responses. You can top up directly in the SCNX Dashboard, or upgrade to a Professional plan which includes a generous monthly AI Coins allowance.", + "out-of-funds-topup": "Top up AI Coins", + "out-of-funds-plans": "View Professional Plans", + "prompt-violation": "Custom system prompt was flagged for violating SCNX content policy. The module has been disabled and can't be used until you request a manual review from the SCNX Compliance Team.", + "help-desk-article": "https://faq.scnx.app/ai-on-scnx/" + }, + "ai-images": { + "failed-header": "Error generating image - no AI credits were deducted.", + "header": "Your generated image is here", + "download": "Download image", + "generating-header": "Your image is being generated…", + "generating-description": "Your image is being generated. This might take a while…", + "failed-description": "Something went wrong when trying to generate your image.\nReason: ```%e```\n[Report abuse](https://scootk.it/scnx-report).", + "command-description": "Use AI to generate any image - only your imagination is the limit", + "size-description": "Size of the image to generate (larger images may take more time to generate, default: 1024x1024)", + "prompt-description": "Describe how your image should look - be as specific as possible for the best results" + }, "quiz": { "what-have-i-voted": "What have I voted?", "vote": "Vote!", @@ -923,14 +1254,182 @@ "no-quiz": "No quizzes have been created for this server. Trusted admins can create them on https://scnx.app/glink?page=bot/configuration?query=quiz&file=quiz%7Cconfigs%2FquizList .", "no-permission": "You don't have enough permissions to create quiz using the command." }, + "applications": { + "apply-description": "Start an application process", + "continue-in-dms": "Application process started - please [continue in your DMs](<%u>).", + "dms-disabled": "Oh no - I couldn't DM you. Please [enable DMs]() to continue your application.", + "category-description": "Category to start application in", + "submitting": "Your application is being submitted…", + "documentHeader": "#%i: \"%t\" by %u", + "submission-header": "Submission details", + "documentFooter": "Deny or approve this application in #%c.", + "canceled": "Successfully canceled this application.", + "view-application-content": "View (encrypted) content of application", + "approve": "Approve", + "user-left": "This user is not longer on your server :/", + "deny": "Deny", + "modal-deny": "Deny application", + "application-open": "You already applied to this category previously and haven't received any response from our team yet. You can not apply again until you receive a response from our teams - make sure your DMs are open.", + "modal-approve": "Approve application", + "reason-title": "Reason for your action", + "reason-placeholder": "Explain why you came to this conclusion - might be displayed to users", + "no-reason": "No reason specified", + "submitted": "Action submitted successfully", + "deny-embed-title": "Denied by %u", + "approve-embed-title": "Approved by %u", + "category-not-found": "Sorry, but this application category does not exist or is empty (missing application questions).", + "require-role-to-process": "You can't deny or approve this application, as you are missing one of the configured roles." + }, + "emoji-quiz": { + "starting": "Starting Emoji-Quiz…", + "slow-down": "Please slow down - you have to wait **5 seconds** between each of your guesses", + "request-hint": "Request hint", + "solution": "Solution", + "point": "Point", + "points": "Points", + "leaderboard": "View Leaderboard", + "skipped-prompt": "%u successfully skipped the last prompt", + "hint": "Hint (unlocked by %m):", + "firstletter": "First Letter (unlocked by %m)", + "prompt": "Prompt", + "no-users": "No one participated in Emoji-Quiz yet - once a few prompts get solved, you'll see users here.", + "hint-unlocked": "%m requested a hint:\n> %h", + "firstletter-shown": "First letter has been already requested by %m: **%d**", + "request-first-letter": "Request first letter", + "solved": "Guessed by %m", + "skipped": "Skipped by %m", + "question-info": "Info about questions", + "max-SKIP-reached": "Sorry, but you have already reached the maximum amount of **%n skips per hour**. You can try again %t.", + "max-FIRSTLETTER-reached": "Sorry, but you have already reached the maximum amount of **%n first-letter-reveals per hour**. You can try again %t.", + "max-HINT-reached": "Sorry, but you have already reached the maximum amount of **%n hints per hour**. You can try again %t.", + "question-by-owners": "This question is part of a dataset created by the administrators of this server.", + "question-info-description": "This question is part of a dataset provided by crowdsourcing. © [ScootKit](https://scootkit.net), %y. [View all contributors](https://scootk.it/emojiquiz-crowdsourcing) or [contribute yourself](https://scootk.it/emojiquiz-issues).", + "request-skip": "Skip prompt", + "submitted-by": "Submitted by %m", + "current-question": "Current question", + "no-question": "An emoji-quiz would be here. But you have enabled custom game questions and have non configured - so here's this error message instead :/", + "last-question": "Previous prompt", + "embed-title": "Emoji-Quiz - what do these emojis mean?", + "with-hint": "with hint", + "firstletter-unlocked": "%m revealed first letter: **%d**", + "hint-shown": "Hint already requested by %m:\n> %h", + "leaderboard-explanation": "A user will receive two (or one, if a hint was used) points for each correct guess.", + "leaderboard-header": "Leaderboard", + "report-or-suggest": "Error-Reports and Suggestions", + "downloading": "Downloading up-to-date SCNX Emoji-Quiz-Data…", + "downloaded": "Successfully downloaded up-to-date Emoji-Quiz-Data", + "embed-description": "Please guess the meaning of the following emojis in combination by sending a message in this channel!", + "channel-not-found": "The configured channel was not found or is not supported for this feature" + }, + "flag-quiz": { + "starting": "Starting the Flag Guessing game…", + "slow-down": "Please slow down - you have to wait **3 seconds** between each of your guesses", + "no-question": "No questions found. Please make sure you have enabled at least one datasource in your SCNX module configuration.", + "solution": "Solution", + "information-about": "Information about %n", + "region": "Region", + "difficulty": "Difficulty", + "continent": "Continent", + "capital": "Capital", + "na": "Not found", + "point": "Point", + "points": "Points", + "leaderboard": "View Leaderboard", + "skipped-flag": "%u successfully skipped the last flag. The correct answer was \"%a\".", + "firstletter": "First Letter (unlocked by %m)", + "no-users": "No one participated in flag guessing game yet - once a few prompts get solved, you'll see users here.", + "firstletter-shown": "First letter has been already requested by %m: **%d**", + "request-first-letter": "Request first letter", + "solved": "Guessed by %m", + "country-code": "Country Code ([ISO 3166](https://www.iso.org/iso-3166-country-codes.html))", + "skipped": "Skipped by %m", + "question-info": "Info about last flag", + "max-FIRSTLETTER-reached": "Sorry, but you have already reached the maximum amount of **%n first-letter-reveals per hour**. You can try again %t.", + "max-SKIP-reached": "Sorry, but you have already reached the maximum amount of **%n skips per hour**. You can try again %t.", + "request-skip": "Skip flag", + "last-question": "Previous prompt", + "embed-title": "Flag guessing - what government does this flag belong to?", + "firstletter-unlocked": "%m revealed first letter: **%d**", + "embed-description": "Please guess which country this flag belongs to. ", + "embed-description-two": "%a or %b", + "leaderboard-explanation": "A user will receive one points for each correct guess.", + "leaderboard-header": "Leaderboard", + "flag-disclaimer": "Used flags are Public Domain, provided by Flagpedia and Wikimedia Commons. Inclusion of countries in this dataset is not a political statement of ScootKit - it's just a game, don't take this to seriously.", + "downloading": "Downloading up-to-date SCNX Flag-Guessing-Data…", + "downloaded": "Successfully downloaded up-to-date Flag-Guessing-Data", + "channel-not-found": "The configured channel was not found or is not supported for this feature" + }, + "topgg": { + "channel-not-found": "The configured channel with the ID \"%c\" was not found", + "testvote-header": "This was a test vote", + "voterole-reached": "Voted on top.gg and received Voter-Role", + "voterole-ended": "Vote on top.gg expired and got Voter-Role removed", + "opt-in": "Enable notifications when you can vote again", + "opt-out": "Disable notifications when you can vote again", + "opted-in": "Successfully opted in into receiving notifications when you can vote again", + "opted-out": "Successfully opted out of receiving notifications when you can vote again", + "already-opted-in": "You are already opted-in and will receive notifications when you can vote again", + "already-opted-out": "You are already opted-out and will **not** receive notifications when you can vote again", + "voteamount-reached": "The user reached %k votes which resulted in this role to be given.", + "testvote-description": "This vote was triggered in the top.gg dashboard and does not count towards any votecount of anyone and won't be used for reminders." + }, "starboard": { "invalid-minstars": "Invalid minimum stars %stars", "star-limit": "You've reached the hourly starboard limit of %limitEmoji on the server which is why you cannot react on the message %msgUrl .\nTry again %time!" }, + "forum-support": { + "close-audit-log": "[Forum Support] Post got closed by %u.", + "tag-not-found": "Tag \"%t\" could not be found in forum channel \"%f\".", + "missing-permissions": "Posts can only be closed by the post creator and staff members with configured roles." + }, "nicknames": { "owner-cannot-be-renamed": "The owner of the server (%u) cannot be renamed.", "nickname-error": "An error occurred while trying to change the nickname of %u: %e" }, + "minecraft-status": { + "channel-not-found": "Configured channel \"%c\" for server with address \"%i\" was not found.", + "eula-block": "Server \"%i\" has been blocked due to EULA violations. This server can't be used on SCNX.", + "loading-message": "Loading Minecraft server status…" + }, + "anonymous-message": { + "command-description": "Send a message in the anonymous chat (none will know you sent the message)", + "command-message-description": "This is the message that will be sent in the anonymous chat.", + "channel-not-found": "Your anonymous channel was not found.", + "moderate-command-description": "Moderate your anonymous channel.", + "moderate-block-command-description": "Block a user from writing in the anonymous chat", + "moderate-block-display-name-command-description": "Enter the name of the user displayed in the anonymous chat", + "moderate-block-reason-command-description": "Reason for the block. This might be displayed to the user.", + "moderate-enable-command-description": "Unblock a user from the anonymous chat", + "moderate-already-disabled": "This user is already disabled. Reason: %r", + "webhook-reason": "Created webhook to be used for the anonymous chat.", + "no-reason": "No reason was specified.", + "user-disabled": "Disabled user successfully. This user won't be able to send messages in the anonymous chat anymore.", + "user-enabled": "User successfully enabled. This user will be able to send messages in the anonymous chat again.", + "user-unblocked": "Unblocked user successfully. This user will be able to send messages in the anonymous chat again.", + "moderate-not-disabled": "This user is not disabled.", + "moderate-delete-the-message-description": "Select which message will be deleted.", + "message-not-found": "We couldn't find the message you want to delete.", + "message-already-deleted": "This message has already been deleted.", + "message-deleted": "Successfully deleted message from the anonymous chat.", + "moderate-delete-message-description": "Delete a message sent in the anonymous chat. Enter the message id.", + "command-reset-description": "Enable this option to reset your identity. Resting your identity can not be undone.", + "content-too-long": "Your message is too long. Discord messages must be 2000 characters or fewer.", + "not-found": "This user has not been found. Make sure to enter the name displayed in the anonymous chat correctly." + }, + "holidays": { + "countdown-channel-not-found": "The countdown channel could not be found - if you don't want a countdown, please disable the option in the dashboard.", + "calendar-channel-not-found": "The calendar channel was not found - if you don't want to use this feature, please disable it in the dashboard.", + "m-left": "😴 More than a month left.", + "countdown-24-d": "🎄 %d days and %h hours left until Christmas!", + "countdown-24-h": "🎄 %h hours left until Christmas!", + "countdown-24-p": "🎄 Merry christmas!", + "countdown-25-d": "🎄 %d days and %h hours left until Christmas!", + "countdown-25-h": "🎄 %h hours left until Christmas!", + "countdown-25-p": "🎄 Merry christmas!", + "countdown-1-d": "🎆 %d days and %h hours left until %y!", + "countdown-1-h": "🎆 %h hours left until %y!", + "countdown-1-p": "🎆 Happy %y!" + }, "ping-protection": { "log-not-a-member": "[Ping Protection] Punishment failed: The pinger is not a member.", "log-punish-role-error": "[Ping Protection] Punishment failed: I cannot punish %tag because their role is higher than or equal to my highest role.", @@ -994,10 +1493,62 @@ "no-message-link": "This ping was blocked by AutoMod", "list-entry-text": "%index. **Pinged %target** at %time\n%link" }, + "betterstatus": { + "command-description": "Change the bot's status", + "command-disabled": "The /status command is not enabled. An administrator needs to enable it in the betterstatus module configuration.", + "text-description": "The status text to display", + "activity-type-description": "The activity type (Playing, Watching, etc.)", + "bot-status-description": "The bot's online status (Online, Idle, DND)", + "streaming-link-description": "Streaming URL (only used when activity type is Streaming)", + "status-changed": "Bot status has been changed to: %s" + }, + "activity-streak": { + "module-loaded": "Activity streak module loaded and scheduled", + "command-description": "View and manage activity streaks", + "view-description": "View the activity streak of a user", + "add-description": "Add a streak point to a user (staff-managed mode only)", + "reset-description": "Reset a user's streak (staff-managed mode only)", + "user-option-description": "The user to view or manage", + "streak-title": "%u's Activity Streak", + "current-streak": "🔥 Current Streak", + "longest-streak": "🏆 Longest Streak", + "streak-mode": "📋 Mode", + "staff-managed": "Staff Managed", + "automatic": "Automatic", + "period-daily": "days", + "period-weekly": "weeks", + "period-monthly": "months", + "user-not-found": "Could not find this user.", + "not-staff-managed": "This command is only available in staff-managed mode.", + "no-permission": "You do not have permission to manage streaks.", + "user-required": "You must specify a user.", + "no-streak-data": "No streak data found for this user.", + "already-counted": "This user's activity has already been counted for the current period.", + "streak-added": "Streak updated for %u. Current streak: %s", + "streak-reset": "Streak has been reset for %u.", + "nickname-update-reason": "Streak count updated", + "role-reward-reason": "Reached streak of %s", + "restore-description": "Restore your last lost streak (once per loss)", + "no-restore-permission": "You do not have permission to restore streaks.", + "streak-not-lost": "This streak is still active and does not need to be restored.", + "no-previous-streak": "There is no previous streak to restore.", + "already-restored": "This streak has already been restored. You can only restore once per loss.", + "streak-restored": "Streak restored for %u! Current streak: %s", + "leaderboard-title": "Streak Leaderboard", + "leaderboard-description": "View the streak leaderboard", + "leaderboard-empty": "No active streaks yet.", + "remove-description": "Undo the last streak addition for a user", + "streak-removed": "Streak for %u reduced to %s", + "hide-description": "Toggle hiding your streak from your nickname", + "streak-hidden": "Your streak is now hidden from your nickname.", + "streak-visible": "Your streak is now visible in your nickname again.", + "hide-reason": "User opted out of streak display", + "role-remove-reason": "Streak reset" + }, "name-list-cleaner": { "owner-cannot-be-renamed": "The owner of the server (%u) cannot be renamed.", "nickname-error": "An error occurred while trying to change the nickname of %u: %e", - "nickname-reset": "The nickname of %u has been reset, as it started with a blacklisted character.", - "nickname-changed": "The nickname of %u has been changed, as it started with a blacklisted character." + "nickname-reset": "The nickname of %u has been reset, as it started with a disallowed character.", + "nickname-changed": "The nickname of %u has been changed, as it started with a disallowed character." } -} +} \ No newline at end of file From 1cbc3eff6e697584aa569045ca99a68d642ded4c Mon Sep 17 00:00:00 2001 From: hfgd123 Date: Wed, 11 Mar 2026 20:39:24 +0100 Subject: [PATCH 3/4] Next try, please work this time --- modules/name-list-cleaner/configs/config.json | 12 ++++---- modules/name-list-cleaner/renameMember.js | 29 +++++++++++-------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/modules/name-list-cleaner/configs/config.json b/modules/name-list-cleaner/configs/config.json index 9180dbe..b726c2d 100644 --- a/modules/name-list-cleaner/configs/config.json +++ b/modules/name-list-cleaner/configs/config.json @@ -19,8 +19,8 @@ "en": true }, "description": { - "en": "If yes: special characters will be removed from nicknames; if no: the nickname will be removed and the username will be shown instead.", - "de": "Wenn ja: Sonderzeichen werden aus den Nicknames entfernt; wenn nein: der Nickname wird entfernt und stattdessen der Benutzername angezeigt." + "en": "When activated, special characters will be removed from nicknames. If left disabled, the nickname will be removed and the username will be shown instead.", + "de": "Wenn aktiviert, werden Sonderzeichen aus den Nicknamen entfernt. Wenn deaktiviert, wird der Nickname entfernt und stattdessen der Benutzername angezeigt." }, "type": "boolean" }, @@ -50,8 +50,8 @@ "en": false }, "description": { - "en": "If yes: the list of characters will be treated as a blacklist (characters in the list will be blocked); if no: the list will be treated as a whitelist (only characters in the list and alphanumeric characters will be allowed).", - "de": "Wenn ja: die Liste der Zeichen wird als Blacklist behandelt (Zeichen in der Liste werden blockiert); wenn nein: die Liste wird als Whitelist behandelt (nur Zeichen in der Liste und alphanumerische Zeichen werden erlaubt)." + "en": "When activated, the list of characters will be treated as a blacklist (characters in the list will be blocked). If left disabled, the list will be treated as a whitelist (only characters in the list and alphanumeric characters will be allowed).", + "de": "Wenn aktiviert, wird die Liste der Zeichen als Blacklist behandelt (Zeichen in der Liste werden blockiert). Wenn deaktiviert, wird die Liste als Whitelist behandelt (nur Zeichen in der Liste und alphanumerische Zeichen werden erlaubt)." }, "type": "boolean" }, @@ -81,8 +81,8 @@ "en": false }, "description": { - "en": "If yes: not only nicknames but also usernames will be checked for special characters and modified accordingly. If no: only nicknames will be checked and modified, usernames will be left unchanged.", - "de": "Wenn ja: nicht nur Nicknames, sondern auch Benutzernamen werden auf Sonderzeichen überprüft und entsprechend geändert. Wenn nein: nur Nicknames werden überprüft und geändert, Benutzernamen bleiben unverändert." + "en": "When activated, not only nicknames but also usernames will be checked for special characters and modified accordingly. If left disabled, only nicknames will be checked and modified, usernames will be left unchanged.", + "de": "Wenn aktiviert, werden nicht nur Nicknamen, sondern auch Benutzernamen auf Sonderzeichen überprüft und entsprechend geändert. Wenn deaktiviert, werden nur Nicknamen überprüft und geändert, Benutzernamen bleiben unverändert." }, "type": "boolean" } diff --git a/modules/name-list-cleaner/renameMember.js b/modules/name-list-cleaner/renameMember.js index b6d5242..6455bc0 100644 --- a/modules/name-list-cleaner/renameMember.js +++ b/modules/name-list-cleaner/renameMember.js @@ -1,21 +1,25 @@ const {localize} = require("../../src/functions/localize"); renameMember = async function (client, guildMember) { - let newName; const moduleConf = client.configurations['name-list-cleaner']['config']; if (moduleConf.userWhitelist.includes(guildMember.user.id)) return; + let hasNickname = guildMember.nickname !== null; - if (guildMember.nickname !== null) { - newName = await checkUsername(client, guildMember.nickname, false); + if (hasNickname) { + let newName = checkUsername(client, guildMember.nickname, false); if (newName === guildMember.nickname) return; } else if (moduleConf.alsoCheckUsernames) { - newName = await checkUsername(client, guildMember.user.username, true); + let newName = checkUsername(client, guildMember.user.username, true); if (newName === guildMember.user.username) return; - } else return; + } else { + return; + } + if (guildMember.guild.ownerId === guildMember.id) { client.logger.error('[name-list-cleaner] ' + localize('name-list-cleaner', 'owner-cannot-be-renamed', {u: guildMember.user.username})) return; } + if (moduleConf.keepNickname) { try { await guildMember.setNickname(newName, localize('name-list-cleaner', 'nickname-changed', {u: guildMember.user.username})); @@ -23,7 +27,7 @@ renameMember = async function (client, guildMember) { client.logger.error('[name-list-cleaner] ' + localize('name-list-cleaner', 'nickname-error', {u: guildMember.user.username, e: e})) } } else { - if (guildMember.nickname === null) { + if (!hasNickname) { return; } try { @@ -36,8 +40,9 @@ renameMember = async function (client, guildMember) { module.exports.renameMember = renameMember; -async function checkUsername(client, name, isUsername) { +function checkUsername(client, name, isUsername) { const moduleConf = client.configurations['name-list-cleaner']['config']; + const regEx = /^[a-zA-Z0-9]$/; if (name.length === 0) { if (isUsername) { return 'User' @@ -46,19 +51,19 @@ async function checkUsername(client, name, isUsername) { } } if (moduleConf.symbolWhitelist.length === 0) { - if (name.charAt(0).match(/^[a-zA-Z0-9]$/)) { + if (name.charAt(0).match(regEx)) { return name; } else { - return await checkUsername(client, name.substring(1), isUsername); + return checkUsername(client, name.substring(1), isUsername); } } else if (!moduleConf.symbolWhitelist.includes(name.charAt(0)) && !moduleConf.isBlacklist) { - if (name.charAt(0).match(/^[a-zA-Z0-9]$/)) { + if (name.charAt(0).match(regEx)) { return name; } else { - return await checkUsername(client, name.substring(1), isUsername); + return checkUsername(client, name.substring(1), isUsername); } } else if (moduleConf.symbolWhitelist.includes(name.charAt(0)) && moduleConf.isBlacklist) { - return await checkUsername(client, name.substring(1), isUsername); + return checkUsername(client, name.substring(1), isUsername); } else { return name; } From 521998feba1f8d9c1294edb7177ddbdc31990f34 Mon Sep 17 00:00:00 2001 From: hfgd123 Date: Thu, 12 Mar 2026 13:13:14 +0100 Subject: [PATCH 4/4] temp-removed locales --- locales/en.json | 1554 ----------------------------------------------- 1 file changed, 1554 deletions(-) delete mode 100644 locales/en.json diff --git a/locales/en.json b/locales/en.json deleted file mode 100644 index 67597d9..0000000 --- a/locales/en.json +++ /dev/null @@ -1,1554 +0,0 @@ -{ - "main": { - "startup-info": "SCNX-CustomBot v2 - Log-Level: %l", - "missing-moduleconf": "Missing moduleConfig-file. Automatically disabling all modules and overwriting modules.json later", - "sync-db": "Synced database", - "login-error": "Bot could not log in. Error: %e", - "login-error-token": "Bot could not log in because the provided token is invalid. Please update your token.", - "login-error-intents": "Bot could not log in because the intents were not enabled correctly. Please enable \"PRESENCE INTENT\", \"SERVER MEMBERS INTENT\" and \"MESSAGE CONTENT INTENT\" in your Discord-Developer-Dashboard: %url", - "not-invited": "Please invite the bot to your Discord server before continuing: %inv", - "require-code-grant-active": "You might be unable to invite your bot to your server as you have enabled the \"Require public code grant\" option in your Discord Developer Dashboard. Please disable this option: %d", - "interactions-endpoint-active": "You bot will be unable to respond to interactions, because the field \"Interactions Endpoint URL\" has a value in your Discord Developer Dashboard. Please remove any content from this field and restart your bot: %d", - "logged-in": "Bot logged in as %tag and is now online.", - "logchannel-wrong-type": "There is no Log-Channel set or it has the wrong type (only text-channels are supported).", - "config-check-failed": "Configuration-Check failed. You can find more information in your log. The bot exited.", - "bot-ready": "The bot initiated successfully and is now listening to commands", - "no-command-permissions": "Could not update server commands. Please give us permissions to performe this critical action: %inv", - "perm-sync": "Synced permissions for /%c", - "perm-sync-failed": "Failed to synced permissions for /%c: %e", - "loading-module": "Loading module %m", - "hidden-module": "Module %m is hidden, meaning that it is not available. Skipping…", - "module-disabled": "Module %m is disabled", - "command-loaded": "Loaded command %d/%f", - "command-dir": "Loading commands in %d/%f", - "global-command-sync": "Synced global application commands", - "guild-command-sync": "Synced server application commands", - "guild-command-no-sync-required": "Server application commands are up to date - no syncing required", - "global-command-no-sync-required": "Global application commands are up to date - no syncing required", - "event-loaded": "Loaded events %d/%f", - "event-dir": "Loading events in %d/%f", - "model-loaded": "Loaded database model %d/%f", - "model-dir": "Loading database model in %d/%f", - "loaded-cli": "Loaded API-Action %c in %p", - "channel-lock": "Locked channel", - "channel-unlock": "Unlocked channel", - "channel-unlock-data-not-found": "Unlocking channel with ID %c failed because it was never locked (which is weird to begin with).", - "module-disable": "Module %m got disabled because %r", - "migrate-success": "Migration from %o to %m finished successfully.", - "migrate-start": "Migration from %o to %m started... Please do not stop the bot", - "shutdown-deferred": "Shutdown requested but a database migration is in progress. Will shut down after migration completes.", - "shutdown-after-migration": "Migration complete, proceeding with shutdown." - }, - "scnx": { - "activating": "Initializing SCNX-Integration…", - "notLongerInSCNX": "Server disabled or not longer in SCNX. Exiting.", - "activated": "SCNX Integration successfully activated. Get ready to enjoy all the benefits of SCNX", - "loggedInAs": "CustomBot %b logged in as \"%u\" on server %s with version %v an plan \"%p\"", - "choose-roles": "Select roles", - "early-access-missing": "This module is currently early access, but neither the server owner nor any of the trusted admins of this server have early access unlocked.", - "early-access-unlocked": "Early Access has been unlocked", - "early-access-locked": "Early Access features are unavailable", - "select-to-run-action": "Select to run action…", - "localeUpdate": "Updated locales", - "localeUpdateSkip": "Skipped locale update", - "reportAbuse": "Report abuse", - "localeFetchFailed": "Could not fetch locales to update them: SCNX returned %s", - "issueTrackingActivated": "Activated Issue-Tracking successfully. Your bot will now report any unfixable issues to the developers.", - "newVersion": "**⬆ New version available: %v 🎉**\n\nTo apply these changes, please restart your bot in your SCNX Dashboard.\nUpdates should be applied as soon as possible, as they include bug-fixes, improvements and new features. You can find a detailed changelog in our Discord-Server.", - "freePlanExpiring-title": "⚠ **%s's free plan is going to expire in 24 hours**", - "freePlanExpiring-description": "The free plan of \"%s\" is going to expire %r (%t). Please either watch an Ad in your SCNX Dashboard or upgrade to a payed plan to keep your bot online and running.\nThank you.", - "freePlanExpiring-upgrade": "Upgrade to paid plan", - "freePlanExpiring-watchAd": "Watch advertisement", - "freePlanExpiring-footer": "Sent to this channel, because you configured SCNX this way. You can edit notification-settings in the Pricing-Panel in your SCNX Dashboard", - "pro-field-reset": "Had to reset the value of the field \"%f\" to its default value, because customization of this field is only available to the \"%p\" plan, but this server has only \"%c\".", - "plan-STARTER": "Starter", - "plan-ACTIVE_GUILD": "Active Guild", - "plan-PRO": "Pro", - "plan-UNLIMITED": "Unlimited", - "plan-PROFESSIONAL": "Professional", - "plan-ENTERPRISE": "Enterprise", - "reduced-dashboard-active": "Reduced dashboard mode is active, meaning that period server data will be transmitted due allow the SCNX Dashboard to work.", - "reduced-dashboard-transmitting": "Transmitted updated server data due to reduced dashboard mode." - }, - "reload": { - "reloading-config": "Reloading configuration…", - "reloading-config-with-name": "User %tag is reloading the configuration…", - "reloaded-config": "Configuration reloaded successfully.\nOut of %totalModules modules, %enabled were enabled, %configDisabled were disabled because their configuration was wrong.", - "reload-failed": "Configuration reloaded failed. Bot shutting down.", - "reload-successful-syncing-commands": "Configuration reloaded successfully, syncing commands, to make sure permissions are up-to-date…", - "reload-failed-message": "**FAILED**\n```%r```\n**Please read your log to find more information**\nThe bot will kill itself now, bye :wave:", - "command-description": "Reloads the configuration" - }, - "config": { - "checking-config": "Checking configurations...", - "done-with-checking": "Done with checking. Out of %totalModules modules, %enabled were enabled, %configDisabled were disabled because their configuration was wrong.", - "creating-file": "Config %m/%f does not exist - I'm going to create it, please stand by...", - "checking-of-field-failed": "An error occurred while checking the content of field \"%fieldName\" in %m/%f", - "saved-file": "Configuration-File %f in %m was saved successfully.", - "moduleconf-regeneration": "Regenerating module configuration, no settings will be overwritten, don't worry.", - "moduleconf-regeneration-success": "Module configuration regeneration successfully finished.", - "channel-not-found": "Channel with ID \"%id\" could not be found", - "user-not-found": "User with ID \"%id\" could not be found", - "channel-not-on-guild": "Channel with ID \"%id\" is not on your server", - "channel-invalid-type": "Channel with ID \"%id\" has a type that can not be used for this field", - "role-not-found": "Role with ID \"%id\" could not be found on your server", - "config-reload": "Reloading all configuration..." - }, - "helpers": { - "timestamp": "%dd.%mm.%yyyy at %hh:%min", - "you-did-not-run-this-command": "You did not run this command. If you want to use the buttons, try running the command yourself.", - "next": "Next", - "back": "Back", - "toggle-data-fetch-error": "SC Network Release: Toggle-Data could not be fetched", - "toggle-data-fetch": "SC Network Release: Toggle-Data fetched successfully" - }, - "command": { - "startup": "The bot is currently starting up. Please try again in a few minutes.", - "not-found": "Command not found", - "used": "%tag (%id) used command /%c", - "message-used": "%tag (%id) used command %p%c", - "execution-failed": "Execution of command /%c %g %s failed (Tracing: %t): %e", - "message-execution-failed": "Execution of command %p%c failed (Tracing: %t): %e", - "wrong-guild": "This command is only available on the server **%g**.", - "autcomplete-execution-failed": "Execution of auto-complete on command /%c %g %s with option %f failed: %e", - "execution-failed-message": "## 🔴 Command execution failed 🔴\nThis usually happens either due to misconfiguration or due to an error on our site. Please send a screenshot of this message in #support on the [ScootKit Discord](https://scootk.it/dc-en), to resolve this.\n\n### Internal Tracing ID\n`%t`\n### Debugging-Information\n```%e```", - "error-giving-role": "An error occurred when trying to give you your roles ):\nPlease ask the server administrators to confirm that the highest role of the bot is above the role that the bot is supposed to assign.", - "description-too-long": "The following command description of %c was too long to sync: %s", - "module-disabled": "This command is part of the \"%m\" which is disabled. This can either be intended by the server-admins (and slash-commands haven't synced yet) or this could be caused by a configuration error. Please check (or ask the admins) to check the bot's configuration and logs for details.", - "command-disabled": "This command is currently disabled by the server configuration. If you believe this is an error, please contact a server administrator." - }, - "help": { - "bot-info-titel": "ℹ️ Bot-Info", - "bot-info-description": "This bot is part of [SCNX](https://scnx.xyz/de?ref=custombot_help_embed), a plattform from [ScootKit](https://scootkit.net) allowing the creation of fully customizable for Discord communities, and is being hosted for \"%g\".", - "stats-title": "📊 Stats", - "stats-content": "Active modules: %am\nRegistered commands: %rc\nBot-Version: %v\nRunning on server %si\n[Server-Plan](https://scnx.xyz/plan): %pl\nLast restart: %lr\nLast reload: %lR", - "command-description": "Show every commands", - "slash-commands-title": "Slash-Commands", - "select-module-placeholder": "Select a module to view its commands", - "select-module-hint": "👇 Use the dropdown below to browse commands by module.", - "back-to-overview": "Back to overview", - "modules-overview": "📋 Modules & Commands", - "built-in-description": "Core commands built into the bot", - "custom-commands-label": "Custom Commands", - "custom-commands-description": "User-created custom slash commands" - }, - "bot-feedback": { - "command-description": "Send feedback about the bot to the bot developer", - "submitted-successfully": "Thanks so much for your feedback! It has been carefully recorded and our team will review it soon. If we have any questions, we may contact you via DM (or if you are on our [Support Server]() we'll open a ticket). Thank you for making [CustomBots]() better for everyone <3\n\nYour feedback is subject to our [Terms of service]() and [Privacy Policy]().", - "failed-to-submit": "Sorry, but I couldn't send your feedback to our staff. This could be, because you got blocked or because of some server issue we are having. You can always report bugs and submit feedback in our [Feature-Board](https://features.sc-network.net). Thank you.", - "feedback-description": "Your feedback. Make sure it's neutral, constructive and helpful" - }, - "admin-tools": { - "position": "%i has the position %p.", - "position-changed": "Changed %i's position to %p.", - "category-can-not-have-category": "A Category can not have a category", - "not-category": "Can not change category of channel to a not category channel", - "changed-category": "%c's category got set to %cat", - "command-description": "Execute some actions for admins via commands", - "new-position-description": "New position", - "movechannel-description": "See the position of a channel or change the position of a channel", - "moverole-description": "See the position of a role or change the position of a role", - "setcategory-description": "Sets the category of a channel", - "channel-description": "Channel on which this action should be executed", - "role-description": "Role on which this action should be executed", - "category-description": "New category of the channel", - "emoji-too-much-data": "Please **only** enter one emoji and nothing else", - "emoji-import": "Imported \"%e\" successfully.", - "stealemote-description": "Steals a emote from another server", - "emote-description": "Emote to steal", - "role-command-description": "Assign or remove roles permanently or temporarily", - "role-give-description": "Assign someone a role permanently or temporarily", - "role-user-add-description": "Member that you want to assign the role to", - "role-add-role-description": "Role you want to assign to the member", - "role-add-duration-description": "If you set this parameter, the role will be removed from this user after this duration expires", - "role-user-status-description": "User you want to see temporary roles from", - "role-remove-description": "Remove a role from someone permanently or temporarily", - "role-user-remove-description": "Member that you want to remove the role from", - "role-remove-role-description": "Role you want to remove from the member", - "role-remove-duration-description": "If you set this parameter, the role will be added back to this user after this duration expires", - "role-status-description": "Shows which roles of a user are temporary and when they will be removed", - "role-not-high-enough": "The highest role of the bot is not above %e. The highest role of the bot needs to be above the role you want to remove or assign.", - "unable-to-change-roles": "Changing role %r to %u failed. Error message obtained by Discord:\n```%e```", - "user-not-found": "The user has not been found on your server.", - "duration-wrong": "The value of the duration argument is wrong. Learn more [in our docs]()", - "audit-log-add": "[admin-tools] %u added a role using a command.", - "audit-log-remove": "[admin-tools] %u removed a role using a command.", - "audit-log-add-duration": "[admin-tools] %u added a temporary role using a command that will be removed at %t.", - "audit-log-remove-duration": "[admin-tools] %u removed a temporary role using a command that will be added back at %t.", - "audit-log-temporary-remove": "[admin-tools] This role was added temporarily and has removed since the temporary timeframe expired.", - "audit-log-temporary-add": "[admin-tools] This role has been removed temporarily and has been added back since the temporary timeframe expired.", - "role-add": "%u has been given the role %r.", - "role-remove": "%u has removed the role %r.", - "role-add-duration": "%u has been given the role %r. It will be removed at %t.", - "role-remove-duration": "%r has been removed from %u. It will be given back at %t.", - "user-without-temporary-action": "%u has no roles that are temporary.", - "user-temporary-action-header": "Temporary roles of %u", - "status-remove": "%r will be removed on %t.", - "status-add": "%r will be added back on %t.", - "users-trying-to-manage-higher-role": "Your highest role, %t, is not below %e. To manage a user's role, you the role you are managing needs to be below your highest role." - }, - "welcomer": { - "channel-not-found": "[welcomer] Channel not found: %c", - "welcome-yourself-error": "Welcome, nice to meet you! This button is reversed for a special member of this server who want's to say \"Hi\" to you ^^" - }, - "birthdays": { - "channel-not-found": "[birthdays] Channel not found: %c", - "sync-error": "[birthdays] %u's state was set to \"sync\", but there was no syncing candidate, so I disabled the synchronization", - "age-hover": "%a years old", - "sync-enabled-hover": "Birthday synchronized", - "verified-hover": "Birthday verified", - "no-bd-this-month": "No birthdays this month ):", - "no-birthday-set": "You don't currently have a registered birthday on this server. Set a birthday with `/birthday set`.", - "birthday-status": "Your birthday is currently set to **%dd.%mm%yyyy**%age.", - "your-age": "which means that you are **%age** years old", - "sync-on": "Your birthday is being synced via your [SC Network Account](https://sc-network.net/dashboard).", - "sync-off": "Your birthday is set locally on this server and will not be synchronized", - "no-sync-account": "It seems like you either don't have an [SC Network Account]() or you haven't entered any information about your birthday in it yet.", - "auto-sync-on": "It seems that you have autoSync in your [SC Network Account]() enabled. This means that your birthday will be synchronized all the time on every server. [Learn more]().\nYour birthday isn't showing up? It can take up to 24 hours (usually it's less than two hours) for it to be synced, so stay calm and wait just a bit longer.", - "enabled-sync": "Successfully set. The synchronization is now enabled :+1:", - "disabled-sync": "Successfully set. The synchronization is disabled, you can now change or remove your birthday from this server.", - "delete-but-sync-is-on": "You currently have sync enabled. Please disable sync to delete your birthday.", - "deleted-successfully": "Birthday deleted successfully.", - "only-sync-allowed": "This server only allows synchronization of your birthday with a [SC Network Account]()", - "invalid-date": "Invalid date provided", - "against-tos": "You have to be at least 13 years old to use Discord. Please read Discord's [Terms of Service]() and if you are under the age of 13 please [delete your account]() to comply with Discord's [Terms of Service]() and wait %waitTime (or for the age for your country, listed [here]()) years before creating a new account.", - "too-old": "It seems like you are too old to be alive", - "command-description": "View, edit and delete your birthday", - "status-command-description": "Shows the current status of your birthday", - "sync-command-description": "Manage the synchronization on this server", - "sync-command-action-description": "Action which should be performed on your synchronization", - "sync-command-action-enable-description": "Enable synchronization", - "sync-command-action-disable-description": "Disable synchronization", - "set-command-description": "Sets your birthday", - "set-command-day-description": "Day of your birthday", - "set-command-month-description": "Month of your birthday", - "set-command-year-description": "Year of your birthday", - "delete-command-description": "Deletes your birthday from this server", - "migration-happening": "Database-Schema not up-to-date. Migration database... This could take a while. Do not restart your bot to avoid data loss.", - "migration-done": "Successfully migrated database to newest version.", - "birthday-locked": "Your birthday has been locked by an admin and cannot be edited.", - "locked-indicator": "Locked by admin", - "manage-command-description": "Manage user birthdays (admin)", - "admin-set-description": "Set a user's birthday", - "admin-remove-description": "Remove a user's birthday", - "admin-lock-description": "Lock a user's birthday from editing", - "admin-unlock-description": "Unlock a user's birthday", - "admin-user-description": "The user to manage", - "admin-birthday-set": "Birthday for %u set to %dd.%mm", - "admin-no-birthday": "%u has no birthday set", - "admin-birthday-removed": "Birthday for %u has been removed", - "admin-birthday-locked": "Birthday for %u has been locked", - "admin-birthday-unlocked": "Birthday for %u has been unlocked" - }, - "months": { - "1": "January", - "2": "February", - "3": "March", - "4": "April", - "5": "May", - "6": "June", - "7": "July", - "8": "August", - "9": "September", - "10": "October", - "11": "November", - "12": "December" - }, - "giveaways": { - "no-link": "None", - "no-winners": "None", - "not-supported-for-news-channel": "Not supported for news-channels", - "leave-giveaway": "❌ Leave giveaway", - "giveaway-left": "You have successfully left this giveaway 👍", - "required-messages": "Must have %mc new messages (check with `/gmessages`)", - "required-messages-user": "Have at least %mc new messages (%um/%mc messages)", - "roles-required": "Must have one of this roles to enter: %r", - "giveaway-ended-successfully": "Giveaway ended successfully.", - "no-giveaways-found": "No giveaways found", - "gmessages-description": "See your messages for a giveaway", - "jump-to-message-hover": "Jump to message", - "messages": "Messages", - "giveaway-messages": "Giveaway-Messages", - "duration-parsing-failed": "Duration-Parsing failed.", - "channel-type-not-supported": "Channel-Type not supported", - "parameter-parsing-failed": "Parsing of parameters failed", - "started-successfully": "Started giveaway successfully in %c.", - "reroll-done": "Done :+1:", - "select-menu-description": "Will end in #%c on %d", - "no-giveaways-for-reroll": "They are no currently running giveaways. Maybe you are looking for /reroll?", - "select-giveaway-to-end": "Please select the giveaway which you want to end.", - "please-select": "Please select", - "gmanage-description": "Manage giveaways", - "gmanage-start-description": "Start a new giveaway", - "gmanage-channel-description": "Channel to start the giveaway in", - "gmanage-price-description": "Price that can be won", - "gmanage-duration-description": "Duration of the giveaway (e.g: \"2h 40m\" or \"7d 2h 3m\")", - "gmanage-winnercount-description": "Count of winners that should be selected", - "gmanage-requiredmessages-description": "Count of new (!) messages that a user needs to have before entering", - "gmanage-requiredroles-description": "Role that user need to have to enter the giveaway", - "gmanage-sponsor-description": "Sets a different giveaway-starter, useful if you have a sponsor", - "gmanage-sponsorlink-description": "Link to a sponsor if applicable", - "gend-description": "End a giveaway", - "gereroll-description": "Rerolls an ended giveaway", - "gereroll-msgid-description": "Message-ID of the giveaway", - "gereroll-winnercount-description": "How many new winners there should be", - "migration-happening": "Database not up-to-date. Migrating database...", - "migration-done": "Migrated database successfully." - }, - "levels": { - "leaderboard-channel-not-found": "Leaderboard-Channel not found or wrong type", - "leaderboard-notation": "%p. %u: Level %l - %xp XP", - "list-location": "[Level System] The live leaderboard is currently located here: %l. Delete the message and restart the bot, to re-send it.", - "leaderboard": "Leaderboard", - "no-user-on-leaderboard": "Can't generate a leaderboard, because no one has any XP which is odd, but that's how it is ¯\\_(ツ)_/¯", - "and-x-other-users": "and %uc other users", - "level": "Level %l", - "users": "Users", - "leaderboard-command-description": "Shows the leaderboard of this server", - "leaderboard-sortby-description": "How to sort the leaderboard (default: %d)", - "profile-command-description": "Shows the profile of you or an an user", - "profile-user-description": "User to see the profile from (default: you)", - "please-send-a-message": "Please send some messages before I can show you some data", - "no-role": "None", - "are-you-sure-you-want-to-delete-user-xp": "Okay, do you really want to screw with %u? If you hate them so much, feel free to run `/manage-levels reset-xp confirm:True user:%ut` to run this irreversible action.", - "are-you-sure-you-want-to-delete-server-xp": "Do you really want to delete all XP and Levels from this server? This action is irreversible and everyone on this server will hate you. Decided that it's worth it? Enter `/manage-levels reset-xp confirm:True`", - "user-not-found": "User not found", - "user-deleted-users-xp": "%t deleted the XP of the user with id %u", - "removed-xp-successfully": "`Removed %u's XP and level successfully.`", - "deleted-server-xp": "%u deleted the XP of all users", - "successfully-deleted-all-xp-of-users": "Successfully deleted all the XP of all users", - "cheat-no-profile": "This user doesn't have a profile (yet), please force them to write a message before trying to betrayal your community by manipulating level scores.", - "manipulated": "%u manipulated the XP of %m to %v (level %l)", - "successfully-changed": "Successfully edited the XP of %u - they are now **level %l** with **%x XP**.\nRemember, every change you make destroys the experience of other users on this server as the levelsystem isn't fair anymore.", - "edit-xp-command-description": "Manage the levels of your server", - "negative-xp": "This user would have a negative XP value which is not possible", - "negative-level": "This user would have a level below one which is not possible", - "reset-xp-description": "Reset the XP of a user or of the whole server", - "reset-xp-user-description": "User to reset the XP from (default: whole server)", - "reset-xp-confirm-description": "Do you really want to delete the data?", - "edit-xp-user-description": "User to edit", - "edit-xp-value-description": "New XP value of the user", - "edit-xp-description": "Betrays your community and edits a user's XP", - "no-custom-formula": "No valid custom formula was entered. Using default formula.", - "invalid-custom-formula": "Invalid custom formula was entered. Please either fix the syntax of your custom formula or remove the value of the custom formula field.", - "role-factors-total": "Multiplied together, the user receives **%f times more XP** for every message.", - "edit-level-description": "Betrays your community and edits a user's levels", - "random-messages-enabled-but-non-configured": "You have random messages enabled, but have non configured. Ignoring config.randomMessages configuration.", - "granted-rewards-audit-log": "Updated roles to make sure, they have the level role they need" - }, - "team-list": { - "channel-not-found": "Could not find channel with ID %c or the channel has a wrong type (only text-channels supported)", - "role-not-found": "Could not find role with ID %r", - "no-users-with-role": "No users on this server have the %r role yet.", - "no-roles-selected": "No roles listed yet.", - "offline": "Offline", - "dnd": "Do not disturb", - "idle": "Away", - "online": "Online" - }, - "partner-list": { - "could-not-give-role": "Could not give role to user %u", - "could-not-remove-role": "Could not remove role from user %u", - "list-location": "[Partner List] The partner list is currently located here: %l. Delete the message and restart the bot, to re-send it.", - "partner-not-found": "Partner could not be found. Please check if you are using the right partner-ID. The partner-ID is not identical with the server-id of the partner. The Partner-ID can be found [here](https://gblobscdn.gitbook.com/assets%2F-MNyHzQ4T8hs4m6x1952%2F-MWDvDO9-_JwAGqtD6at%2F-MWDxIcOHB9VcWhjsWt7%2Fscreen_20210320-102628.png?alt=media&token=2f9ac1f7-1a14-445c-b34e-83057789578e) in the partner-embed.", - "successful-edit": "Edited partner-list successfully.", - "channel-not-found": "Could not find channel with ID %c or the channel has a wrong type (only text-channels supported)", - "no-partners": "There are currently no partners. This is odd, but that's how it is ¯\\_(ツ)_/¯\n\nTo add a partner, run `/partner add` as a slash-command.", - "information": "Information", - "command-description": "Manages the partner-list on this server", - "padd-description": "Add a new partner", - "padd-name-description": "Name of the partner", - "padd-category-description": "Please select one of the categories specified in your configuration", - "padd-owner-description": "Owner of the partnered server", - "padd-inviteurl-description": "Invite to the partnered server", - "pedit-description": "Edits an existing partner", - "pedit-id-description": "ID of the partner", - "pedit-name-description": "New name of the partner", - "pedit-inviteurl-description": "New invite to this partner", - "pedit-category-description": "New category of this partner", - "pedit-owner-description": "New owner of the partner server", - "pedit-staff-description": "New designated staff member for this partner server", - "pdelete-description": "Deletes an exiting partner", - "pdelete-id-description": "ID of the partner" - }, - "ping-on-vc-join": { - "channel-not-found": "Notify channel %c not found", - "could-not-send-pn": "Could not send PN to %m" - }, - "suggestions": { - "suggestion-not-found": "Suggestion not found", - "updated-suggestion": "Successfully updated suggestion", - "suggest-description": "Create and comment on suggestions", - "suggest-content": "Content you want to suggest", - "loading": "A wild new suggestion appeared, loading..", - "manage-suggestion-command-description": "Manage suggestions as an admin", - "manage-suggestion-accept-description": "Accepts a suggestion", - "manage-suggestion-deny-description": "Denies a suggestion", - "manage-suggestion-id-description": "ID of the suggestion", - "manage-suggestion-comment-description": "Explain why you made this choice" - }, - "auto-delete": { - "could-not-fetch-channel": "Could not fetch channel with ID %c", - "could-not-fetch-messages": "Could not fetch messages from channel with ID %c" - }, - "auto-thread": { - "thread-create-reason": "This thread got created, because you configured auto-thread to do so" - }, - "auto-messager": { - "channel-not-found": "Channel with ID %id not found" - }, - "polls": { - "what-have-i-votet": "What have I voted?", - "vote": "Vote!", - "vote-this": "Click on this option to place your vote here", - "voted-successfully": "Successfully voted. Thanks for your participation.", - "not-voted-yet": "You have not voted yet, so I can't show you what you voted.", - "you-voted": "You have voted for **%o**.", - "remove-vote": "Remove my vote", - "removed-vote": "Your vote was removed successfully.", - "change-opinion": "You can change your opinion anytime by just selecting something else above the button you just clicked.", - "command-poll-description": "Create and end polls", - "command-poll-create-description": "Create a new poll", - "command-poll-end-description": "Ends an existing poll", - "command-poll-end-msgid-description": "ID of the poll", - "command-poll-create-description-description": "Topic / Description of this poll", - "command-poll-create-channel-description": "Channel in which the poll should get created", - "command-poll-create-option-description": "Option number %o", - "command-poll-create-endAt-description": "Duration of the poll (if not set the poll will not end automatically)", - "command-poll-create-public-description": "If enabled (disabled by default) the votes of users will be displayed publicly", - "created-poll": "Successfully created poll in %c.", - "not-found": "Poll could not be found", - "no-votes-for-this-option": "Nobody voted this option yet", - "ended-poll": "Poll ended successfully", - "view-public-votes": "View current voters", - "not-public": "This poll does not appear to be public, no results can be displayed.", - "poll-private": "🔒 This poll is **anonymous**, meaning that no one can see what you voted (not even the admins).", - "poll-public": "🔓 This poll is **public**, meaning that everyone can see what you voted.", - "not-text-channel": "You need to select a text-channel that is not an announcement-channel." - }, - "channel-stats": { - "audit-log-reason-interval": "Updated channel because of interval", - "audit-log-reason-startup": "Updated channel because of startup", - "not-voice-channel-info": "Channel \"%c\" (%id) is a %t and not a voice-channel as recommended" - }, - "info-commands": { - "info-command-description": "Find information about parts of this server", - "command-userinfo-description": "Find more information about a user on this server", - "argument-userinfo-user-description": "User you want to see information about (default: you)", - "command-roleinfo-description": "Find more information about a role on this server", - "argument-roleinfo-role-description": "Role you want to see information about", - "command-channelinfo-description": "Find more information about a channel on this server", - "argument-channelinfo-channel-description": "Channel you want to see information about", - "command-serverinfo-description": "Find more information about this server", - "information-about-role": "Information about the role %r", - "hoisted": "Hoisted", - "mentionable": "Mentionable", - "managed": "Managed", - "information-about-channel": "Information about the channel %c", - "information-about-user": "Information about the user %u", - "information-about-server": "Information about %s", - "boostLevel": "Level", - "boostCount": "Boosts", - "userCount": "Users", - "memberCount": "Members", - "onlineCount": "Online", - "textChannel": "Text", - "voiceChannel": "Voice", - "categoryChannel": "Categories", - "otherChannel": "Other", - "total-invites": "Total", - "active-invites": "Active", - "left-invites": "Left" - }, - "channelType": { - "GUILD_TEXT": "Text-Channel", - "GUILD_VOICE": "Voice-Channel", - "GUILD_CATEGORY": "Category", - "GUILD_NEWS": "News-Channel", - "GUILD_STORE": "Store-Channel", - "GUILD_NEWS_THREAD": "News-Channel-Thread", - "GUILD_PUBLIC_THREAD": "Public Thread", - "GUILD_PRIVATE_THREAD": "Private Thread", - "GUILD_STAGE_VOICE": "Stage-Channel", - "DM": "Direct-Message", - "GROUP_DM": "Group-Direct-Message", - "UNKNOWN": "Unknown" - }, - "stagePrivacy": { - "PUBLIC": "Publicly accessible", - "GUILD_ONLY": "Only server members can join" - }, - "guildVerification": { - "0": "None", - "1": "Low", - "2": "Medium", - "3": "High", - "4": "Very high" - }, - "boostTier": { - "0": "None", - "1": "Level 1", - "2": "Level 2", - "3": "Level 3" - }, - "temp-channels": { - "removed-audit-log-reason": "Removed temp channel, because no one was in it", - "permission-update-audit-log-reason": "Updated permissions, to make sure only people in the VC can see the no-mic-channel", - "created-audit-log-reason": "Created Temp-Channel for %u", - "move-audit-log-reason": "Moved user to their voice channel", - "no-mic-channel-topic": "Welcome to %u's no-mic-channel. You will see this channel as long as you are connected to this temp-channel.", - "disconnect-audit-log-reason": "The old channel of the user could not be found - disconnecting them - hopefully they join again", - "command-description": "Manage your temp-channel", - "mode-subcommand-description": "Change the mode of your channel", - "public-option-description": "If enabled, anyone can join your temp-channel", - "add-subcommand-description": "Add users, that will be able to join your channel, while it is private", - "remove-subcommand-description": "Remove users from you channel", - "add-user-option-description": "The user to be added", - "remove-user-option-description": "The user to be removed", - "list-subcommand-description": "List the users with access to your channel", - "edit-subcommand-description": "Edit various settings of your channel", - "user-limit-option-description": "Change the user-limit of your channel", - "bitrate-option-description": "Change the bitrate of your channel (min. 8000)", - "name-option-description": "Change the name of your channel", - "nsfw-option-description": "Change, whether your channel is age-restricted or not", - "no-added-user": "There are no users to be displayed here", - "nothing-changed": "Your channel already had these settings.", - "no-disconnect": "Couldn't disconnect the user from your channel. This could be due to missing permissions, or the user not being in your voice-channel", - "edit-error": "An error occurred while editing your channel. one or more of your settings couldn't be applied. This could be due to missing permissions or an invalid value.", - "add-user": "Add user", - "remove-user": "Remove user", - "list-users": "List users", - "private-channel": "Private", - "public-channel": "Public", - "edit-channel": "Edit channel", - "add-modal-title": "Add an user to your temp-channel", - "add-modal-prompt": "The user you want to add (tag or user-id)", - "remove-modal-title": "Remove an user from your temp-channel", - "remove-modal-prompt": "The user you want to remove (tag or user-id)", - "edit-modal-title": "Edit your temp-channel", - "edit-modal-nsfw-prompt": "Mark temp-channel as age-restricted?", - "edit-modal-nsfw-placeholder": "\"true\" (yes) or \"false\" (no)", - "edit-modal-bitrate-prompt": "Bitrate of your Temp-channel?", - "edit-modal-bitrate-placeholder": "A number over 8000", - "edit-modal-limit-prompt": "Limit of users in your temp-channel", - "edit-modal-limit-placeholder": "Number between 0 and 99; 0 = unlimited", - "edit-modal-name-prompt": "How should your channel be called?", - "edit-modal-name-placeholder": "A very creative channel name", - "edit-modal-username-placeholder": "Username of the user", - "user-not-found": "User not found" - }, - "guess-the-number": { - "command-description": "Manage your guess-the-number-games", - "status-command-description": "Shows the current status of a guess-the-number-game in this channel", - "create-command-description": "Create a new guess-the-number-game in this channel", - "create-min-description": "Minimal value users can guess", - "create-max-description": "Maximal value users can guess", - "create-number-description": "Number users should guess to win", - "end-command-description": "Ends the current game", - "session-already-running": "There is a session already running in this channel. Please end it with /guess-the-number end", - "session-not-running": "There is currently no session running.", - "gamechannel-modus": "You can't use this command in a gamechannel. To end a game, disable the gamechannel modus and try using the end command.", - "session-ended-successfully": "Ended session successfully. Locked channel successfully.", - "current-session": "Current session", - "number": "Number", - "min-val": "Min-Value", - "max-val": "Max-Value", - "owner": "Owner", - "guess-count": "Count of guesses", - "min-max-discrepancy": "`min` can't be bigger or equal to `max`", - "max-discrepancy": "`number` can't be bigger than `max`.", - "min-discrepancy": "`number` can't be smaller than `min`.", - "emoji-guide-button": "What does the reaction under my guess mean?", - "guide-wrong-guess": "Your guess was wrong (but your entry was valid)", - "guide-win": "You guessed correctly - you win :tada:", - "guide-admin-guess": "Your guess was invalid, because you are an admin - admins can't participate because they can see the correct number", - "guide-invalid-guess": "Your guess was invalid (e.g. below the minimal / over the maximal number, not a number, …)", - "created-successfully": "Created game successfully. Users can now start guessing in this channel. The winning number is **%n**. You can always check the status by running `/guess-the-number-status`. Note that you as an admin can not guess.", - "game-ended": "Game ended", - "game-started": "Game started", - "leaderboard-button": "Leaderboard", - "leaderboard-title": "Guess-the-Number Leaderboard", - "leaderboard-empty": "No games have been won yet.", - "wins": "wins", - "guesses": "guesses" - }, - "massrole": { - "command-description": "Manage roles for all members", - "add-subcommand-description": "Add a role to all members", - "remove-subcommand-description": "Remove a role from all members", - "remove-all-subcommand-description": "Remove all roles from all members", - "role-option-add-description": "The role, that will be given to all members", - "role-option-remove-description": "The role, that will be removed from all members", - "target-option-description": "Determines whether bots should be included or not", - "all-users": "All Users", - "bots": "Bots", - "humans": "Humans", - "not-admin": "⚠ To use this command, you need to be added to the adminRoles option in the SCNX-Dashboard. If you are the owner of this bot please remember to create an override in the server settings to prevent abuse of this command.", - "add-reason": "Mass role addition by %u", - "remove-reason": "Mass role removal by %u" - }, - "twitch-notifications": { - "channel-not-found": "Channel with ID %c could not be found", - "user-not-on-twitch": "Could not find user %u on twitch" - }, - "hunt-the-code": { - "admin-command-description": "Manage the current Code-Hunt", - "create-code-description": "Create a new code for the current code-hunt", - "display-name-description": "Name of the code that will be displayed to user when they redeem the code", - "code-description": "Set the code that will be used to redeem it (default: randomly generated)", - "code-created": "Code \"%displayName\" successfully created: \"%code\"", - "error-creating-code": "Error creating code \"{{displayName}}\". Maybe the entered code is already in the database?", - "successful-reset": "Successfully ended the current Code-Hunt-Game - [here](%url)'s your report - save the URL if you want to access it later.", - "end-description": "Ends the current Code-Hunt (will clear users and codes and generates a report)", - "command-description": "Redeem or see data about the current Code-Hunt", - "redeem-description": "Redeem a code you found", - "code-redeem-description": "The code you want to redeem", - "leaderboard-description": "See the current leaderboard", - "profile-description": "See your current count of found codes", - "no-codes-found": "No codes redeemed yet ):", - "no-users": "No users redeemed codes yet ):", - "report-header": "Report for the Hunt-The-Code game on %s", - "user-header": "Participating users", - "code-header": "Codes", - "report-description": "Generates a report", - "report": "You can find the report [here](%url)." - }, - "fun": { - "slap-command-description": "Slap a user in the face", - "user-argument-description": "User to performe this action on", - "no-no-not-slapping-yourself": "You can not punch yourself lol (well technically you can, but our gifs do not support that, so deal with it ¯\\_(ツ)_/¯)", - "pat-command-description": "Pat someone nicely", - "no-no-not-patting-yourself": "Well, good try, but we don't do this here", - "no-no-not-kissing-yourself": "Uah, that's gross, you should try paying somebody to do that (well you should not, but better then kissing yourself)", - "kiss-command-description": "Kiss someone", - "hug-command-description": "Hug someone <3", - "no-no-not-hugging-yourself": "You are quite lonely aren't you? Try hugging a tree, that should work. Unless you live in a desert. Then hug a cactus. That's a bit more painful, but trust me.", - "random-command-description": "Helps you select random things", - "random-number-command-description": "Selects a random number", - "min-argument-description": "Minimal number (default: 1)", - "max-argument-description": "Maximal number (default: 42)", - "random-ikeaname-command-description": "Generates a random name for a IKEA-Name", - "syllable-count-argument-description": "Count of syllables to generate name from (default: random)", - "random-dice-command-description": "Roll a dice", - "random-coinflip-command-description": "Flip a coin", - "random-8ball-command-description": "Generates an answer to a yes/no question", - "dice-site-1": "Heads", - "dice-site-2": "Tails" - }, - "moderation": { - "moderate-command-description": "Moderate users on your server", - "moderate-notes-command-description": "Set or see moderator's notes of a user", - "moderate-notes-command-view": "View a user's notes", - "moderate-notes-command-create": "Create a new note about a user", - "moderate-notes-command-edit": "Edit one of your existing notes about a user", - "moderate-notes-command-delete": "Delete one of your existing notes about a user", - "moderate-ban-command-description": "Ban a user on your server", - "moderate-reason-description": "Reason for your action", - "moderate-proof-description": "Proof for your action", - "report-user-not-found-on-guild": "This user could not be found on \"%s\". You can only report users that are members of our server.", - "proof": "Proof", - "report-proof-description": "Attach an optional (image) proof to your report", - "file": "File uploaded", - "anti-grief-reason": "Too many actions of type \"%type\" in the last %h hours. Maximum amount allowed: %n", - "anti-grief-user-message": "Sorry, but it seems like you are abusing your moderative powers. We've taken actions to prevent this from happening.", - "moderate-duration-description": "Duration of the action (max: 28 days, default: 14 days)", - "mute-max-duration": "Discord limits the maximal duration of a timeout to 28 days. Please enter an amount equal or less than this", - "moderate-quarantine-command-description": "Quarantine a user on your server", - "moderate-unquarantine-command-description": "Removes a user from the quarantine", - "moderate-unban-command-description": "Revokes an existing ban", - "moderate-clear-command-description": "Clears messages in the current channel", - "moderate-clear-amount-description": "How many messages should get cleared?", - "moderate-kick-command-description": "Kick a user from your server", - "moderate-unwarn-command-description": "Revokes a warning", - "moderate-mute-command-description": "Mute a user on your server", - "moderate-unmute-command-description": "Unmutes a user on your server", - "moderate-warn-command-description": "Warn a user", - "moderate-channel-mute-description": "Mutes a user from the current channel", - "moderate-unchannel-mute-description": "Removes a channel-mute from this channel", - "moderate-lock-command-description": "Lock the current channel", - "moderate-unlock-command-description": "Unlock the current channel", - "moderate-lockdown-command-description": "Activate or lift server-wide lockdown", - "moderate-lockdown-enable-description": "True to activate lockdown, false to lift it", - "lockdown-not-enabled": "The lockdown system is not enabled. Enable it in the lockdown configuration.", - "lockdown-already-active": "A lockdown is already active.", - "lockdown-not-active": "No lockdown is currently active.", - "lockdown-activated": "Server Lockdown Activated", - "lockdown-lifted": "Server Lockdown Lifted", - "lockdown-activated-reply": "Lockdown activated. %c channels have been locked.", - "lockdown-lifted-reply": "Lockdown lifted. %c channels have been restored.", - "lockdown-log-description": "**Reason:** %r\n**Triggered by:** %u\n**Type:** %t\n**Affected channels:** %c", - "lockdown-lift-log-description": "**Reason:** %r\n**Lifted by:** %u\n**Restored channels:** %c", - "lockdown-automatic": "Automatic", - "lockdown-manual": "Manual", - "lockdown-system": "System", - "lockdown-auto-lift-reason": "Auto-lift timer expired", - "lockdown-restored": "Lockdown state restored from database after restart", - "lockdown-joinraid-trigger": "Join raid detected", - "lockdown-spam-trigger": "Excessive spam detected", - "lockdown-joingate-trigger": "Excessive join-gate violations detected", - "lockdown-restore-failed": "Failed to restore permissions for channel %c: %e", - "lockdown-users-kicked": "Users Kicked", - "lockdown-users-kicked-description": "%k non-moderator users were disconnected from voice channels.", - "moderate-user-description": "User on who the action should get performed", - "moderate-userid-description": "ID of a user", - "moderate-days-description": "Number of days of messages to delete", - "invalid-days": "Days can only be between 0 and 7 (inclusive)", - "moderate-notes-description": "Notes to set / update", - "moderate-note-id-description": "ID of one of your notes you want to edit (leave blank to create a new one)", - "moderate-warnid-description": "ID of a warn (run /moderate actions to get it)", - "moderate-actions-command-description": "Show all recorded actions against a user", - "report-command-description": "Reports a user and sends a snapshot of the chat to server staff", - "report-reason-description": "Please describe what the user did wrong", - "report-user-description": "User you want to report", - "no-reason": "Not set", - "muterole-not-found": "Could not find muterole. Can not perform this action", - "quarantinerole-not-found": "Could not find quarantinerole. Can not perform this action", - "mute-audit-log-reason": "Got muted by %u because of \"%r\"", - "unmute-audit-log-reason": "Got unmuted by %u because of \"%r\"", - "quarantine-audit-log-reason": "Got quarantined by %u because of \"%r\"", - "kicked-audit-log-reason": "Got kicked by %u because of \"%r\"", - "banned-audit-log-reason": "Got banned by %u because of \"%r\"", - "channelmute-audit-log-reason": "Got channel-mutet by %u because of \"%r\"", - "unchannelmute-audit-log-reason": "The Channel-Mute got removed by %u because of \"%r\"", - "unbanned-audit-log-reason": "Got unbanned by %u because of \"%r\"", - "unquarantine-audit-log-reason": "Got unquarantined by %u because of \"%r\"", - "action-expired": "Action expired", - "auto-mod": "Auto-Mod", - "batch-role-remove-failed": "Could not remove all roles from %i (trying to remove roles one by one): %e", - "batch-role-add-failed": "Could not add all roles to %i (trying to remove roles one by one): %e", - "could-not-remove-role": "Could not remove role %r from %i: %e", - "could-not-add-role": "Could not add role %r to %i: %e", - "reason": "Reason", - "join-gate": "Join-Gate", - "expires-at": "Action expires on", - "action": "Action", - "case": "Case", - "victim": "Victim", - "missing-logchannel": "LogChannel could not be found", - "reached-warns": "Reached %w warns", - "restored-punishment-audit-log-reason": "Restored punishment", - "anti-join-raid": "ANTI-JOIN-RAID", - "raid-detected": "Raid detected", - "joingate-for-everyone": "Join-Gate-Modus: Catch all users", - "account-age-to-low": "Account creation age of %a days is to low (required are more then %c)", - "no-profile-picture": "Account has no profile picture (required)", - "join-gate-fail": "Account failed Join-Gate (%r)", - "blacklisted-word": "Posted blacklisted word in %c", - "invite-sent": "Sent invite in %c", - "scam-url-sent": "Sent scam-url in %c", - "anti-spam": "Anti-Spam", - "reached-messages-in-timeframe": "Reached %m (normal) messages in less than %t seconds", - "reached-duplicated-content-messages": "Reached %m messages with the same content in less than %t", - "reached-ping-messages": "Reached %m messages with (user) pings in less then %t seconds", - "reached-massping-messages": "Reached %m messages with mass pings in less than %t seconds", - "action-done": "Executed action successfully. Action-ID: #%i", - "expiring-action-done": "Done. Action will expire on %d. Action-ID: #%i", - "cleared-channel": "Cleared channel successfully.\nNote: Messages older than 14 days can not be deleted using this method.", - "clear-failed": "An error occurred. You can only delete 100 messages at once.", - "no-quarantine-action-found": "Sorry, but I couldn't find any records of quarantining this users.", - "locked-channel-successfully": "Locked channel successfully. Only moderators (and admins) can write messages here now.", - "unlocked-channel-successfully": "Unlocked channel successfully. Permissions got restored to the permission-state before the lock occurred.", - "unlock-audit-log-reason": "User %u unlocked this channel by running /moderate unlock", - "warning-not-found": "I could not find this warning. Please make sure you are actually using a warning-id and not a userid.", - "can-not-report-mod": "You can not report moderators.", - "action-description-format": "%reason\nby %u on %t", - "no-actions-title": "None found", - "no-actions-value": "No actions against %u found.", - "actions-embed-title": "Mod-Actions against %u - Site %i", - "actions-embed-description": "You can find every action against %u here.", - "report-embed-title": "New report", - "report-embed-description": "A user reported another user. Please review the case and take actions if needed.", - "reported-user": "Reported user", - "report-reason": "Reason for the report", - "report-user": "User who submitted report", - "message-log": "Last 100 messages", - "message-log-description": "You can find an encrypted message-log [here](%u).", - "channel": "Channel", - "no-report-pings": "No pings configured. Check your configuration to ping your staff.", - "not-allowed-to-see-own-notes": "Sorry, but you are not allowed to see your own notes.", - "note-added": "Note added successfully", - "note-edited": "Edited note successfully", - "note-deleted": "Note deleted successfully", - "note-not-found-or-no-permissions": "Note not found or no permissions to edit this note.", - "notes-embed-title": "Notes about %u", - "info-field-title": "ℹ️ Information", - "no-notes-found": "No notes about this user. Create a new note with `/moderate notes create` and set the notes attribute.", - "more-notes": "%x other moderator also added notes about this user. Notes are sorted in reverse chronology, so you will see the newest notes first.", - "user-notes-field-title": "%t's notes", - "user-not-on-server": "I can't perform this action on this user, as they are not currently on your server.", - "verification": "VERIFICATION", - "verification-failed": "Verification failed", - "verification-started": "Verification got started", - "verification-completed": "Verification completed", - "user": "User", - "manual-verification-needed": "Manual verification needed", - "verification-deny": "Deny verification", - "verification-approve": "Approve verification", - "verification-skip": "Skip verification", - "captcha-verification-pending": "Captcha-Verification is pending. You can either wait for the user to complete it or skip it manually.", - "verification-update-proceeded": "Successfully update verification status", - "verify-channel-set-but-not-found-or-wrong-type": "The configured verify-channel could not be found or it's type is not supported.", - "generating-message": "We are preparing some stuff, this message should get edited shortly...", - "restart-verification-button": "Restart verification process", - "member-not-found": "This user could not be found, maybe they already left?", - "already-verified": "Seems like you are already verified... Why would you want to repeat this process?", - "restarted-verification": "I have sent you another DM about your verification process. Please read it carefully and follow the actions described in it. Please not that this action did not re-trigger the manual-verification (if enabled), so spamming this button is useless.", - "dms-still-disabled": "It seems like your DMs are still disabled. Please enable your DMs to start the verification. This is not optional, you need to do this in order to get access to %g.", - "dms-not-enabled-ping": "%p, it seems like you have your DMs disabled. Please enable them and hit the button below this message to verify yourself. You have two minutes to complete this process." - }, - "counter": { - "created-db-entry": "Initialized database entry for %i", - "not-a-number": "This is not a number. You can not chat here. Try creating a thread if your message is that important.", - "restriction-audit-log": "This user proceeded to abuse the counter channel after five warnings, so we locked them out.", - "only-one-message-per-person": "Users have to take turns counting: You can not count two times in a row.", - "not-the-next-number": "That's not the next number. The next number is **%n**, please make sure you are counting up one by one.", - "channel-topic-change-reason": "Someone counted, so we updated the description as required by the configuration" - }, - "tickets": { - "channel-not-found": "Ticket-Create-Channel could not be found", - "existing-ticket": "You already have a ticket open: %c", - "ticket-created-audit-log": "%u created a new ticket by clicking the button", - "ticket-created": "Successfully created ticket and notified staff. Head over to it: %c", - "no-admin-pings": "No pings configured. Check your configuration to ping your staff.", - "ticket-closed-successfully": "Closed ticket successfully. This channel will be deleted in a few seconds, thanks for reaching out to our support.", - "ticket-closed-audit-log": "%u closed ticket", - "closing-ticket": "Closing ticket as requested by %u...", - "ticket-with-user": "👤 Ticket-User", - "could-not-dm": "Could not DM %u: %r", - "no-log-channel": "Log-Channel not found", - "ticket-log-embed-title": "📎 Ticket %i closed", - "ticket-log": "Ticket-Log", - "ticket-type": "☕ Ticket-Topic", - "ticket-log-value": "Transcript with %n messages can be found [here](%u).", - "closed-by": "👷 Ticket closed by" - }, - "custom-commands": { - "not-found": "This custom-command does not longer exist. It might have been deleted or deactivated.", - "parameter-not-set": "This parameter did not get specified", - "true": "True", - "no-roles-default": "⚠️ You do not have enough permissions to execute this custom command because you are missing the roles required to execute this command.", - "fix-no-reply": "**⚠ This Custom-Command is not properly set up**\nTo fix this, add the \"Reply to message or interaction\"-Action to this Custom-Command and reload your configuration.", - "false": "False" - }, - "logging": { - "action-Create": "➕ %i created", - "action-Delete": "🗑 %i deleted", - "not-set": "Not set", - "action-Update": "🖊 %i edited", - "action-ban": "🔨 User banned", - "action-unban": "🔨 User unbanned", - "type-Channel": "Channel", - "type-CHANNEL_OVERWRITE": "Channel-Overwrite", - "type-Role": "Role", - "type-Emoji": "Emoji", - "type-Guild": "Server", - "type-MESSAGE": "Message", - "user-header": "👤 Executed by", - "target-header": "➡ Target: %i", - "reason-header": "🗒 Reason", - "content-header": "💬 Content", - "old-content-header": "💬 Previous content", - "new-content-header": "🖊 New content", - "was": "Was", - "key-color": "Color", - "key-communication_disabled_until": "Timeout expires at", - "key-premium_progress_bar_enabled": "Show Booster-Progress-Bar", - "key-afk_timeout": "AFK-Timeout", - "key-default_message_notifications": "Only @mentions notifications settings", - "key-system_channel_id": "System-Channel", - "key-afk_channel_id": "AFK-Channel", - "key-nick": "Nickname", - "vc-user": "👤 User", - "key-allow": "✅ Allowed permission overwrites", - "key-deny": "⛔ Denied permission overwrites", - "vc-channel": "☎ Channel", - "vc-new-channel": "➡ New channel", - "vc-old-channel": "☎ Old channel", - "key-deaf": "Deafened?", - "key-mute": "Muted?", - "key-roles": "Roles", - "key-role-updates": "Roles updated", - "new": "New", - "jump-to-message": "Jump to message", - "position": "Position", - "key-name": "Name", - "key-type": "Type", - "key-nsfw": "Age restricted channel", - "key-rate_limit_per_user": "Slowmode", - "key-topic": "Channel-Topic", - "key-permissions": "Permissions", - "non-set": "", - "sentAt-header": "📅 Message sent at", - "author-header": "👤 Message-Author", - "vc-joined": "📥 User joined a Voice-Channel", - "vc-leaved": "📤 User left a Voice-Channel", - "vc-switched": "🔃 User switched a Voice-Channel", - "true": "Activated", - "type-User": "User", - "false": "Disabled" - }, - "reminders": { - "command-description": "Set a reminder for yourself", - "in-description": "After what time should we remind you? (eg. \"2h 30m\")", - "what-description": "What should we remind you about?", - "dm-description": "Should we send you a DM instead of reminding your in this channel?", - "one-minute-in-future": "Your reminder needs to be at least one minute in the future", - "reminder-set": "Reminder set. We'll remind you at %d.", - "snooze-10m": "10 min", - "snooze-30m": "30 min", - "snooze-1h": "1 hour", - "snooze-1d": "1 day", - "snoozed": "Reminder snoozed. We'll remind you again at %d.", - "snooze-not-allowed": "You can only snooze your own reminders." - }, - "akinator": { - "command-description": "Let akinator guess a character/object/animal", - "type-description": "Select what akinator should guess (default: character)", - "character-name": "Character", - "object-name": "Object", - "animal-name": "Animal" - }, - "afk-system": { - "command-description": "Manage your AFK-Status on this server", - "end-command-description": "End your current AFK-Session", - "start-command-description": "Start a new AFK-Session", - "reason-option-description": "Explain why you started this session", - "autoend-option-description": "If enabled, the bot will auto-end your AFK Session when your write a message (default: enabled)", - "no-running-session": "You don't have any session running.", - "already-running-session": "You already have an AFK-Session running, try ending it with `/afk-system end`.", - "afk-nickname-change-audit-log": "Updated user nickname because they started an AFK-Session", - "can-not-edit-nickname": "Can not edit nickname of %u: %e" - }, - "invite-tracking": { - "hook-installed": "Installed hook to receive more information about invites", - "log-channel-not-found-but-set": "Log-Channel %c not found, but it's set in your configuration.", - "new-member": "New member joined", - "member-leave": "Member left", - "joined-at": "Joined at", - "invite-type": "Invite-Type", - "member": "Member", - "invite": "Invite", - "invite-code": "Invite-Code: [%c](%u)", - "invite-channel": "Channel: %c", - "expires-at": "Expires at: %t", - "created-at": "Created at: %t", - "inviter": "Invited by: %u (%a/%i active invites)", - "uses": "Uses: %u", - "createdAt": "Created at: %t", - "max-uses": "Max-Uses: %u", - "normal-invite": "Normal Invite", - "vanity-invite": "Vanity-Invite", - "missing-permissions": "I don't have enough permissions to determine the invite", - "unknown-invite": "Sorry, but I couldn't determine the invite this person used", - "joined-for-the-x-time": "%u joined this server %x times before this, the last one was %t.", - "revoke-invite": "Revoke this invite", - "invite-not-found": "This invite could not be found... Maybe it already got revoked?", - "invite-revoked": "Invite revoked successfully.", - "missing-revoke-permissions": "Sorry, but you can't revoke this invite: Missing `MANAGE_GUILD` permission.", - "invite-revoke-audit-log": "%u revoked this invite", - "invite-revoked-error": "Could not revoke invite %c: %e", - "trace-command-description": "Trace the invites of a user", - "argument-user-description": "User to trace invites from", - "invited-by": "Invited by", - "invited-users": "Invited users", - "inviter-not-found": "Could not determine who invited this user.", - "no-users-invited": "This user hasn't invited any other users.", - "and-x-more-users": "And %x more users", - "and-x-more-invites": "And %x more invites", - "created-invites": "Created invites", - "not-showing-left-users": "Invited users who left are not displayed here.", - "no-invites": "This user has create no invites", - "revoke-user-invite": "Revoke all user's invites", - "revoked-invites-successfully": "All invites from this user got revoked successfully" - }, - "tic-tac-toe": { - "command-description": "Play tic-tac-toe against someone in the chat", - "user-description": "User to play against", - "challenge-message": "%t, %u challenged you to a game of tic-tac-toe! Hit the button below to join the battle! This invitation will expire in about 2 minutes, so don't hesitate to much.", - "accept-invite": "Join game", - "deny-invite": "No thanks", - "self-invite-not-possible": "Are you really that lonely? Even Simon, a complete introvert with no friends and developer of this bot, can find another user to play tic-tac-toe with... You should be able to do that too, try inviting %r for example, maybe they want to play a round?", - "invite-expired": "Sorry, %u, %i didn't accept your request to play tic-tac-toe in time ):", - "invite-denied": "Sorry, %u, but %i denied your request to play a round of tic-tac-toe ):", - "you-are-not-the-invited-one": "Sorry, but this invite doesn't belong to you. You can start your own game with `/tic-tac-toe`.", - "playing-header": "**TIC-TAC-TOE GAME IS RUNNING**\n\n%u (🟢) VS %i (🟡)\nCurrently on turn: %t\n\n%t, click a button with a white circle below to place your marker", - "win-header": "**TIC-TOE-GAME ENDED**\n\n%u (🟢) VS %i (🟡)\n\n%w won the game - GG!\n\n*You can start a new round by using `/tic-tac-toe`*", - "draw-header": "**TIC-TOE-GAME ENDED**\n\n%u (🟢) VS %i (🟡)\n\nDraw - no one won this game.", - "not-your-turn": "It's not your turn, take a coffee and return later" - }, - "duel": { - "command-description": "Play duel against someone in the chat", - "user-description": "User to play against", - "challenge-message": "%t, %u challenged you to a game of duel! Hit the button below to join the battle! This invitation will expire in about 2 minutes, so don't hesitate to much.", - "accept-invite": "Join game", - "deny-invite": "No thanks", - "self-invite-not-possible": "Are you really that lonely? Even Simon, a complete introvert with no friends and developer of this bot, can find another user to play duel with... You should be able to do that too, try inviting %r for example, maybe they want to play a round?", - "invite-expired": "Sorry, %u, %i didn't accept your request to play duel in time ):", - "invite-denied": "Sorry, %u, but %i denied your request to play a round of duel ):", - "you-are-not-the-invited-one": "Sorry, but this invite doesn't belong to you. You can start your own game with `/duel`.", - "game-running-header": "🎮 Game running", - "what-do-you-want-to-do": "**Select your action!**", - "pending": "⏳ Waiting for selection…", - "ready": "✅ Ready", - "continues-info": "The game continues once both parties have selected their next action.", - "how-does-this-game-work": "Wondering how this game works? Read our short explanation [here]().", - "use-gun": "Use gun", - "guard": "Guard", - "reload": "Load gun", - "game-ended": "🎮 Game ended", - "no-bullets": "Sorry, but you haven't loaded any bullets yet, so you can't use your gun yet.", - "bullets-full": "Sorry, but your gun only has place for 5 bullets at a time.", - "gun-gun": "Both %g1 and %g1 draw their guns. They stare each other and their eyes and slowly lower their weapons. No, the duell won't be resolved if both die - there can only be one winner.", - "guard-gun": "%g1 draws their gun and shoot - %d1 dodged the bullet successfully.", - "guard-guard": "Both %d1 and %d2 wait for each other to fire the shot - but nothing happens.", - "reload-gun": "While %r1 starts reloading their gun, %g1 draws their weapon and shoots - it's a head-shot. %r1 drops to the ground. %g1 should celebrate because they won, but they are left feeling bad for murdering their old friend.", - "guard-over-reload-gun": "As this is %r1's fifth guard in a row, they are tired and are to slow - %g1 shoots them directly into their head and %r1 drops to the ground. It's a win for %g1 - but at what price?", - "reload-reload": "Both %r1 and %r2 stare each other in the eyes while taking a short break to load one bullet each in their chamber.", - "reload-guard": "%d1 prepares to doge a bullet - but %r1 uses the time to load their weapon - no shots get fired.", - "ended-state": "This game ended. You can start a new duel with `/duel`.", - "not-your-game": "You are not one of players - you can start a new game with `/duel`." - }, - "economy-system": { - "work-earned-money": "The user %u gained %m %c by working", - "crime-earned-money": "The user %u gained %m %c by committing a crime", - "message-drop-earned-money": "The user %u gained %m %c by getting a message drop", - "rob-earned-money": "The user %u gained %m %c by robbing from %v", - "weekly-earned-money": "The user %u gained %m %c by cashing in their weekly reward", - "daily-earned-money": "The user %u gained %m %c by cashing in their daily reward", - "admin-self-abuse": "The admin %a wanted to abuse their permissions by giving them self even more money! This can't and should not be ignored!", - "admin-self-abuse-answer": "What a bad admin you are, %u. I'm disappointed with you! I need to report this. If I wish I could ban you!", - "added-money": "%i %c has been added to the balance of %u", - "removed-money": "%i %c has been removed from the balance of %u", - "set-money": "The balance of %u has been set to %i.", - "added-money-log": "The user %u added %i %c to the balance of %v", - "removed-money-log": "The user %u removed %i %c from the balance of %v", - "set-money-log": "The user %u set %v's balance to %i %c", - "command-description-main": "Use the economy-system", - "command-description-work": "Earn some cash by working", - "command-description-crime": "Earn some cash by committing a crime", - "command-description-rob": "Rob some cash from another user", - "option-description-rob-user": "User to rob from", - "crime-loose-money": "The user %u lost %m %c by committing a crime", - "command-description-daily": "Cash in your daily rewards", - "command-description-weekly": "Cash in your weekly rewards", - "command-description-balance": "Show the balance of a user", - "option-description-user": "User to execute action upon", - "command-description-add": "Add some cash to a user", - "command-description-remove": "Remove some cash from a user", - "option-description-amount": "Amount to manipulate", - "command-description-set": "Set a user's balance", - "option-description-balance": "Balance to set user to", - "message-drop": "Message-Drop: You earned %m %c simply by chatting!", - "created-item": "The user %u has created a new shop item: %i", - "item-duplicate": "The item already exist", - "role-to-high": "The specified role is higher than the highest role of the bot. Therefore the bot can't give the role to users. The item was **not** created.", - "delete-item": "The user %u has deleted the shop item %i", - "edit-item": "The user %u has edited the item %i. Possible changes are:\nNew name: %n\nNew price: %p\nNew role: %r", - "user-purchase": "The user %u has purchased the shop item %i for %p.", - "shop-command-description": "Use the shop-system", - "shop-command-description-add": "Create a new item in the shop (admins only)", - "shop-option-description-itemName": "Name of the item", - "shop-option-description-newItemName": "New name of the Item", - "shop-option-description-itemID": "ID of the Item", - "shop-option-description-price": "Price of the item", - "shop-option-description-role": "Role to give to users who buy the item", - "shop-command-description-buy": "Buy an item", - "shop-command-description-list": "List all items in the shop", - "shop-command-description-delete": "Remove an item from the shop", - "shop-command-description-edit": "Edit an item", - "channel-not-found": "Can't find the leaderboard channel with the ID %c", - "command-description-deposit": "Deposit xyz to your bank", - "option-description-amount-deposit": "Amount to deposit", - "command-description-withdraw": "Withdraw xyz from your Bank", - "option-description-amount-withdraw": "Amount to withdraw", - "command-group-description-msg-drop-msg": "Enable/ Disable the Message-Drop-Message", - "command-description-msg-drop-msg-enable": "Enable the Message-Drop-Message", - "command-description-msg-drop-msg-disable": "Disable the Message-Drop-Message", - "command-description-destroy": "Destroy the whole economy (deletes all Database-Entries)", - "option-description-confirm": "Confirm, that you really want to destroy the whole economy", - "destroy-cancel-reply": "You're lucky. You stopped me in the last moment before I destroyed the economy", - "destroy-reply": "Ok... I'll destroy the whole economy", - "destroy": "%u destroyed the economy", - "migration-happening": "Database not up-to-date. Migrating database...", - "migration-done": "Migrated database successfully.", - "nothing-selected": "Select an item to buy it", - "select-menu-price": "Price: %p", - "price-less-than-zero": "The price can't be less or equal to zero" - }, - "status-role": { - "fulfilled": "Status-role condition is fulfilled", - "not-fulfilled": "Status-role condition is no longer fulfilled" - }, - "color-me": { - "create-log-reason": "%user redeemed their boosting-rewards by requesting the creation of this role", - "edit-log-reason": "%user edited their boosting-reward-role", - "delete-unboost-log-reason": "%user stopped boosting, so their role got deleted", - "delete-manual-log-reason": "%user deleted their role manually", - "command-description": "Request a Custom role as a reward for boosting. This has a cooldown of 24 hours", - "manage-subcommand-description": "Create or edit your custom role", - "name-option-description": "The name of your custom role", - "color-option-description": "The color of your custom role", - "remove-subcommand-description": "Remove your custom role", - "icon-option-description": "Your role-icon", - "confirm-option-remove-description": "Do you really want to delete your custom role? This will not reset any running cooldowns" - }, - "team-goals": { - "command-description": "See you and other's progress on the weekly team-goal", - "progress-command-description": "See a user's progress on this weekly team-goal", - "history-command-description": "See a user's past weekly team-goals", - "passed": "✅ Goals passed", - "pending": "❌ Goals not yet passed", - "passed-description": "Good job! You passed the weekly goal of %g with %s messages - you will receive the weekly notification on %e. 🎉", - "failed-description": "Almost there! You still need to %r messages to pass the goal of %g messages - you have time to complete this till %d.\n\n%bar", - "no-history": "Sorry, but we haven't recorded any past goal data about this user. Try again after the next weekly goal notification.", - "week": "Week between %start and %end: %result (%messages / %goal messages)", - "passedShort": "passed", - "failedShort": "failed", - "historyTitle": "Goal-History of the last %n weeks", - "statsTitle": "📈 Analytics", - "statsContent": "You passed %p of the goals in the %l weeks.", - "user-description": "User to shows stats of (default: you)" - }, - "youtube-notifications": { - "youtube-channel-not-found": "[YouTube-Notifications] YouTube-Channel \"%i\" not found. Disabled internally.", - "user-not-on-server": "[YouTube-Notifications] Could not find user %u on this server" - }, - "twitter-notifications": { - "twitter-user-not-found": "[Twitter-Notifications] Twitter-User \"%u\" not found. Disabled internally." - }, - "tiktok-notifications": { - "tiktok-user-not-found": "[TikTok-Notifications] TikToker \"%u\" not found. Disabled internally." - }, - "threads-notifications": { - "threads-user-not-found": "[Threads-Notifications] Thread user \"%u\" not found. Disabled internally." - }, - "reddit-notifications": { - "sub-not-found": "[Reddit-Notifications] Subbreddit %s not found. Disabled internally." - }, - "rss-notifications": { - "feed-not-working": "[RSS Notifications] Feed \"%u\" invalid, not working or empty." - }, - "rock-paper-scissors": { - "stone": "Stone", - "paper": "Paper", - "scissors": "Scissors", - "won": "won", - "lost": "lost", - "tie": "tie", - "play-again": "Play again", - "challenge-message": "%t, %u challenged you to a game of rock-paper-scissors! Hit the button below to join the game! This invitation will expire in about 2 minutes, so don't hesitate to much.", - "invite-expired": "Sorry, %u, %i didn't accept your request to play rock-paper-scissors in time ):", - "invite-denied": "Sorry, %u, but %i denied your request to play a round of rock-paper-scissors ):", - "rps-title": "Rock Paper Scissors", - "rps-description": "Choose your weapon!", - "its-a-tie-try-again": "It's a tie! Try again!", - "command-description": "Play rock-paper-scissors against the bot or someone in the chat" - }, - "connect-four": { - "tie": "It's a tie!", - "win": "%u has won the game!", - "not-turn": "Sorry, but it's not your turn!", - "game-message": "Connect Four game of %u1 and %u2\nCurrent turn: %c %t.\n\n%g", - "challenge-message": "%t, %u challenged you to a game of Connect Four! Hit the button below to join the game! This invitation will expire in about 2 minutes, so don't hesitate to much.", - "invite-expired": "Sorry, %u, %i didn't accept your request to play Connect Four in time ):", - "invite-denied": "Sorry, %u, but %i denied your request to play a round of Connect Four ):", - "command-description": "Play Connect Four against someone in the chat", - "field-size-description": "The size of the playfield (default: 7)", - "challenge-yourself": "You cannot challenge yourself!", - "challenge-bot": "You cannot challenge bots!" - }, - "uno": { - "command-description": "Play Uno against users in the chat", - "challenge-message": "%u invites to a round of Uno! Click the button below this message to join! The game starts %timestamp with %count players.", - "not-enough-players": "Not enough players joined for a round of Uno!", - "user-cards": "%u: %cards cards", - "already-joined": "You're already in!", - "view-deck": "View deck", - "draw": "Draw card", - "uno": "Uno!", - "turn": "It's %u turn!", - "update-button": "Update", - "use-drawn": "Do you want to use the drawn card?", - "dont-use-drawn": "Dont use", - "win": "%u won the game! %turns cards were played.", - "win-you": "You've won the game!", - "missing-uno": "⚠️ You must use the Uno! button before you use your second last card!", - "choose-color": "Select a color:", - "pending-draws": "Use a Draw 2/4 card, otherwise you have to draw %count cards!", - "not-ingame": "You're not in this game!", - "skip": "Skip", - "reverse": "Reverse", - "color": "Color choice", - "draw2": "Draw 2", - "colordraw4": "Color choice and draw 4", - "cant-uno": "You cannot use Uno currently.", - "done-uno": "You've called Uno!", - "auto-drawn-skip": "Your turn was skipped because you would have had to draw the cards anyway.", - "start-game": "Start game now", - "not-host": "You're not the host of the game!", - "max-players": "The game is full!", - "previous-cards": "Previous cards: ", - "used-card": "You've already used the card %c! Use the Update button and play a valid card.", - "invalid-card": "You cannot play the card %c right now! Please select a valid card.", - "inactive-warn": "%u, it's your turn in the uno game!", - "inactive-win": "The uno game has ended. %u won as all others have been eliminated!" - }, - "chat-gpt": { - "header": "Error generating response - no AI credits were deducted.", - "timeout": "Image generation request timeout or SCNX backend connection failure.", - "content-blocked": "Your prompt has been rejected by our content filtering system. Do not use this bot to generate NSFW images.", - "description": "Something went wrong when trying to generate an answer.\nReason: ```%e```", - "button": "Learn more", - "errored": "Error generating response", - "reset": "Successfully reset personality. Messages sent before this message will be ignored. Ask me anything ^^", - "out-of-funds": "This server has run out of AI Coins", - "out-of-funds-description": "AI Coins are needed to power responses. You can top up directly in the SCNX Dashboard, or upgrade to a Professional plan which includes a generous monthly AI Coins allowance.", - "out-of-funds-topup": "Top up AI Coins", - "out-of-funds-plans": "View Professional Plans", - "prompt-violation": "Custom system prompt was flagged for violating SCNX content policy. The module has been disabled and can't be used until you request a manual review from the SCNX Compliance Team.", - "help-desk-article": "https://faq.scnx.app/ai-on-scnx/" - }, - "ai-images": { - "failed-header": "Error generating image - no AI credits were deducted.", - "header": "Your generated image is here", - "download": "Download image", - "generating-header": "Your image is being generated…", - "generating-description": "Your image is being generated. This might take a while…", - "failed-description": "Something went wrong when trying to generate your image.\nReason: ```%e```\n[Report abuse](https://scootk.it/scnx-report).", - "command-description": "Use AI to generate any image - only your imagination is the limit", - "size-description": "Size of the image to generate (larger images may take more time to generate, default: 1024x1024)", - "prompt-description": "Describe how your image should look - be as specific as possible for the best results" - }, - "quiz": { - "what-have-i-voted": "What have I voted?", - "vote": "Vote!", - "vote-this": "Select this option if you think it's correct.", - "voted-successfully": "Selected successfully.", - "not-voted-yet": "You have not selected an option yet, so I can't show you what you selected.", - "you-voted": "You've selected **%o** as correct answer.", - "change-opinion": "You can change your opinion at any time by selecting another option above the button you just clicked.", - "cannot-change-opinion": "You cannot change your selection as the creator of this quiz disabled it.", - "select-correct": "Select all correct answers", - "this-correct": "Mark this answer as correct", - "cmd-description": "Create or play server quiz", - "cmd-create-normal-description": "Create a quiz with up to 10 answers", - "cmd-create-bool-description": "Create a quiz with true or false answers", - "cmd-play-description": "Play a server quiz", - "cmd-leaderboard-description": "Shows the quiz leaderboard of the server", - "cmd-create-description-description": "Title / description of the quiz", - "cmd-create-channel-description": "Channel in which the quiz should be created", - "cmd-create-endAt-description": "How long the quiz will last", - "cmd-create-option-description": "Option number %o", - "cmd-create-canchange-description": "If the players can change their opinion after voting (default: no)", - "daily-quiz-limit": "You've reached the limit of **%l** daily playable quizzes. You can play again %timestamp.", - "created": "Quiz created successfully in %c.", - "correct-highlighted": "All correct answers were highlighted.", - "answer-correct": "✅ Your answer was correct and you've received one point for the leaderboard!", - "answer-wrong": "❌ Your answer was wrong!", - "bool-true": "Statement is correct", - "bool-false": "Statement is wrong", - "leaderboard-channel-not-found": "The leaderboard channel couldn't be found or it's type is invalid.", - "leaderboard-notation": "**%p. %u**: %xp XP", - "your-rank": "You've collected **%xp** points in quiz!", - "no-rank": "You've never finished a quiz successfully!", - "no-quiz": "No quizzes have been created for this server. Trusted admins can create them on https://scnx.app/glink?page=bot/configuration?query=quiz&file=quiz%7Cconfigs%2FquizList .", - "no-permission": "You don't have enough permissions to create quiz using the command." - }, - "applications": { - "apply-description": "Start an application process", - "continue-in-dms": "Application process started - please [continue in your DMs](<%u>).", - "dms-disabled": "Oh no - I couldn't DM you. Please [enable DMs]() to continue your application.", - "category-description": "Category to start application in", - "submitting": "Your application is being submitted…", - "documentHeader": "#%i: \"%t\" by %u", - "submission-header": "Submission details", - "documentFooter": "Deny or approve this application in #%c.", - "canceled": "Successfully canceled this application.", - "view-application-content": "View (encrypted) content of application", - "approve": "Approve", - "user-left": "This user is not longer on your server :/", - "deny": "Deny", - "modal-deny": "Deny application", - "application-open": "You already applied to this category previously and haven't received any response from our team yet. You can not apply again until you receive a response from our teams - make sure your DMs are open.", - "modal-approve": "Approve application", - "reason-title": "Reason for your action", - "reason-placeholder": "Explain why you came to this conclusion - might be displayed to users", - "no-reason": "No reason specified", - "submitted": "Action submitted successfully", - "deny-embed-title": "Denied by %u", - "approve-embed-title": "Approved by %u", - "category-not-found": "Sorry, but this application category does not exist or is empty (missing application questions).", - "require-role-to-process": "You can't deny or approve this application, as you are missing one of the configured roles." - }, - "emoji-quiz": { - "starting": "Starting Emoji-Quiz…", - "slow-down": "Please slow down - you have to wait **5 seconds** between each of your guesses", - "request-hint": "Request hint", - "solution": "Solution", - "point": "Point", - "points": "Points", - "leaderboard": "View Leaderboard", - "skipped-prompt": "%u successfully skipped the last prompt", - "hint": "Hint (unlocked by %m):", - "firstletter": "First Letter (unlocked by %m)", - "prompt": "Prompt", - "no-users": "No one participated in Emoji-Quiz yet - once a few prompts get solved, you'll see users here.", - "hint-unlocked": "%m requested a hint:\n> %h", - "firstletter-shown": "First letter has been already requested by %m: **%d**", - "request-first-letter": "Request first letter", - "solved": "Guessed by %m", - "skipped": "Skipped by %m", - "question-info": "Info about questions", - "max-SKIP-reached": "Sorry, but you have already reached the maximum amount of **%n skips per hour**. You can try again %t.", - "max-FIRSTLETTER-reached": "Sorry, but you have already reached the maximum amount of **%n first-letter-reveals per hour**. You can try again %t.", - "max-HINT-reached": "Sorry, but you have already reached the maximum amount of **%n hints per hour**. You can try again %t.", - "question-by-owners": "This question is part of a dataset created by the administrators of this server.", - "question-info-description": "This question is part of a dataset provided by crowdsourcing. © [ScootKit](https://scootkit.net), %y. [View all contributors](https://scootk.it/emojiquiz-crowdsourcing) or [contribute yourself](https://scootk.it/emojiquiz-issues).", - "request-skip": "Skip prompt", - "submitted-by": "Submitted by %m", - "current-question": "Current question", - "no-question": "An emoji-quiz would be here. But you have enabled custom game questions and have non configured - so here's this error message instead :/", - "last-question": "Previous prompt", - "embed-title": "Emoji-Quiz - what do these emojis mean?", - "with-hint": "with hint", - "firstletter-unlocked": "%m revealed first letter: **%d**", - "hint-shown": "Hint already requested by %m:\n> %h", - "leaderboard-explanation": "A user will receive two (or one, if a hint was used) points for each correct guess.", - "leaderboard-header": "Leaderboard", - "report-or-suggest": "Error-Reports and Suggestions", - "downloading": "Downloading up-to-date SCNX Emoji-Quiz-Data…", - "downloaded": "Successfully downloaded up-to-date Emoji-Quiz-Data", - "embed-description": "Please guess the meaning of the following emojis in combination by sending a message in this channel!", - "channel-not-found": "The configured channel was not found or is not supported for this feature" - }, - "flag-quiz": { - "starting": "Starting the Flag Guessing game…", - "slow-down": "Please slow down - you have to wait **3 seconds** between each of your guesses", - "no-question": "No questions found. Please make sure you have enabled at least one datasource in your SCNX module configuration.", - "solution": "Solution", - "information-about": "Information about %n", - "region": "Region", - "difficulty": "Difficulty", - "continent": "Continent", - "capital": "Capital", - "na": "Not found", - "point": "Point", - "points": "Points", - "leaderboard": "View Leaderboard", - "skipped-flag": "%u successfully skipped the last flag. The correct answer was \"%a\".", - "firstletter": "First Letter (unlocked by %m)", - "no-users": "No one participated in flag guessing game yet - once a few prompts get solved, you'll see users here.", - "firstletter-shown": "First letter has been already requested by %m: **%d**", - "request-first-letter": "Request first letter", - "solved": "Guessed by %m", - "country-code": "Country Code ([ISO 3166](https://www.iso.org/iso-3166-country-codes.html))", - "skipped": "Skipped by %m", - "question-info": "Info about last flag", - "max-FIRSTLETTER-reached": "Sorry, but you have already reached the maximum amount of **%n first-letter-reveals per hour**. You can try again %t.", - "max-SKIP-reached": "Sorry, but you have already reached the maximum amount of **%n skips per hour**. You can try again %t.", - "request-skip": "Skip flag", - "last-question": "Previous prompt", - "embed-title": "Flag guessing - what government does this flag belong to?", - "firstletter-unlocked": "%m revealed first letter: **%d**", - "embed-description": "Please guess which country this flag belongs to. ", - "embed-description-two": "%a or %b", - "leaderboard-explanation": "A user will receive one points for each correct guess.", - "leaderboard-header": "Leaderboard", - "flag-disclaimer": "Used flags are Public Domain, provided by Flagpedia and Wikimedia Commons. Inclusion of countries in this dataset is not a political statement of ScootKit - it's just a game, don't take this to seriously.", - "downloading": "Downloading up-to-date SCNX Flag-Guessing-Data…", - "downloaded": "Successfully downloaded up-to-date Flag-Guessing-Data", - "channel-not-found": "The configured channel was not found or is not supported for this feature" - }, - "topgg": { - "channel-not-found": "The configured channel with the ID \"%c\" was not found", - "testvote-header": "This was a test vote", - "voterole-reached": "Voted on top.gg and received Voter-Role", - "voterole-ended": "Vote on top.gg expired and got Voter-Role removed", - "opt-in": "Enable notifications when you can vote again", - "opt-out": "Disable notifications when you can vote again", - "opted-in": "Successfully opted in into receiving notifications when you can vote again", - "opted-out": "Successfully opted out of receiving notifications when you can vote again", - "already-opted-in": "You are already opted-in and will receive notifications when you can vote again", - "already-opted-out": "You are already opted-out and will **not** receive notifications when you can vote again", - "voteamount-reached": "The user reached %k votes which resulted in this role to be given.", - "testvote-description": "This vote was triggered in the top.gg dashboard and does not count towards any votecount of anyone and won't be used for reminders." - }, - "starboard": { - "invalid-minstars": "Invalid minimum stars %stars", - "star-limit": "You've reached the hourly starboard limit of %limitEmoji on the server which is why you cannot react on the message %msgUrl .\nTry again %time!" - }, - "forum-support": { - "close-audit-log": "[Forum Support] Post got closed by %u.", - "tag-not-found": "Tag \"%t\" could not be found in forum channel \"%f\".", - "missing-permissions": "Posts can only be closed by the post creator and staff members with configured roles." - }, - "nicknames": { - "owner-cannot-be-renamed": "The owner of the server (%u) cannot be renamed.", - "nickname-error": "An error occurred while trying to change the nickname of %u: %e" - }, - "minecraft-status": { - "channel-not-found": "Configured channel \"%c\" for server with address \"%i\" was not found.", - "eula-block": "Server \"%i\" has been blocked due to EULA violations. This server can't be used on SCNX.", - "loading-message": "Loading Minecraft server status…" - }, - "anonymous-message": { - "command-description": "Send a message in the anonymous chat (none will know you sent the message)", - "command-message-description": "This is the message that will be sent in the anonymous chat.", - "channel-not-found": "Your anonymous channel was not found.", - "moderate-command-description": "Moderate your anonymous channel.", - "moderate-block-command-description": "Block a user from writing in the anonymous chat", - "moderate-block-display-name-command-description": "Enter the name of the user displayed in the anonymous chat", - "moderate-block-reason-command-description": "Reason for the block. This might be displayed to the user.", - "moderate-enable-command-description": "Unblock a user from the anonymous chat", - "moderate-already-disabled": "This user is already disabled. Reason: %r", - "webhook-reason": "Created webhook to be used for the anonymous chat.", - "no-reason": "No reason was specified.", - "user-disabled": "Disabled user successfully. This user won't be able to send messages in the anonymous chat anymore.", - "user-enabled": "User successfully enabled. This user will be able to send messages in the anonymous chat again.", - "user-unblocked": "Unblocked user successfully. This user will be able to send messages in the anonymous chat again.", - "moderate-not-disabled": "This user is not disabled.", - "moderate-delete-the-message-description": "Select which message will be deleted.", - "message-not-found": "We couldn't find the message you want to delete.", - "message-already-deleted": "This message has already been deleted.", - "message-deleted": "Successfully deleted message from the anonymous chat.", - "moderate-delete-message-description": "Delete a message sent in the anonymous chat. Enter the message id.", - "command-reset-description": "Enable this option to reset your identity. Resting your identity can not be undone.", - "content-too-long": "Your message is too long. Discord messages must be 2000 characters or fewer.", - "not-found": "This user has not been found. Make sure to enter the name displayed in the anonymous chat correctly." - }, - "holidays": { - "countdown-channel-not-found": "The countdown channel could not be found - if you don't want a countdown, please disable the option in the dashboard.", - "calendar-channel-not-found": "The calendar channel was not found - if you don't want to use this feature, please disable it in the dashboard.", - "m-left": "😴 More than a month left.", - "countdown-24-d": "🎄 %d days and %h hours left until Christmas!", - "countdown-24-h": "🎄 %h hours left until Christmas!", - "countdown-24-p": "🎄 Merry christmas!", - "countdown-25-d": "🎄 %d days and %h hours left until Christmas!", - "countdown-25-h": "🎄 %h hours left until Christmas!", - "countdown-25-p": "🎄 Merry christmas!", - "countdown-1-d": "🎆 %d days and %h hours left until %y!", - "countdown-1-h": "🎆 %h hours left until %y!", - "countdown-1-p": "🎆 Happy %y!" - }, - "ping-protection": { - "log-not-a-member": "[Ping Protection] Punishment failed: The pinger is not a member.", - "log-punish-role-error": "[Ping Protection] Punishment failed: I cannot punish %tag because their role is higher than or equal to my highest role.", - "log-mute-error": "[Ping Protection] Punishment failed: I cannot mute %tag: %e", - "log-kick-error": "[Ping Protection] Punishment failed: I cannot kick %tag: %e", - "log-action-log-failed": "[Ping Protection] Punishment logging failed: %e", - "log-data-deletion": "[Ping Protection] All data for the user with ID %u has been deleted successfully.", - "log-automod-keyword-limit": "[Ping Protection] Automod keywords exceed 1000 characters limit. Keywords were truncated.", - "punish-log-failed-title": "Punishment failed for user %u", - "punish-log-failed-desc": "An error occured while trying to punish the user %m. Please check the bot's permissions and role hierarchy. See the message below for the error.", - "punish-log-error": "Error: ```%e```", - "punish-role-error": "I cannot punish %tag because their role is higher than or equal to my highest role.", - "reason-basic": "User reached %c pings in the last %w weeks.", - "reason-advanced": "User reached %c pings in the last %d days (Custom timeframe).", - "cmd-desc-module": "Ping protection related commands", - "cmd-desc-group-user": "Every command related to the users", - "cmd-desc-history": "View the ping history of a user", - "cmd-opt-user": "The user to check", - "cmd-desc-actions": "View the moderation action history of a user", - "cmd-desc-panel": "Admin: Open the user management panel", - "cmd-desc-group-list": "Lists protected or whitelisted entities", - "cmd-desc-list-protected": "List of all the protected users and roles", - "cmd-desc-list-wl": "List of all the whitelisted roles, channels and users", - "embed-history-title": "Ping history of %u", - "no-data-found": "No logs found for this user.", - "embed-actions-title": "Moderation history of %u", - "label-reason": "Reason", - "actions-retention-note": "Note: Moderation actions are retained for 1 - 12 months based on the configuration.", - "no-permission": "You don't have sufficient permissions to use this command.", - "panel-title": "User Panel: %u", - "panel-description": "Manage and view data for %u (%i). View a quick recap of their ping and moderation history, or delete all data stored for this user (Risky).", - "btn-history": "Ping history", - "btn-actions": "Actions history", - "btn-delete": "Delete all data (Risky)", - "list-protected-title": "Protected Users and Roles", - "list-protected-desc": "View all protected users and roles here. When someone pings one of these protected user(s)/role(s), a warning will be sent. Exceptions are when pinged by someone with a whitelisted role/as a whitelisted user or when it's sent in a whitelisted channel.", - "field-protected-users": "Protected Users", - "field-protected-roles": "Protected Roles", - "list-whitelist-title": "Whitelisted Roles, Users and Channels", - "list-whitelist-desc": "View all whitelisted roles, users and channels here. Whitelisted roles and users will not get a warning for pinging a protected entity, and pings from them or in whitelisted channels will be ignored.", - "field-wl-roles": "Whitelisted Roles", - "field-wl-channels": "Whitelisted Channels", - "field-wl-users": "Whitelisted Users", - "list-none": "None are configured.", - "modal-title": "Confirm data deletion for this user", - "modal-label": "Confirm data deletion by typing this phrase:", - "modal-phrase": "I understand that all data of this user will be deleted and that this action cannot be undone.", - "modal-failed": "The phrase you entered is incorrect. Data deletion cancelled.", - "modal-success-data-deletion": "All data for the user <@%u> (%u) has been deleted successfully", - "field-quick-history": "Quick history view (Last %w weeks)", - "field-quick-desc": "Pings history amount: %p\nModeration actions amount: %m", - "history-disabled": "History logging has been disabled by a bot-configurator.\nAre you (one of) the bot-configurators? You can enable history logging in the \"Data Storage\" tab in the 'ping-protection' module ^^", - "leaver-warning-long": "This user left the server at %d. These logs will stay until automatic deletion.", - "leaver-warning-short": "This user left the server at %d.", - "meme-why": "😐 [Why are you the way that you are?]() - You just pinged yourself..", - "meme-played": "🔑 [Congratulations, you played yourself.]()", - "meme-spider": "🕷️ [Is this you?]() - You just pinged yourself.", - "meme-rick": "🎵 [Never gonna give you up, never gonna let you down...]() You just Rick Rolled yourself. Also congrats you unlocked the secret easter egg that only has a 1% chance of appearing!!1!1!!", - "meme-grind": "Why are you even pinging yourself 5 times in a row? Anyways continue some more to possibly get the secret meme\n-# (good luck grinding, only a 1% chance of getting it and during testing I had it once after 83 pings)", - "label-jump": "Jump to Message", - "no-message-link": "This ping was blocked by AutoMod", - "list-entry-text": "%index. **Pinged %target** at %time\n%link" - }, - "betterstatus": { - "command-description": "Change the bot's status", - "command-disabled": "The /status command is not enabled. An administrator needs to enable it in the betterstatus module configuration.", - "text-description": "The status text to display", - "activity-type-description": "The activity type (Playing, Watching, etc.)", - "bot-status-description": "The bot's online status (Online, Idle, DND)", - "streaming-link-description": "Streaming URL (only used when activity type is Streaming)", - "status-changed": "Bot status has been changed to: %s" - }, - "activity-streak": { - "module-loaded": "Activity streak module loaded and scheduled", - "command-description": "View and manage activity streaks", - "view-description": "View the activity streak of a user", - "add-description": "Add a streak point to a user (staff-managed mode only)", - "reset-description": "Reset a user's streak (staff-managed mode only)", - "user-option-description": "The user to view or manage", - "streak-title": "%u's Activity Streak", - "current-streak": "🔥 Current Streak", - "longest-streak": "🏆 Longest Streak", - "streak-mode": "📋 Mode", - "staff-managed": "Staff Managed", - "automatic": "Automatic", - "period-daily": "days", - "period-weekly": "weeks", - "period-monthly": "months", - "user-not-found": "Could not find this user.", - "not-staff-managed": "This command is only available in staff-managed mode.", - "no-permission": "You do not have permission to manage streaks.", - "user-required": "You must specify a user.", - "no-streak-data": "No streak data found for this user.", - "already-counted": "This user's activity has already been counted for the current period.", - "streak-added": "Streak updated for %u. Current streak: %s", - "streak-reset": "Streak has been reset for %u.", - "nickname-update-reason": "Streak count updated", - "role-reward-reason": "Reached streak of %s", - "restore-description": "Restore your last lost streak (once per loss)", - "no-restore-permission": "You do not have permission to restore streaks.", - "streak-not-lost": "This streak is still active and does not need to be restored.", - "no-previous-streak": "There is no previous streak to restore.", - "already-restored": "This streak has already been restored. You can only restore once per loss.", - "streak-restored": "Streak restored for %u! Current streak: %s", - "leaderboard-title": "Streak Leaderboard", - "leaderboard-description": "View the streak leaderboard", - "leaderboard-empty": "No active streaks yet.", - "remove-description": "Undo the last streak addition for a user", - "streak-removed": "Streak for %u reduced to %s", - "hide-description": "Toggle hiding your streak from your nickname", - "streak-hidden": "Your streak is now hidden from your nickname.", - "streak-visible": "Your streak is now visible in your nickname again.", - "hide-reason": "User opted out of streak display", - "role-remove-reason": "Streak reset" - }, - "name-list-cleaner": { - "owner-cannot-be-renamed": "The owner of the server (%u) cannot be renamed.", - "nickname-error": "An error occurred while trying to change the nickname of %u: %e", - "nickname-reset": "The nickname of %u has been reset, as it started with a disallowed character.", - "nickname-changed": "The nickname of %u has been changed, as it started with a disallowed character." - } -} \ No newline at end of file