diff --git a/bg-BG/commands/account/characters.json b/bg-BG/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/bg-BG/commands/account/characters.json +++ b/bg-BG/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/bg-BG/commands/account/investment.json b/bg-BG/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/bg-BG/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/bg-BG/commands/account/link.json b/bg-BG/commands/account/link.json index 9c80860c..97f17473 100644 --- a/bg-BG/commands/account/link.json +++ b/bg-BG/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/bg-BG/commands/account/profile.json b/bg-BG/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/bg-BG/commands/account/profile.json +++ b/bg-BG/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/bg-BG/commands/account/stats.json b/bg-BG/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/bg-BG/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/bg-BG/commands/account/union-raid.json b/bg-BG/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/bg-BG/commands/account/union-raid.json +++ b/bg-BG/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/bg-BG/commands/account/union.json b/bg-BG/commands/account/union.json index b15bb177..1c650e96 100644 --- a/bg-BG/commands/account/union.json +++ b/bg-BG/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/bg-BG/commands/admin.json b/bg-BG/commands/admin.json index 6139f6d1..6d158468 100644 --- a/bg-BG/commands/admin.json +++ b/bg-BG/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/bg-BG/commands/config.json b/bg-BG/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/bg-BG/commands/config.json +++ b/bg-BG/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/bg-BG/commands/fun/feedback.json b/bg-BG/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/bg-BG/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/bg-BG/commands/fun/game.json b/bg-BG/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/bg-BG/commands/fun/game.json +++ b/bg-BG/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/bg-BG/commands/fun/leaderboard.json b/bg-BG/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/bg-BG/commands/fun/leaderboard.json +++ b/bg-BG/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/bg-BG/commands/help.json b/bg-BG/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/bg-BG/commands/help.json +++ b/bg-BG/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/bg-BG/commands/misc/privacy.json b/bg-BG/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/bg-BG/commands/misc/privacy.json +++ b/bg-BG/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/bg-BG/commands/misc/status.json b/bg-BG/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/bg-BG/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/bg-BG/commands/settings.json b/bg-BG/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/bg-BG/commands/settings.json +++ b/bg-BG/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/bg-BG/lib/blablaResolve.json b/bg-BG/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/bg-BG/lib/blablaResolve.json +++ b/bg-BG/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/bg-BG/lib/games/replay.json b/bg-BG/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/bg-BG/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/bg-BG/lib/games/twoTruths.json b/bg-BG/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/bg-BG/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/bg-BG/lib/games/unionRaid.json b/bg-BG/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/bg-BG/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/bg-BG/lib/games/zoomWho.json b/bg-BG/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/bg-BG/lib/games/zoomWho.json +++ b/bg-BG/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/bg-BG/lib/searchPicker.json b/bg-BG/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/bg-BG/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/bg-BG/services/ark.json b/bg-BG/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/bg-BG/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/cs-CZ/commands/account/characters.json b/cs-CZ/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/cs-CZ/commands/account/characters.json +++ b/cs-CZ/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/cs-CZ/commands/account/investment.json b/cs-CZ/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/cs-CZ/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/cs-CZ/commands/account/link.json b/cs-CZ/commands/account/link.json index 9c80860c..97f17473 100644 --- a/cs-CZ/commands/account/link.json +++ b/cs-CZ/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/cs-CZ/commands/account/profile.json b/cs-CZ/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/cs-CZ/commands/account/profile.json +++ b/cs-CZ/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/cs-CZ/commands/account/stats.json b/cs-CZ/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/cs-CZ/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/cs-CZ/commands/account/union-raid.json b/cs-CZ/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/cs-CZ/commands/account/union-raid.json +++ b/cs-CZ/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/cs-CZ/commands/account/union.json b/cs-CZ/commands/account/union.json index b15bb177..1c650e96 100644 --- a/cs-CZ/commands/account/union.json +++ b/cs-CZ/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/cs-CZ/commands/admin.json b/cs-CZ/commands/admin.json index 6139f6d1..6d158468 100644 --- a/cs-CZ/commands/admin.json +++ b/cs-CZ/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/cs-CZ/commands/config.json b/cs-CZ/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/cs-CZ/commands/config.json +++ b/cs-CZ/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/cs-CZ/commands/fun/feedback.json b/cs-CZ/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/cs-CZ/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/cs-CZ/commands/fun/game.json b/cs-CZ/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/cs-CZ/commands/fun/game.json +++ b/cs-CZ/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/cs-CZ/commands/fun/leaderboard.json b/cs-CZ/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/cs-CZ/commands/fun/leaderboard.json +++ b/cs-CZ/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/cs-CZ/commands/help.json b/cs-CZ/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/cs-CZ/commands/help.json +++ b/cs-CZ/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/cs-CZ/commands/misc/privacy.json b/cs-CZ/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/cs-CZ/commands/misc/privacy.json +++ b/cs-CZ/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/cs-CZ/commands/misc/status.json b/cs-CZ/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/cs-CZ/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/cs-CZ/commands/settings.json b/cs-CZ/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/cs-CZ/commands/settings.json +++ b/cs-CZ/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/cs-CZ/lib/blablaResolve.json b/cs-CZ/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/cs-CZ/lib/blablaResolve.json +++ b/cs-CZ/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/cs-CZ/lib/games/replay.json b/cs-CZ/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/cs-CZ/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/cs-CZ/lib/games/twoTruths.json b/cs-CZ/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/cs-CZ/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/cs-CZ/lib/games/unionRaid.json b/cs-CZ/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/cs-CZ/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/cs-CZ/lib/games/zoomWho.json b/cs-CZ/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/cs-CZ/lib/games/zoomWho.json +++ b/cs-CZ/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/cs-CZ/lib/searchPicker.json b/cs-CZ/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/cs-CZ/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/cs-CZ/services/ark.json b/cs-CZ/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/cs-CZ/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/da-DK/commands/account/characters.json b/da-DK/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/da-DK/commands/account/characters.json +++ b/da-DK/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/da-DK/commands/account/investment.json b/da-DK/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/da-DK/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/da-DK/commands/account/link.json b/da-DK/commands/account/link.json index 9c80860c..97f17473 100644 --- a/da-DK/commands/account/link.json +++ b/da-DK/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/da-DK/commands/account/profile.json b/da-DK/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/da-DK/commands/account/profile.json +++ b/da-DK/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/da-DK/commands/account/stats.json b/da-DK/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/da-DK/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/da-DK/commands/account/union-raid.json b/da-DK/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/da-DK/commands/account/union-raid.json +++ b/da-DK/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/da-DK/commands/account/union.json b/da-DK/commands/account/union.json index b15bb177..1c650e96 100644 --- a/da-DK/commands/account/union.json +++ b/da-DK/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/da-DK/commands/admin.json b/da-DK/commands/admin.json index 6139f6d1..6d158468 100644 --- a/da-DK/commands/admin.json +++ b/da-DK/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/da-DK/commands/config.json b/da-DK/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/da-DK/commands/config.json +++ b/da-DK/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/da-DK/commands/fun/feedback.json b/da-DK/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/da-DK/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/da-DK/commands/fun/game.json b/da-DK/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/da-DK/commands/fun/game.json +++ b/da-DK/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/da-DK/commands/fun/leaderboard.json b/da-DK/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/da-DK/commands/fun/leaderboard.json +++ b/da-DK/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/da-DK/commands/help.json b/da-DK/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/da-DK/commands/help.json +++ b/da-DK/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/da-DK/commands/misc/privacy.json b/da-DK/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/da-DK/commands/misc/privacy.json +++ b/da-DK/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/da-DK/commands/misc/status.json b/da-DK/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/da-DK/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/da-DK/commands/settings.json b/da-DK/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/da-DK/commands/settings.json +++ b/da-DK/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/da-DK/lib/blablaResolve.json b/da-DK/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/da-DK/lib/blablaResolve.json +++ b/da-DK/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/da-DK/lib/games/replay.json b/da-DK/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/da-DK/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/da-DK/lib/games/twoTruths.json b/da-DK/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/da-DK/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/da-DK/lib/games/unionRaid.json b/da-DK/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/da-DK/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/da-DK/lib/games/zoomWho.json b/da-DK/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/da-DK/lib/games/zoomWho.json +++ b/da-DK/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/da-DK/lib/searchPicker.json b/da-DK/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/da-DK/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/da-DK/services/ark.json b/da-DK/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/da-DK/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/de-DE/commands/account/characters.json b/de-DE/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/de-DE/commands/account/characters.json +++ b/de-DE/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/de-DE/commands/account/investment.json b/de-DE/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/de-DE/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/de-DE/commands/account/link.json b/de-DE/commands/account/link.json index 9c80860c..97f17473 100644 --- a/de-DE/commands/account/link.json +++ b/de-DE/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/de-DE/commands/account/profile.json b/de-DE/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/de-DE/commands/account/profile.json +++ b/de-DE/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/de-DE/commands/account/stats.json b/de-DE/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/de-DE/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/de-DE/commands/account/union-raid.json b/de-DE/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/de-DE/commands/account/union-raid.json +++ b/de-DE/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/de-DE/commands/account/union.json b/de-DE/commands/account/union.json index b15bb177..1c650e96 100644 --- a/de-DE/commands/account/union.json +++ b/de-DE/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/de-DE/commands/admin.json b/de-DE/commands/admin.json index 6139f6d1..6d158468 100644 --- a/de-DE/commands/admin.json +++ b/de-DE/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/de-DE/commands/config.json b/de-DE/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/de-DE/commands/config.json +++ b/de-DE/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/de-DE/commands/fun/feedback.json b/de-DE/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/de-DE/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/de-DE/commands/fun/game.json b/de-DE/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/de-DE/commands/fun/game.json +++ b/de-DE/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/de-DE/commands/fun/leaderboard.json b/de-DE/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/de-DE/commands/fun/leaderboard.json +++ b/de-DE/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/de-DE/commands/help.json b/de-DE/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/de-DE/commands/help.json +++ b/de-DE/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/de-DE/commands/misc/privacy.json b/de-DE/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/de-DE/commands/misc/privacy.json +++ b/de-DE/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/de-DE/commands/misc/status.json b/de-DE/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/de-DE/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/de-DE/commands/settings.json b/de-DE/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/de-DE/commands/settings.json +++ b/de-DE/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/de-DE/lib/blablaResolve.json b/de-DE/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/de-DE/lib/blablaResolve.json +++ b/de-DE/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/de-DE/lib/games/replay.json b/de-DE/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/de-DE/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/de-DE/lib/games/twoTruths.json b/de-DE/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/de-DE/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/de-DE/lib/games/unionRaid.json b/de-DE/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/de-DE/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/de-DE/lib/games/zoomWho.json b/de-DE/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/de-DE/lib/games/zoomWho.json +++ b/de-DE/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/de-DE/lib/searchPicker.json b/de-DE/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/de-DE/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/de-DE/services/ark.json b/de-DE/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/de-DE/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/el-GR/commands/account/characters.json b/el-GR/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/el-GR/commands/account/characters.json +++ b/el-GR/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/el-GR/commands/account/investment.json b/el-GR/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/el-GR/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/el-GR/commands/account/link.json b/el-GR/commands/account/link.json index 9c80860c..97f17473 100644 --- a/el-GR/commands/account/link.json +++ b/el-GR/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/el-GR/commands/account/profile.json b/el-GR/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/el-GR/commands/account/profile.json +++ b/el-GR/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/el-GR/commands/account/stats.json b/el-GR/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/el-GR/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/el-GR/commands/account/union-raid.json b/el-GR/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/el-GR/commands/account/union-raid.json +++ b/el-GR/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/el-GR/commands/account/union.json b/el-GR/commands/account/union.json index b15bb177..1c650e96 100644 --- a/el-GR/commands/account/union.json +++ b/el-GR/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/el-GR/commands/admin.json b/el-GR/commands/admin.json index 6139f6d1..6d158468 100644 --- a/el-GR/commands/admin.json +++ b/el-GR/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/el-GR/commands/config.json b/el-GR/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/el-GR/commands/config.json +++ b/el-GR/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/el-GR/commands/fun/feedback.json b/el-GR/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/el-GR/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/el-GR/commands/fun/game.json b/el-GR/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/el-GR/commands/fun/game.json +++ b/el-GR/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/el-GR/commands/fun/leaderboard.json b/el-GR/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/el-GR/commands/fun/leaderboard.json +++ b/el-GR/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/el-GR/commands/help.json b/el-GR/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/el-GR/commands/help.json +++ b/el-GR/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/el-GR/commands/misc/privacy.json b/el-GR/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/el-GR/commands/misc/privacy.json +++ b/el-GR/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/el-GR/commands/misc/status.json b/el-GR/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/el-GR/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/el-GR/commands/settings.json b/el-GR/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/el-GR/commands/settings.json +++ b/el-GR/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/el-GR/lib/blablaResolve.json b/el-GR/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/el-GR/lib/blablaResolve.json +++ b/el-GR/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/el-GR/lib/games/replay.json b/el-GR/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/el-GR/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/el-GR/lib/games/twoTruths.json b/el-GR/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/el-GR/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/el-GR/lib/games/unionRaid.json b/el-GR/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/el-GR/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/el-GR/lib/games/zoomWho.json b/el-GR/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/el-GR/lib/games/zoomWho.json +++ b/el-GR/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/el-GR/lib/searchPicker.json b/el-GR/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/el-GR/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/el-GR/services/ark.json b/el-GR/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/el-GR/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/en-GB/commands/account/characters.json b/en-GB/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/en-GB/commands/account/characters.json +++ b/en-GB/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/en-GB/commands/account/investment.json b/en-GB/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/en-GB/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/en-GB/commands/account/link.json b/en-GB/commands/account/link.json index 9c80860c..97f17473 100644 --- a/en-GB/commands/account/link.json +++ b/en-GB/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/en-GB/commands/account/profile.json b/en-GB/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/en-GB/commands/account/profile.json +++ b/en-GB/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/en-GB/commands/account/stats.json b/en-GB/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/en-GB/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/en-GB/commands/account/union-raid.json b/en-GB/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/en-GB/commands/account/union-raid.json +++ b/en-GB/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/en-GB/commands/account/union.json b/en-GB/commands/account/union.json index b15bb177..1c650e96 100644 --- a/en-GB/commands/account/union.json +++ b/en-GB/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/en-GB/commands/admin.json b/en-GB/commands/admin.json index 6139f6d1..6d158468 100644 --- a/en-GB/commands/admin.json +++ b/en-GB/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/en-GB/commands/config.json b/en-GB/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/en-GB/commands/config.json +++ b/en-GB/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/en-GB/commands/fun/feedback.json b/en-GB/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/en-GB/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/en-GB/commands/fun/game.json b/en-GB/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/en-GB/commands/fun/game.json +++ b/en-GB/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/en-GB/commands/fun/leaderboard.json b/en-GB/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/en-GB/commands/fun/leaderboard.json +++ b/en-GB/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/en-GB/commands/help.json b/en-GB/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/en-GB/commands/help.json +++ b/en-GB/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/en-GB/commands/misc/privacy.json b/en-GB/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/en-GB/commands/misc/privacy.json +++ b/en-GB/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/en-GB/commands/misc/status.json b/en-GB/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/en-GB/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/en-GB/commands/settings.json b/en-GB/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/en-GB/commands/settings.json +++ b/en-GB/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/en-GB/lib/blablaResolve.json b/en-GB/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/en-GB/lib/blablaResolve.json +++ b/en-GB/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/en-GB/lib/games/replay.json b/en-GB/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/en-GB/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/en-GB/lib/games/twoTruths.json b/en-GB/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/en-GB/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/en-GB/lib/games/unionRaid.json b/en-GB/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/en-GB/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/en-GB/lib/games/zoomWho.json b/en-GB/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/en-GB/lib/games/zoomWho.json +++ b/en-GB/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/en-GB/lib/searchPicker.json b/en-GB/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/en-GB/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/en-GB/services/ark.json b/en-GB/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/en-GB/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/es-ES/commands/account/banners.json b/es-ES/commands/account/banners.json index 8c7b299f..f462d1c2 100644 --- a/es-ES/commands/account/banners.json +++ b/es-ES/commands/account/banners.json @@ -1,16 +1,16 @@ { "name": "banners", - "description": "View current recruitment and costume banners", - "prefixOnly": "This command is only available as a slash command.", - "fetchFailed": "Failed to fetch banner data.", - "expired": "Banner data expired. Run `/banners` again.", - "noBanners": "No {{type}} banners available.", - "noDetails": "No details available.", - "ongoing": "Ongoing", + "description": "Ver banners de reclutamiento y disfraces actuales", + "prefixOnly": "ยกEste comando sรณlo estรก disponible como un comando slash!", + "fetchFailed": "Error al obtener los datos de caracteres.", + "expired": "Datos de banner caducados. Ejecuta `/banners` nuevamente.", + "noBanners": "No hay banners {{type}} disponibles.", + "noDetails": "No se dispone de detalles.", + "ongoing": "En progreso", "labels": { - "recruitments": "Recruitments", - "costumes": "Costumes", - "details": "Details", - "back": "Back" + "recruitments": "Reclutamientos", + "costumes": "Disfraces", + "details": "Detalles", + "back": "Volver" } } diff --git a/es-ES/commands/account/characters.json b/es-ES/commands/account/characters.json index 1351cb0a..60971e59 100644 --- a/es-ES/commands/account/characters.json +++ b/es-ES/commands/account/characters.json @@ -1,52 +1,53 @@ { - "name": "characters", - "description": "View a player's NIKKE character roster", - "prefixOnly": "Use /characters to view a player's roster.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "noProfile": "Could not find a BlaBlaLink profile with that user ID.", - "noTargetAccount": "<@{{user}}> doesn't have a BlaBlaLink account linked.", - "invalidSearch": "Please provide a valid search query.", - "searchNotFound": "Couldn't find any users matching **{{query}}**.", - "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", - "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noProfileId": "Could not find a BlaBlaLink profile with that ID.", - "noArea": "Could not determine this player's game area.", - "loading": "Loading infographic... {{emoji}}", - "shiftyPadPrivate": "Could not load character data โ€” the player's ShiftyPad privacy is set to private. Ask them to set their [ShiftyPad visibility](https://www.blablalink.com/setting/shiftyspad/private) to **Visible to all**.", - "noGameAccount": "Could not load character data โ€” {{msg}}", - "loadFailed": "Failed to load character data. Please try again later.", - "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", - "noCharacters": "No characters to display.", - "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", - "rosterTitle": "NIKKE Roster", - "notInRoster": "**{{name}}** is not in this player's roster.", - "charNotFound": "Could not find a NIKKE named **{{name}}**.", - "detailLoadFailed": "Could not load details for **{{name}}**. The player may not own this NIKKE.", - "detailNotFound": "Could not load details for **{{name}}**.", - "shiftyPadPrivateDetail": "Could not load character data โ€” the player's ShiftyPad privacy is set to private.", - "invalidPage": "Invalid page number. Enter a number between 1 and {{total}}.", - "pageJumpTitle": "Jump to Page", - "pageLabel": "Page (1-{{total}})", + "name": "caracteres", + "description": "Ver la lista de caracteres NIKKE de un jugador", + "prefixOnly": "Usa /characters para ver la lista de un jugador.", + "invalidUserId": "ID de usuario no vรกlido. Por favor, introduzca el ID numรฉrico de su perfil BlaLink.", + "noProfile": "No se pudo encontrar un perfil de BlaLink con ese ID de usuario.", + "noTargetAccount": "<@{{user}}> no tiene una cuenta de BlaBlaLink vinculada.", + "invalidSearch": "Por favor, proporcione una consulta de bรบsqueda vรกlida.", + "searchNotFound": "No se pudo encontrar ningรบn usuario que coincida con **{{query}}**.", + "searchNoProfile": "Se encontrรณ **{{username}}** pero no tiene un perfil de juego.", + "private": "This user has enabled character privacy.", + "noAccount": "No tienes una cuenta de BlaBlaLink vinculada. Usa **/blabla-link** para vincular una, o proporciona una opciรณn **user_id** o **user**.", + "noProfileId": "No se pudo encontrar un perfil de BlaLink con ese ID de usuario.", + "noArea": "No se pudo determinar la zona de juego de este jugador.", + "loading": "Cargando infografรญa... {{emoji}}", + "shiftyPadPrivate": "No se pudo cargar los datos de personaje โ€” la privacidad ShiftyPad del jugador estรก establecida en privado. Pรญdeles que establezcan su [visibilidad ShiftyPad](https://www.blablalink.com/setting/shiftyspad/private) a **Visible para todos**.", + "noGameAccount": "No se pudo cargar los datos del personaje โ€” {{msg}}", + "loadFailed": "Error al recuperar los datos de asistencia. Intรฉntalo de nuevo mรกs tarde.", + "noCookie": "No se pudo cargar los datos de los caracteres. Vincula tu cuenta con `/blabla-link` para ver las listas, o proporciona un `user_id` vรกlido.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", + "noCharacters": "No hay caracteres para mostrar.", + "rosterDesc": "Roster de {{nickname}}, {{count}} caracteres", + "rosterTitle": "Roster de NIKKE", + "notInRoster": "**{{name}}** no estรก en la lista de este jugador.", + "charNotFound": "No se pudo encontrar un NIKKE llamado **{{name}}**.", + "detailLoadFailed": "No se pudo cargar los detalles de **{{name}}**. El jugador puede no tener este NIKKE.", + "detailNotFound": "No se pudo cargar los detalles de **{{name}}**.", + "shiftyPadPrivateDetail": "No se pudo cargar los datos de personaje โ€” la privacidad ShiftyPad del jugador estรก establecida en privado.", + "invalidPage": "Nรบmero de pรกgina no vรกlido. Introduzca un nรบmero entre 1 y {{total}}.", + "pageJumpTitle": "Ir a la Pรกgina", + "pageLabel": "Pรกgina (1-{{total}})", "labels": { - "sortBy": "Sort by...", - "filter": "Filter...", - "desc": "โ–ผ Desc", + "sortBy": "Ordenar por...", + "filter": "Filtro...", + "desc": "Desc", "asc": "โ–ฒ Asc", - "details": "Details", - "back": "Back" + "details": "Detalles", + "back": "Volver" }, "sort": { - "power": "Power", - "level": "Level", - "limitbreak": "Limit Break", - "rarity": "Rarity" + "power": "Poder", + "level": "Nivel", + "limitbreak": "Lรญmite Desfasado", + "rarity": "Rareza" }, "filters": { - "all": "All", - "attacker": "Attacker", + "all": "Todo", + "attacker": "Atacante", "defender": "Defender", - "supporter": "Supporter", + "supporter": "Ayudante", "elysion": "Elysion", "missilis": "Missilis", "tetra": "Tetra", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/es-ES/commands/account/investment.json b/es-ES/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/es-ES/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/es-ES/commands/account/link.json b/es-ES/commands/account/link.json index 9c80860c..97f17473 100644 --- a/es-ES/commands/account/link.json +++ b/es-ES/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/es-ES/commands/account/profile.json b/es-ES/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/es-ES/commands/account/profile.json +++ b/es-ES/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/es-ES/commands/account/stats.json b/es-ES/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/es-ES/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/es-ES/commands/account/union-raid.json b/es-ES/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/es-ES/commands/account/union-raid.json +++ b/es-ES/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/es-ES/commands/account/union.json b/es-ES/commands/account/union.json index b15bb177..1c650e96 100644 --- a/es-ES/commands/account/union.json +++ b/es-ES/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/es-ES/commands/admin.json b/es-ES/commands/admin.json index 6139f6d1..6d158468 100644 --- a/es-ES/commands/admin.json +++ b/es-ES/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/es-ES/commands/config.json b/es-ES/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/es-ES/commands/config.json +++ b/es-ES/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/es-ES/commands/fun/feedback.json b/es-ES/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/es-ES/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/es-ES/commands/fun/game.json b/es-ES/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/es-ES/commands/fun/game.json +++ b/es-ES/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/es-ES/commands/fun/leaderboard.json b/es-ES/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/es-ES/commands/fun/leaderboard.json +++ b/es-ES/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/es-ES/commands/help.json b/es-ES/commands/help.json index fa296255..6abd72bd 100644 --- a/es-ES/commands/help.json +++ b/es-ES/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Seleccione una categorรญa para ver los comandos.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Comandos en **{{category}}**", - "categoryHeaderWithCommands": "Comandos en **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Selecciona una categorรญa", "optionDescription": "Ver comandos de {{category}}" } diff --git a/es-ES/commands/misc/privacy.json b/es-ES/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/es-ES/commands/misc/privacy.json +++ b/es-ES/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/es-ES/commands/misc/status.json b/es-ES/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/es-ES/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/es-ES/commands/settings.json b/es-ES/commands/settings.json index a0de3a6e..3c7a55e3 100644 --- a/es-ES/commands/settings.json +++ b/es-ES/commands/settings.json @@ -1,17 +1,57 @@ { "name": "configuraciรณn", "description": "Administra tus ajustes personales", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Establece tu idioma preferido para las respuestas del bot.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Tu idioma actual: **{{language}}**", "updated": "Idioma establecido a **{{language}}**.", "reset": "Reiniciar idioma al servidor por defecto.", "selectPlaceholder": "Seleccione su idioma", "global": "Usar valor por defecto del servidor", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/es-ES/lib/blablaResolve.json b/es-ES/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/es-ES/lib/blablaResolve.json +++ b/es-ES/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/es-ES/lib/games/replay.json b/es-ES/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/es-ES/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/es-ES/lib/games/twoTruths.json b/es-ES/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/es-ES/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/es-ES/lib/games/unionRaid.json b/es-ES/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/es-ES/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/es-ES/lib/games/zoomWho.json b/es-ES/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/es-ES/lib/games/zoomWho.json +++ b/es-ES/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/es-ES/lib/searchPicker.json b/es-ES/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/es-ES/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/es-ES/services/ark.json b/es-ES/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/es-ES/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/fi-FI/commands/account/characters.json b/fi-FI/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/fi-FI/commands/account/characters.json +++ b/fi-FI/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/fi-FI/commands/account/investment.json b/fi-FI/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/fi-FI/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/fi-FI/commands/account/link.json b/fi-FI/commands/account/link.json index 9c80860c..97f17473 100644 --- a/fi-FI/commands/account/link.json +++ b/fi-FI/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/fi-FI/commands/account/profile.json b/fi-FI/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/fi-FI/commands/account/profile.json +++ b/fi-FI/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/fi-FI/commands/account/stats.json b/fi-FI/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/fi-FI/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/fi-FI/commands/account/union-raid.json b/fi-FI/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/fi-FI/commands/account/union-raid.json +++ b/fi-FI/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/fi-FI/commands/account/union.json b/fi-FI/commands/account/union.json index b15bb177..1c650e96 100644 --- a/fi-FI/commands/account/union.json +++ b/fi-FI/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/fi-FI/commands/admin.json b/fi-FI/commands/admin.json index 6139f6d1..6d158468 100644 --- a/fi-FI/commands/admin.json +++ b/fi-FI/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/fi-FI/commands/config.json b/fi-FI/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/fi-FI/commands/config.json +++ b/fi-FI/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/fi-FI/commands/fun/feedback.json b/fi-FI/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/fi-FI/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/fi-FI/commands/fun/game.json b/fi-FI/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/fi-FI/commands/fun/game.json +++ b/fi-FI/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/fi-FI/commands/fun/leaderboard.json b/fi-FI/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/fi-FI/commands/fun/leaderboard.json +++ b/fi-FI/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/fi-FI/commands/help.json b/fi-FI/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/fi-FI/commands/help.json +++ b/fi-FI/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/fi-FI/commands/misc/privacy.json b/fi-FI/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/fi-FI/commands/misc/privacy.json +++ b/fi-FI/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/fi-FI/commands/misc/status.json b/fi-FI/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/fi-FI/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/fi-FI/commands/settings.json b/fi-FI/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/fi-FI/commands/settings.json +++ b/fi-FI/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/fi-FI/lib/blablaResolve.json b/fi-FI/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/fi-FI/lib/blablaResolve.json +++ b/fi-FI/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/fi-FI/lib/games/replay.json b/fi-FI/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/fi-FI/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/fi-FI/lib/games/twoTruths.json b/fi-FI/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/fi-FI/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/fi-FI/lib/games/unionRaid.json b/fi-FI/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/fi-FI/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/fi-FI/lib/games/zoomWho.json b/fi-FI/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/fi-FI/lib/games/zoomWho.json +++ b/fi-FI/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/fi-FI/lib/searchPicker.json b/fi-FI/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/fi-FI/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/fi-FI/services/ark.json b/fi-FI/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/fi-FI/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/fr-FR/commands/account/characters.json b/fr-FR/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/fr-FR/commands/account/characters.json +++ b/fr-FR/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/fr-FR/commands/account/investment.json b/fr-FR/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/fr-FR/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/fr-FR/commands/account/link.json b/fr-FR/commands/account/link.json index 9c80860c..97f17473 100644 --- a/fr-FR/commands/account/link.json +++ b/fr-FR/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/fr-FR/commands/account/profile.json b/fr-FR/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/fr-FR/commands/account/profile.json +++ b/fr-FR/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/fr-FR/commands/account/stats.json b/fr-FR/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/fr-FR/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/fr-FR/commands/account/union-raid.json b/fr-FR/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/fr-FR/commands/account/union-raid.json +++ b/fr-FR/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/fr-FR/commands/account/union.json b/fr-FR/commands/account/union.json index b15bb177..1c650e96 100644 --- a/fr-FR/commands/account/union.json +++ b/fr-FR/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/fr-FR/commands/admin.json b/fr-FR/commands/admin.json index 6139f6d1..6d158468 100644 --- a/fr-FR/commands/admin.json +++ b/fr-FR/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/fr-FR/commands/config.json b/fr-FR/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/fr-FR/commands/config.json +++ b/fr-FR/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/fr-FR/commands/fun/feedback.json b/fr-FR/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/fr-FR/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/fr-FR/commands/fun/game.json b/fr-FR/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/fr-FR/commands/fun/game.json +++ b/fr-FR/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/fr-FR/commands/fun/leaderboard.json b/fr-FR/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/fr-FR/commands/fun/leaderboard.json +++ b/fr-FR/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/fr-FR/commands/help.json b/fr-FR/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/fr-FR/commands/help.json +++ b/fr-FR/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/fr-FR/commands/misc/privacy.json b/fr-FR/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/fr-FR/commands/misc/privacy.json +++ b/fr-FR/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/fr-FR/commands/misc/status.json b/fr-FR/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/fr-FR/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/fr-FR/commands/settings.json b/fr-FR/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/fr-FR/commands/settings.json +++ b/fr-FR/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/fr-FR/lib/blablaResolve.json b/fr-FR/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/fr-FR/lib/blablaResolve.json +++ b/fr-FR/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/fr-FR/lib/games/replay.json b/fr-FR/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/fr-FR/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/fr-FR/lib/games/twoTruths.json b/fr-FR/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/fr-FR/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/fr-FR/lib/games/unionRaid.json b/fr-FR/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/fr-FR/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/fr-FR/lib/games/zoomWho.json b/fr-FR/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/fr-FR/lib/games/zoomWho.json +++ b/fr-FR/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/fr-FR/lib/searchPicker.json b/fr-FR/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/fr-FR/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/fr-FR/services/ark.json b/fr-FR/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/fr-FR/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/hi-IN/commands/account/characters.json b/hi-IN/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/hi-IN/commands/account/characters.json +++ b/hi-IN/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/hi-IN/commands/account/investment.json b/hi-IN/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/hi-IN/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/hi-IN/commands/account/link.json b/hi-IN/commands/account/link.json index 9c80860c..97f17473 100644 --- a/hi-IN/commands/account/link.json +++ b/hi-IN/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/hi-IN/commands/account/profile.json b/hi-IN/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/hi-IN/commands/account/profile.json +++ b/hi-IN/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/hi-IN/commands/account/stats.json b/hi-IN/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/hi-IN/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/hi-IN/commands/account/union-raid.json b/hi-IN/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/hi-IN/commands/account/union-raid.json +++ b/hi-IN/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/hi-IN/commands/account/union.json b/hi-IN/commands/account/union.json index b15bb177..1c650e96 100644 --- a/hi-IN/commands/account/union.json +++ b/hi-IN/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/hi-IN/commands/admin.json b/hi-IN/commands/admin.json index 6139f6d1..6d158468 100644 --- a/hi-IN/commands/admin.json +++ b/hi-IN/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/hi-IN/commands/config.json b/hi-IN/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/hi-IN/commands/config.json +++ b/hi-IN/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/hi-IN/commands/fun/feedback.json b/hi-IN/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/hi-IN/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/hi-IN/commands/fun/game.json b/hi-IN/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/hi-IN/commands/fun/game.json +++ b/hi-IN/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/hi-IN/commands/fun/leaderboard.json b/hi-IN/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/hi-IN/commands/fun/leaderboard.json +++ b/hi-IN/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/hi-IN/commands/help.json b/hi-IN/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/hi-IN/commands/help.json +++ b/hi-IN/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/hi-IN/commands/misc/privacy.json b/hi-IN/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/hi-IN/commands/misc/privacy.json +++ b/hi-IN/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/hi-IN/commands/misc/status.json b/hi-IN/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/hi-IN/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/hi-IN/commands/settings.json b/hi-IN/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/hi-IN/commands/settings.json +++ b/hi-IN/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/hi-IN/lib/blablaResolve.json b/hi-IN/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/hi-IN/lib/blablaResolve.json +++ b/hi-IN/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/hi-IN/lib/games/replay.json b/hi-IN/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/hi-IN/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/hi-IN/lib/games/twoTruths.json b/hi-IN/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/hi-IN/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/hi-IN/lib/games/unionRaid.json b/hi-IN/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/hi-IN/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/hi-IN/lib/games/zoomWho.json b/hi-IN/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/hi-IN/lib/games/zoomWho.json +++ b/hi-IN/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/hi-IN/lib/searchPicker.json b/hi-IN/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/hi-IN/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/hi-IN/services/ark.json b/hi-IN/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/hi-IN/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/hr-HR/commands/account/characters.json b/hr-HR/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/hr-HR/commands/account/characters.json +++ b/hr-HR/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/hr-HR/commands/account/investment.json b/hr-HR/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/hr-HR/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/hr-HR/commands/account/link.json b/hr-HR/commands/account/link.json index 9c80860c..97f17473 100644 --- a/hr-HR/commands/account/link.json +++ b/hr-HR/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/hr-HR/commands/account/profile.json b/hr-HR/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/hr-HR/commands/account/profile.json +++ b/hr-HR/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/hr-HR/commands/account/stats.json b/hr-HR/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/hr-HR/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/hr-HR/commands/account/union-raid.json b/hr-HR/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/hr-HR/commands/account/union-raid.json +++ b/hr-HR/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/hr-HR/commands/account/union.json b/hr-HR/commands/account/union.json index b15bb177..1c650e96 100644 --- a/hr-HR/commands/account/union.json +++ b/hr-HR/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/hr-HR/commands/admin.json b/hr-HR/commands/admin.json index 6139f6d1..6d158468 100644 --- a/hr-HR/commands/admin.json +++ b/hr-HR/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/hr-HR/commands/config.json b/hr-HR/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/hr-HR/commands/config.json +++ b/hr-HR/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/hr-HR/commands/fun/feedback.json b/hr-HR/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/hr-HR/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/hr-HR/commands/fun/game.json b/hr-HR/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/hr-HR/commands/fun/game.json +++ b/hr-HR/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/hr-HR/commands/fun/leaderboard.json b/hr-HR/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/hr-HR/commands/fun/leaderboard.json +++ b/hr-HR/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/hr-HR/commands/help.json b/hr-HR/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/hr-HR/commands/help.json +++ b/hr-HR/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/hr-HR/commands/misc/privacy.json b/hr-HR/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/hr-HR/commands/misc/privacy.json +++ b/hr-HR/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/hr-HR/commands/misc/status.json b/hr-HR/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/hr-HR/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/hr-HR/commands/settings.json b/hr-HR/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/hr-HR/commands/settings.json +++ b/hr-HR/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/hr-HR/lib/blablaResolve.json b/hr-HR/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/hr-HR/lib/blablaResolve.json +++ b/hr-HR/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/hr-HR/lib/games/replay.json b/hr-HR/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/hr-HR/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/hr-HR/lib/games/twoTruths.json b/hr-HR/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/hr-HR/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/hr-HR/lib/games/unionRaid.json b/hr-HR/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/hr-HR/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/hr-HR/lib/games/zoomWho.json b/hr-HR/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/hr-HR/lib/games/zoomWho.json +++ b/hr-HR/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/hr-HR/lib/searchPicker.json b/hr-HR/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/hr-HR/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/hr-HR/services/ark.json b/hr-HR/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/hr-HR/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/hu-HU/commands/account/characters.json b/hu-HU/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/hu-HU/commands/account/characters.json +++ b/hu-HU/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/hu-HU/commands/account/investment.json b/hu-HU/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/hu-HU/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/hu-HU/commands/account/link.json b/hu-HU/commands/account/link.json index 9c80860c..97f17473 100644 --- a/hu-HU/commands/account/link.json +++ b/hu-HU/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/hu-HU/commands/account/profile.json b/hu-HU/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/hu-HU/commands/account/profile.json +++ b/hu-HU/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/hu-HU/commands/account/stats.json b/hu-HU/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/hu-HU/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/hu-HU/commands/account/union-raid.json b/hu-HU/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/hu-HU/commands/account/union-raid.json +++ b/hu-HU/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/hu-HU/commands/account/union.json b/hu-HU/commands/account/union.json index b15bb177..1c650e96 100644 --- a/hu-HU/commands/account/union.json +++ b/hu-HU/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/hu-HU/commands/admin.json b/hu-HU/commands/admin.json index 6139f6d1..6d158468 100644 --- a/hu-HU/commands/admin.json +++ b/hu-HU/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/hu-HU/commands/config.json b/hu-HU/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/hu-HU/commands/config.json +++ b/hu-HU/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/hu-HU/commands/fun/feedback.json b/hu-HU/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/hu-HU/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/hu-HU/commands/fun/game.json b/hu-HU/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/hu-HU/commands/fun/game.json +++ b/hu-HU/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/hu-HU/commands/fun/leaderboard.json b/hu-HU/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/hu-HU/commands/fun/leaderboard.json +++ b/hu-HU/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/hu-HU/commands/help.json b/hu-HU/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/hu-HU/commands/help.json +++ b/hu-HU/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/hu-HU/commands/misc/privacy.json b/hu-HU/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/hu-HU/commands/misc/privacy.json +++ b/hu-HU/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/hu-HU/commands/misc/status.json b/hu-HU/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/hu-HU/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/hu-HU/commands/settings.json b/hu-HU/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/hu-HU/commands/settings.json +++ b/hu-HU/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/hu-HU/lib/blablaResolve.json b/hu-HU/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/hu-HU/lib/blablaResolve.json +++ b/hu-HU/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/hu-HU/lib/games/replay.json b/hu-HU/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/hu-HU/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/hu-HU/lib/games/twoTruths.json b/hu-HU/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/hu-HU/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/hu-HU/lib/games/unionRaid.json b/hu-HU/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/hu-HU/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/hu-HU/lib/games/zoomWho.json b/hu-HU/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/hu-HU/lib/games/zoomWho.json +++ b/hu-HU/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/hu-HU/lib/searchPicker.json b/hu-HU/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/hu-HU/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/hu-HU/services/ark.json b/hu-HU/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/hu-HU/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/it-IT/commands/account/characters.json b/it-IT/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/it-IT/commands/account/characters.json +++ b/it-IT/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/it-IT/commands/account/investment.json b/it-IT/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/it-IT/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/it-IT/commands/account/link.json b/it-IT/commands/account/link.json index 9c80860c..97f17473 100644 --- a/it-IT/commands/account/link.json +++ b/it-IT/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/it-IT/commands/account/profile.json b/it-IT/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/it-IT/commands/account/profile.json +++ b/it-IT/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/it-IT/commands/account/stats.json b/it-IT/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/it-IT/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/it-IT/commands/account/union-raid.json b/it-IT/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/it-IT/commands/account/union-raid.json +++ b/it-IT/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/it-IT/commands/account/union.json b/it-IT/commands/account/union.json index b15bb177..1c650e96 100644 --- a/it-IT/commands/account/union.json +++ b/it-IT/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/it-IT/commands/admin.json b/it-IT/commands/admin.json index 6139f6d1..6d158468 100644 --- a/it-IT/commands/admin.json +++ b/it-IT/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/it-IT/commands/config.json b/it-IT/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/it-IT/commands/config.json +++ b/it-IT/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/it-IT/commands/fun/feedback.json b/it-IT/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/it-IT/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/it-IT/commands/fun/game.json b/it-IT/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/it-IT/commands/fun/game.json +++ b/it-IT/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/it-IT/commands/fun/leaderboard.json b/it-IT/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/it-IT/commands/fun/leaderboard.json +++ b/it-IT/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/it-IT/commands/help.json b/it-IT/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/it-IT/commands/help.json +++ b/it-IT/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/it-IT/commands/misc/privacy.json b/it-IT/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/it-IT/commands/misc/privacy.json +++ b/it-IT/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/it-IT/commands/misc/status.json b/it-IT/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/it-IT/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/it-IT/commands/settings.json b/it-IT/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/it-IT/commands/settings.json +++ b/it-IT/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/it-IT/lib/blablaResolve.json b/it-IT/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/it-IT/lib/blablaResolve.json +++ b/it-IT/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/it-IT/lib/games/replay.json b/it-IT/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/it-IT/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/it-IT/lib/games/twoTruths.json b/it-IT/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/it-IT/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/it-IT/lib/games/unionRaid.json b/it-IT/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/it-IT/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/it-IT/lib/games/zoomWho.json b/it-IT/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/it-IT/lib/games/zoomWho.json +++ b/it-IT/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/it-IT/lib/searchPicker.json b/it-IT/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/it-IT/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/it-IT/services/ark.json b/it-IT/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/it-IT/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/ja-JP/commands/account/characters.json b/ja-JP/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/ja-JP/commands/account/characters.json +++ b/ja-JP/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/ja-JP/commands/account/investment.json b/ja-JP/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/ja-JP/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/ja-JP/commands/account/link.json b/ja-JP/commands/account/link.json index 9c80860c..97f17473 100644 --- a/ja-JP/commands/account/link.json +++ b/ja-JP/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/ja-JP/commands/account/profile.json b/ja-JP/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/ja-JP/commands/account/profile.json +++ b/ja-JP/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/ja-JP/commands/account/stats.json b/ja-JP/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/ja-JP/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/ja-JP/commands/account/union-raid.json b/ja-JP/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/ja-JP/commands/account/union-raid.json +++ b/ja-JP/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/ja-JP/commands/account/union.json b/ja-JP/commands/account/union.json index b15bb177..1c650e96 100644 --- a/ja-JP/commands/account/union.json +++ b/ja-JP/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/ja-JP/commands/admin.json b/ja-JP/commands/admin.json index 6139f6d1..6d158468 100644 --- a/ja-JP/commands/admin.json +++ b/ja-JP/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/ja-JP/commands/config.json b/ja-JP/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/ja-JP/commands/config.json +++ b/ja-JP/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/ja-JP/commands/fun/feedback.json b/ja-JP/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/ja-JP/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/ja-JP/commands/fun/game.json b/ja-JP/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/ja-JP/commands/fun/game.json +++ b/ja-JP/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/ja-JP/commands/fun/leaderboard.json b/ja-JP/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/ja-JP/commands/fun/leaderboard.json +++ b/ja-JP/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/ja-JP/commands/help.json b/ja-JP/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/ja-JP/commands/help.json +++ b/ja-JP/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/ja-JP/commands/misc/privacy.json b/ja-JP/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/ja-JP/commands/misc/privacy.json +++ b/ja-JP/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/ja-JP/commands/misc/status.json b/ja-JP/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/ja-JP/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/ja-JP/commands/settings.json b/ja-JP/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/ja-JP/commands/settings.json +++ b/ja-JP/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/ja-JP/lib/blablaResolve.json b/ja-JP/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/ja-JP/lib/blablaResolve.json +++ b/ja-JP/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/ja-JP/lib/games/replay.json b/ja-JP/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/ja-JP/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/ja-JP/lib/games/twoTruths.json b/ja-JP/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/ja-JP/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/ja-JP/lib/games/unionRaid.json b/ja-JP/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/ja-JP/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/ja-JP/lib/games/zoomWho.json b/ja-JP/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/ja-JP/lib/games/zoomWho.json +++ b/ja-JP/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/ja-JP/lib/searchPicker.json b/ja-JP/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/ja-JP/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/ja-JP/services/ark.json b/ja-JP/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/ja-JP/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/ko-KR/commands/account/characters.json b/ko-KR/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/ko-KR/commands/account/characters.json +++ b/ko-KR/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/ko-KR/commands/account/investment.json b/ko-KR/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/ko-KR/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/ko-KR/commands/account/link.json b/ko-KR/commands/account/link.json index 9c80860c..97f17473 100644 --- a/ko-KR/commands/account/link.json +++ b/ko-KR/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/ko-KR/commands/account/profile.json b/ko-KR/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/ko-KR/commands/account/profile.json +++ b/ko-KR/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/ko-KR/commands/account/stats.json b/ko-KR/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/ko-KR/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/ko-KR/commands/account/union-raid.json b/ko-KR/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/ko-KR/commands/account/union-raid.json +++ b/ko-KR/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/ko-KR/commands/account/union.json b/ko-KR/commands/account/union.json index b15bb177..1c650e96 100644 --- a/ko-KR/commands/account/union.json +++ b/ko-KR/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/ko-KR/commands/admin.json b/ko-KR/commands/admin.json index 6139f6d1..6d158468 100644 --- a/ko-KR/commands/admin.json +++ b/ko-KR/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/ko-KR/commands/config.json b/ko-KR/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/ko-KR/commands/config.json +++ b/ko-KR/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/ko-KR/commands/fun/feedback.json b/ko-KR/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/ko-KR/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/ko-KR/commands/fun/game.json b/ko-KR/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/ko-KR/commands/fun/game.json +++ b/ko-KR/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/ko-KR/commands/fun/leaderboard.json b/ko-KR/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/ko-KR/commands/fun/leaderboard.json +++ b/ko-KR/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/ko-KR/commands/help.json b/ko-KR/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/ko-KR/commands/help.json +++ b/ko-KR/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/ko-KR/commands/misc/privacy.json b/ko-KR/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/ko-KR/commands/misc/privacy.json +++ b/ko-KR/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/ko-KR/commands/misc/status.json b/ko-KR/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/ko-KR/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/ko-KR/commands/settings.json b/ko-KR/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/ko-KR/commands/settings.json +++ b/ko-KR/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/ko-KR/lib/blablaResolve.json b/ko-KR/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/ko-KR/lib/blablaResolve.json +++ b/ko-KR/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/ko-KR/lib/games/replay.json b/ko-KR/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/ko-KR/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/ko-KR/lib/games/twoTruths.json b/ko-KR/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/ko-KR/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/ko-KR/lib/games/unionRaid.json b/ko-KR/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/ko-KR/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/ko-KR/lib/games/zoomWho.json b/ko-KR/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/ko-KR/lib/games/zoomWho.json +++ b/ko-KR/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/ko-KR/lib/searchPicker.json b/ko-KR/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/ko-KR/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/ko-KR/services/ark.json b/ko-KR/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/ko-KR/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/lt-LT/commands/account/characters.json b/lt-LT/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/lt-LT/commands/account/characters.json +++ b/lt-LT/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/lt-LT/commands/account/investment.json b/lt-LT/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/lt-LT/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/lt-LT/commands/account/link.json b/lt-LT/commands/account/link.json index 9c80860c..97f17473 100644 --- a/lt-LT/commands/account/link.json +++ b/lt-LT/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/lt-LT/commands/account/profile.json b/lt-LT/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/lt-LT/commands/account/profile.json +++ b/lt-LT/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/lt-LT/commands/account/stats.json b/lt-LT/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/lt-LT/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/lt-LT/commands/account/union-raid.json b/lt-LT/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/lt-LT/commands/account/union-raid.json +++ b/lt-LT/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/lt-LT/commands/account/union.json b/lt-LT/commands/account/union.json index b15bb177..1c650e96 100644 --- a/lt-LT/commands/account/union.json +++ b/lt-LT/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/lt-LT/commands/admin.json b/lt-LT/commands/admin.json index 6139f6d1..6d158468 100644 --- a/lt-LT/commands/admin.json +++ b/lt-LT/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/lt-LT/commands/config.json b/lt-LT/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/lt-LT/commands/config.json +++ b/lt-LT/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/lt-LT/commands/fun/feedback.json b/lt-LT/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/lt-LT/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/lt-LT/commands/fun/game.json b/lt-LT/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/lt-LT/commands/fun/game.json +++ b/lt-LT/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/lt-LT/commands/fun/leaderboard.json b/lt-LT/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/lt-LT/commands/fun/leaderboard.json +++ b/lt-LT/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/lt-LT/commands/help.json b/lt-LT/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/lt-LT/commands/help.json +++ b/lt-LT/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/lt-LT/commands/misc/privacy.json b/lt-LT/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/lt-LT/commands/misc/privacy.json +++ b/lt-LT/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/lt-LT/commands/misc/status.json b/lt-LT/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/lt-LT/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/lt-LT/commands/settings.json b/lt-LT/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/lt-LT/commands/settings.json +++ b/lt-LT/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/lt-LT/lib/blablaResolve.json b/lt-LT/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/lt-LT/lib/blablaResolve.json +++ b/lt-LT/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/lt-LT/lib/games/replay.json b/lt-LT/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/lt-LT/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/lt-LT/lib/games/twoTruths.json b/lt-LT/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/lt-LT/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/lt-LT/lib/games/unionRaid.json b/lt-LT/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/lt-LT/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/lt-LT/lib/games/zoomWho.json b/lt-LT/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/lt-LT/lib/games/zoomWho.json +++ b/lt-LT/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/lt-LT/lib/searchPicker.json b/lt-LT/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/lt-LT/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/lt-LT/services/ark.json b/lt-LT/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/lt-LT/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/nl-NL/commands/account/characters.json b/nl-NL/commands/account/characters.json index 06075b1d..51098912 100644 --- a/nl-NL/commands/account/characters.json +++ b/nl-NL/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Geef een geldige zoekopdracht op.", "searchNotFound": "Kon geen gebruikers vinden die overeenkomen met **{{query}}**.", "searchNoProfile": "Gevonden **{{username}}** maar ze hebben geen spel profiel.", + "private": "This user has enabled character privacy.", "noAccount": "Je hebt geen BlaBlaLink account gekoppeld. Gebruik **/blablabla-link** om er een te koppelen of geef een **user_id** of **gebruiker** optie.", "noProfileId": "Kon geen BlaBlaLink-profiel vinden met dat gebruikers-ID.", "noArea": "Kon het spelgebied van deze speler niet bepalen.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/nl-NL/commands/account/investment.json b/nl-NL/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/nl-NL/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/nl-NL/commands/account/link.json b/nl-NL/commands/account/link.json index 9c80860c..97f17473 100644 --- a/nl-NL/commands/account/link.json +++ b/nl-NL/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/nl-NL/commands/account/profile.json b/nl-NL/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/nl-NL/commands/account/profile.json +++ b/nl-NL/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/nl-NL/commands/account/stats.json b/nl-NL/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/nl-NL/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/nl-NL/commands/account/union-raid.json b/nl-NL/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/nl-NL/commands/account/union-raid.json +++ b/nl-NL/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/nl-NL/commands/account/union.json b/nl-NL/commands/account/union.json index b15bb177..1c650e96 100644 --- a/nl-NL/commands/account/union.json +++ b/nl-NL/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/nl-NL/commands/admin.json b/nl-NL/commands/admin.json index 6139f6d1..6d158468 100644 --- a/nl-NL/commands/admin.json +++ b/nl-NL/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/nl-NL/commands/config.json b/nl-NL/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/nl-NL/commands/config.json +++ b/nl-NL/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/nl-NL/commands/fun/feedback.json b/nl-NL/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/nl-NL/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/nl-NL/commands/fun/game.json b/nl-NL/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/nl-NL/commands/fun/game.json +++ b/nl-NL/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/nl-NL/commands/fun/leaderboard.json b/nl-NL/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/nl-NL/commands/fun/leaderboard.json +++ b/nl-NL/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/nl-NL/commands/help.json b/nl-NL/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/nl-NL/commands/help.json +++ b/nl-NL/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/nl-NL/commands/misc/privacy.json b/nl-NL/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/nl-NL/commands/misc/privacy.json +++ b/nl-NL/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/nl-NL/commands/misc/status.json b/nl-NL/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/nl-NL/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/nl-NL/commands/settings.json b/nl-NL/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/nl-NL/commands/settings.json +++ b/nl-NL/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/nl-NL/lib/blablaResolve.json b/nl-NL/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/nl-NL/lib/blablaResolve.json +++ b/nl-NL/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/nl-NL/lib/games/replay.json b/nl-NL/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/nl-NL/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/nl-NL/lib/games/twoTruths.json b/nl-NL/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/nl-NL/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/nl-NL/lib/games/unionRaid.json b/nl-NL/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/nl-NL/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/nl-NL/lib/games/zoomWho.json b/nl-NL/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/nl-NL/lib/games/zoomWho.json +++ b/nl-NL/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/nl-NL/lib/searchPicker.json b/nl-NL/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/nl-NL/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/nl-NL/services/ark.json b/nl-NL/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/nl-NL/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/no-NO/commands/account/characters.json b/no-NO/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/no-NO/commands/account/characters.json +++ b/no-NO/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/no-NO/commands/account/investment.json b/no-NO/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/no-NO/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/no-NO/commands/account/link.json b/no-NO/commands/account/link.json index 9c80860c..97f17473 100644 --- a/no-NO/commands/account/link.json +++ b/no-NO/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/no-NO/commands/account/profile.json b/no-NO/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/no-NO/commands/account/profile.json +++ b/no-NO/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/no-NO/commands/account/stats.json b/no-NO/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/no-NO/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/no-NO/commands/account/union-raid.json b/no-NO/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/no-NO/commands/account/union-raid.json +++ b/no-NO/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/no-NO/commands/account/union.json b/no-NO/commands/account/union.json index b15bb177..1c650e96 100644 --- a/no-NO/commands/account/union.json +++ b/no-NO/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/no-NO/commands/admin.json b/no-NO/commands/admin.json index 6139f6d1..6d158468 100644 --- a/no-NO/commands/admin.json +++ b/no-NO/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/no-NO/commands/config.json b/no-NO/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/no-NO/commands/config.json +++ b/no-NO/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/no-NO/commands/fun/feedback.json b/no-NO/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/no-NO/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/no-NO/commands/fun/game.json b/no-NO/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/no-NO/commands/fun/game.json +++ b/no-NO/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/no-NO/commands/fun/leaderboard.json b/no-NO/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/no-NO/commands/fun/leaderboard.json +++ b/no-NO/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/no-NO/commands/help.json b/no-NO/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/no-NO/commands/help.json +++ b/no-NO/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/no-NO/commands/misc/privacy.json b/no-NO/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/no-NO/commands/misc/privacy.json +++ b/no-NO/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/no-NO/commands/misc/status.json b/no-NO/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/no-NO/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/no-NO/commands/settings.json b/no-NO/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/no-NO/commands/settings.json +++ b/no-NO/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/no-NO/lib/blablaResolve.json b/no-NO/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/no-NO/lib/blablaResolve.json +++ b/no-NO/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/no-NO/lib/games/replay.json b/no-NO/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/no-NO/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/no-NO/lib/games/twoTruths.json b/no-NO/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/no-NO/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/no-NO/lib/games/unionRaid.json b/no-NO/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/no-NO/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/no-NO/lib/games/zoomWho.json b/no-NO/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/no-NO/lib/games/zoomWho.json +++ b/no-NO/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/no-NO/lib/searchPicker.json b/no-NO/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/no-NO/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/no-NO/services/ark.json b/no-NO/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/no-NO/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/pl-PL/commands/account/characters.json b/pl-PL/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/pl-PL/commands/account/characters.json +++ b/pl-PL/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/pl-PL/commands/account/investment.json b/pl-PL/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/pl-PL/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/pl-PL/commands/account/link.json b/pl-PL/commands/account/link.json index 9c80860c..97f17473 100644 --- a/pl-PL/commands/account/link.json +++ b/pl-PL/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/pl-PL/commands/account/profile.json b/pl-PL/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/pl-PL/commands/account/profile.json +++ b/pl-PL/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/pl-PL/commands/account/stats.json b/pl-PL/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/pl-PL/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/pl-PL/commands/account/union-raid.json b/pl-PL/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/pl-PL/commands/account/union-raid.json +++ b/pl-PL/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/pl-PL/commands/account/union.json b/pl-PL/commands/account/union.json index b15bb177..1c650e96 100644 --- a/pl-PL/commands/account/union.json +++ b/pl-PL/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/pl-PL/commands/admin.json b/pl-PL/commands/admin.json index 6139f6d1..6d158468 100644 --- a/pl-PL/commands/admin.json +++ b/pl-PL/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/pl-PL/commands/config.json b/pl-PL/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/pl-PL/commands/config.json +++ b/pl-PL/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/pl-PL/commands/fun/feedback.json b/pl-PL/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/pl-PL/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/pl-PL/commands/fun/game.json b/pl-PL/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/pl-PL/commands/fun/game.json +++ b/pl-PL/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/pl-PL/commands/fun/leaderboard.json b/pl-PL/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/pl-PL/commands/fun/leaderboard.json +++ b/pl-PL/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/pl-PL/commands/help.json b/pl-PL/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/pl-PL/commands/help.json +++ b/pl-PL/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/pl-PL/commands/misc/privacy.json b/pl-PL/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/pl-PL/commands/misc/privacy.json +++ b/pl-PL/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/pl-PL/commands/misc/status.json b/pl-PL/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/pl-PL/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/pl-PL/commands/settings.json b/pl-PL/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/pl-PL/commands/settings.json +++ b/pl-PL/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/pl-PL/lib/blablaResolve.json b/pl-PL/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/pl-PL/lib/blablaResolve.json +++ b/pl-PL/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/pl-PL/lib/games/replay.json b/pl-PL/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/pl-PL/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/pl-PL/lib/games/twoTruths.json b/pl-PL/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/pl-PL/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/pl-PL/lib/games/unionRaid.json b/pl-PL/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/pl-PL/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/pl-PL/lib/games/zoomWho.json b/pl-PL/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/pl-PL/lib/games/zoomWho.json +++ b/pl-PL/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/pl-PL/lib/searchPicker.json b/pl-PL/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/pl-PL/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/pl-PL/services/ark.json b/pl-PL/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/pl-PL/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/pt-PT/commands/account/characters.json b/pt-PT/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/pt-PT/commands/account/characters.json +++ b/pt-PT/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/pt-PT/commands/account/investment.json b/pt-PT/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/pt-PT/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/pt-PT/commands/account/link.json b/pt-PT/commands/account/link.json index 9c80860c..97f17473 100644 --- a/pt-PT/commands/account/link.json +++ b/pt-PT/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/pt-PT/commands/account/profile.json b/pt-PT/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/pt-PT/commands/account/profile.json +++ b/pt-PT/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/pt-PT/commands/account/stats.json b/pt-PT/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/pt-PT/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/pt-PT/commands/account/union-raid.json b/pt-PT/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/pt-PT/commands/account/union-raid.json +++ b/pt-PT/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/pt-PT/commands/account/union.json b/pt-PT/commands/account/union.json index b15bb177..1c650e96 100644 --- a/pt-PT/commands/account/union.json +++ b/pt-PT/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/pt-PT/commands/admin.json b/pt-PT/commands/admin.json index 6139f6d1..6d158468 100644 --- a/pt-PT/commands/admin.json +++ b/pt-PT/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/pt-PT/commands/config.json b/pt-PT/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/pt-PT/commands/config.json +++ b/pt-PT/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/pt-PT/commands/fun/feedback.json b/pt-PT/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/pt-PT/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/pt-PT/commands/fun/game.json b/pt-PT/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/pt-PT/commands/fun/game.json +++ b/pt-PT/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/pt-PT/commands/fun/leaderboard.json b/pt-PT/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/pt-PT/commands/fun/leaderboard.json +++ b/pt-PT/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/pt-PT/commands/help.json b/pt-PT/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/pt-PT/commands/help.json +++ b/pt-PT/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/pt-PT/commands/misc/privacy.json b/pt-PT/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/pt-PT/commands/misc/privacy.json +++ b/pt-PT/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/pt-PT/commands/misc/status.json b/pt-PT/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/pt-PT/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/pt-PT/commands/settings.json b/pt-PT/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/pt-PT/commands/settings.json +++ b/pt-PT/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/pt-PT/lib/blablaResolve.json b/pt-PT/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/pt-PT/lib/blablaResolve.json +++ b/pt-PT/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/pt-PT/lib/games/replay.json b/pt-PT/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/pt-PT/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/pt-PT/lib/games/twoTruths.json b/pt-PT/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/pt-PT/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/pt-PT/lib/games/unionRaid.json b/pt-PT/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/pt-PT/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/pt-PT/lib/games/zoomWho.json b/pt-PT/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/pt-PT/lib/games/zoomWho.json +++ b/pt-PT/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/pt-PT/lib/searchPicker.json b/pt-PT/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/pt-PT/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/pt-PT/services/ark.json b/pt-PT/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/pt-PT/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/ro-RO/commands/account/characters.json b/ro-RO/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/ro-RO/commands/account/characters.json +++ b/ro-RO/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/ro-RO/commands/account/investment.json b/ro-RO/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/ro-RO/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/ro-RO/commands/account/link.json b/ro-RO/commands/account/link.json index 9c80860c..97f17473 100644 --- a/ro-RO/commands/account/link.json +++ b/ro-RO/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/ro-RO/commands/account/profile.json b/ro-RO/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/ro-RO/commands/account/profile.json +++ b/ro-RO/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/ro-RO/commands/account/stats.json b/ro-RO/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/ro-RO/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/ro-RO/commands/account/union-raid.json b/ro-RO/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/ro-RO/commands/account/union-raid.json +++ b/ro-RO/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/ro-RO/commands/account/union.json b/ro-RO/commands/account/union.json index b15bb177..1c650e96 100644 --- a/ro-RO/commands/account/union.json +++ b/ro-RO/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/ro-RO/commands/admin.json b/ro-RO/commands/admin.json index 6139f6d1..6d158468 100644 --- a/ro-RO/commands/admin.json +++ b/ro-RO/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/ro-RO/commands/config.json b/ro-RO/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/ro-RO/commands/config.json +++ b/ro-RO/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/ro-RO/commands/fun/feedback.json b/ro-RO/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/ro-RO/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/ro-RO/commands/fun/game.json b/ro-RO/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/ro-RO/commands/fun/game.json +++ b/ro-RO/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/ro-RO/commands/fun/leaderboard.json b/ro-RO/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/ro-RO/commands/fun/leaderboard.json +++ b/ro-RO/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/ro-RO/commands/help.json b/ro-RO/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/ro-RO/commands/help.json +++ b/ro-RO/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/ro-RO/commands/misc/privacy.json b/ro-RO/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/ro-RO/commands/misc/privacy.json +++ b/ro-RO/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/ro-RO/commands/misc/status.json b/ro-RO/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/ro-RO/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/ro-RO/commands/settings.json b/ro-RO/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/ro-RO/commands/settings.json +++ b/ro-RO/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/ro-RO/lib/blablaResolve.json b/ro-RO/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/ro-RO/lib/blablaResolve.json +++ b/ro-RO/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/ro-RO/lib/games/replay.json b/ro-RO/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/ro-RO/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/ro-RO/lib/games/twoTruths.json b/ro-RO/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/ro-RO/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/ro-RO/lib/games/unionRaid.json b/ro-RO/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/ro-RO/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/ro-RO/lib/games/zoomWho.json b/ro-RO/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/ro-RO/lib/games/zoomWho.json +++ b/ro-RO/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/ro-RO/lib/searchPicker.json b/ro-RO/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/ro-RO/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/ro-RO/services/ark.json b/ro-RO/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/ro-RO/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/ru-RU/commands/account/characters.json b/ru-RU/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/ru-RU/commands/account/characters.json +++ b/ru-RU/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/ru-RU/commands/account/investment.json b/ru-RU/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/ru-RU/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/ru-RU/commands/account/link.json b/ru-RU/commands/account/link.json index 9c80860c..97f17473 100644 --- a/ru-RU/commands/account/link.json +++ b/ru-RU/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/ru-RU/commands/account/profile.json b/ru-RU/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/ru-RU/commands/account/profile.json +++ b/ru-RU/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/ru-RU/commands/account/stats.json b/ru-RU/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/ru-RU/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/ru-RU/commands/account/union-raid.json b/ru-RU/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/ru-RU/commands/account/union-raid.json +++ b/ru-RU/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/ru-RU/commands/account/union.json b/ru-RU/commands/account/union.json index b15bb177..1c650e96 100644 --- a/ru-RU/commands/account/union.json +++ b/ru-RU/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/ru-RU/commands/admin.json b/ru-RU/commands/admin.json index 6139f6d1..6d158468 100644 --- a/ru-RU/commands/admin.json +++ b/ru-RU/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/ru-RU/commands/config.json b/ru-RU/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/ru-RU/commands/config.json +++ b/ru-RU/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/ru-RU/commands/fun/feedback.json b/ru-RU/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/ru-RU/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/ru-RU/commands/fun/game.json b/ru-RU/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/ru-RU/commands/fun/game.json +++ b/ru-RU/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/ru-RU/commands/fun/leaderboard.json b/ru-RU/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/ru-RU/commands/fun/leaderboard.json +++ b/ru-RU/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/ru-RU/commands/help.json b/ru-RU/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/ru-RU/commands/help.json +++ b/ru-RU/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/ru-RU/commands/misc/privacy.json b/ru-RU/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/ru-RU/commands/misc/privacy.json +++ b/ru-RU/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/ru-RU/commands/misc/status.json b/ru-RU/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/ru-RU/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/ru-RU/commands/settings.json b/ru-RU/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/ru-RU/commands/settings.json +++ b/ru-RU/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/ru-RU/lib/blablaResolve.json b/ru-RU/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/ru-RU/lib/blablaResolve.json +++ b/ru-RU/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/ru-RU/lib/games/replay.json b/ru-RU/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/ru-RU/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/ru-RU/lib/games/twoTruths.json b/ru-RU/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/ru-RU/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/ru-RU/lib/games/unionRaid.json b/ru-RU/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/ru-RU/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/ru-RU/lib/games/zoomWho.json b/ru-RU/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/ru-RU/lib/games/zoomWho.json +++ b/ru-RU/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/ru-RU/lib/searchPicker.json b/ru-RU/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/ru-RU/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/ru-RU/services/ark.json b/ru-RU/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/ru-RU/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/sv-SE/commands/account/characters.json b/sv-SE/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/sv-SE/commands/account/characters.json +++ b/sv-SE/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/sv-SE/commands/account/investment.json b/sv-SE/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/sv-SE/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/sv-SE/commands/account/link.json b/sv-SE/commands/account/link.json index 9c80860c..97f17473 100644 --- a/sv-SE/commands/account/link.json +++ b/sv-SE/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/sv-SE/commands/account/profile.json b/sv-SE/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/sv-SE/commands/account/profile.json +++ b/sv-SE/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/sv-SE/commands/account/stats.json b/sv-SE/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/sv-SE/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/sv-SE/commands/account/union-raid.json b/sv-SE/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/sv-SE/commands/account/union-raid.json +++ b/sv-SE/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/sv-SE/commands/account/union.json b/sv-SE/commands/account/union.json index b15bb177..1c650e96 100644 --- a/sv-SE/commands/account/union.json +++ b/sv-SE/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/sv-SE/commands/admin.json b/sv-SE/commands/admin.json index 6139f6d1..6d158468 100644 --- a/sv-SE/commands/admin.json +++ b/sv-SE/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/sv-SE/commands/config.json b/sv-SE/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/sv-SE/commands/config.json +++ b/sv-SE/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/sv-SE/commands/fun/feedback.json b/sv-SE/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/sv-SE/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/sv-SE/commands/fun/game.json b/sv-SE/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/sv-SE/commands/fun/game.json +++ b/sv-SE/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/sv-SE/commands/fun/leaderboard.json b/sv-SE/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/sv-SE/commands/fun/leaderboard.json +++ b/sv-SE/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/sv-SE/commands/help.json b/sv-SE/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/sv-SE/commands/help.json +++ b/sv-SE/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/sv-SE/commands/misc/privacy.json b/sv-SE/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/sv-SE/commands/misc/privacy.json +++ b/sv-SE/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/sv-SE/commands/misc/status.json b/sv-SE/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/sv-SE/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/sv-SE/commands/settings.json b/sv-SE/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/sv-SE/commands/settings.json +++ b/sv-SE/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/sv-SE/lib/blablaResolve.json b/sv-SE/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/sv-SE/lib/blablaResolve.json +++ b/sv-SE/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/sv-SE/lib/games/replay.json b/sv-SE/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/sv-SE/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/sv-SE/lib/games/twoTruths.json b/sv-SE/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/sv-SE/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/sv-SE/lib/games/unionRaid.json b/sv-SE/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/sv-SE/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/sv-SE/lib/games/zoomWho.json b/sv-SE/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/sv-SE/lib/games/zoomWho.json +++ b/sv-SE/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/sv-SE/lib/searchPicker.json b/sv-SE/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/sv-SE/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/sv-SE/services/ark.json b/sv-SE/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/sv-SE/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/th-TH/commands/account/characters.json b/th-TH/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/th-TH/commands/account/characters.json +++ b/th-TH/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/th-TH/commands/account/investment.json b/th-TH/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/th-TH/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/th-TH/commands/account/link.json b/th-TH/commands/account/link.json index 9c80860c..97f17473 100644 --- a/th-TH/commands/account/link.json +++ b/th-TH/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/th-TH/commands/account/profile.json b/th-TH/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/th-TH/commands/account/profile.json +++ b/th-TH/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/th-TH/commands/account/stats.json b/th-TH/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/th-TH/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/th-TH/commands/account/union-raid.json b/th-TH/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/th-TH/commands/account/union-raid.json +++ b/th-TH/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/th-TH/commands/account/union.json b/th-TH/commands/account/union.json index b15bb177..1c650e96 100644 --- a/th-TH/commands/account/union.json +++ b/th-TH/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/th-TH/commands/admin.json b/th-TH/commands/admin.json index 6139f6d1..6d158468 100644 --- a/th-TH/commands/admin.json +++ b/th-TH/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/th-TH/commands/config.json b/th-TH/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/th-TH/commands/config.json +++ b/th-TH/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/th-TH/commands/fun/feedback.json b/th-TH/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/th-TH/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/th-TH/commands/fun/game.json b/th-TH/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/th-TH/commands/fun/game.json +++ b/th-TH/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/th-TH/commands/fun/leaderboard.json b/th-TH/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/th-TH/commands/fun/leaderboard.json +++ b/th-TH/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/th-TH/commands/help.json b/th-TH/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/th-TH/commands/help.json +++ b/th-TH/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/th-TH/commands/misc/privacy.json b/th-TH/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/th-TH/commands/misc/privacy.json +++ b/th-TH/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/th-TH/commands/misc/status.json b/th-TH/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/th-TH/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/th-TH/commands/settings.json b/th-TH/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/th-TH/commands/settings.json +++ b/th-TH/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/th-TH/lib/blablaResolve.json b/th-TH/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/th-TH/lib/blablaResolve.json +++ b/th-TH/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/th-TH/lib/games/replay.json b/th-TH/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/th-TH/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/th-TH/lib/games/twoTruths.json b/th-TH/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/th-TH/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/th-TH/lib/games/unionRaid.json b/th-TH/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/th-TH/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/th-TH/lib/games/zoomWho.json b/th-TH/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/th-TH/lib/games/zoomWho.json +++ b/th-TH/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/th-TH/lib/searchPicker.json b/th-TH/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/th-TH/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/th-TH/services/ark.json b/th-TH/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/th-TH/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/tr-TR/commands/account/characters.json b/tr-TR/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/tr-TR/commands/account/characters.json +++ b/tr-TR/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/tr-TR/commands/account/investment.json b/tr-TR/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/tr-TR/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/tr-TR/commands/account/link.json b/tr-TR/commands/account/link.json index 9c80860c..97f17473 100644 --- a/tr-TR/commands/account/link.json +++ b/tr-TR/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/tr-TR/commands/account/profile.json b/tr-TR/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/tr-TR/commands/account/profile.json +++ b/tr-TR/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/tr-TR/commands/account/stats.json b/tr-TR/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/tr-TR/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/tr-TR/commands/account/union-raid.json b/tr-TR/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/tr-TR/commands/account/union-raid.json +++ b/tr-TR/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/tr-TR/commands/account/union.json b/tr-TR/commands/account/union.json index b15bb177..1c650e96 100644 --- a/tr-TR/commands/account/union.json +++ b/tr-TR/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/tr-TR/commands/admin.json b/tr-TR/commands/admin.json index 6139f6d1..6d158468 100644 --- a/tr-TR/commands/admin.json +++ b/tr-TR/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/tr-TR/commands/config.json b/tr-TR/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/tr-TR/commands/config.json +++ b/tr-TR/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/tr-TR/commands/fun/feedback.json b/tr-TR/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/tr-TR/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/tr-TR/commands/fun/game.json b/tr-TR/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/tr-TR/commands/fun/game.json +++ b/tr-TR/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/tr-TR/commands/fun/leaderboard.json b/tr-TR/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/tr-TR/commands/fun/leaderboard.json +++ b/tr-TR/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/tr-TR/commands/help.json b/tr-TR/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/tr-TR/commands/help.json +++ b/tr-TR/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/tr-TR/commands/misc/privacy.json b/tr-TR/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/tr-TR/commands/misc/privacy.json +++ b/tr-TR/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/tr-TR/commands/misc/status.json b/tr-TR/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/tr-TR/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/tr-TR/commands/settings.json b/tr-TR/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/tr-TR/commands/settings.json +++ b/tr-TR/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/tr-TR/lib/blablaResolve.json b/tr-TR/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/tr-TR/lib/blablaResolve.json +++ b/tr-TR/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/tr-TR/lib/games/replay.json b/tr-TR/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/tr-TR/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/tr-TR/lib/games/twoTruths.json b/tr-TR/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/tr-TR/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/tr-TR/lib/games/unionRaid.json b/tr-TR/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/tr-TR/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/tr-TR/lib/games/zoomWho.json b/tr-TR/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/tr-TR/lib/games/zoomWho.json +++ b/tr-TR/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/tr-TR/lib/searchPicker.json b/tr-TR/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/tr-TR/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/tr-TR/services/ark.json b/tr-TR/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/tr-TR/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/uk-UA/commands/account/characters.json b/uk-UA/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/uk-UA/commands/account/characters.json +++ b/uk-UA/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/uk-UA/commands/account/investment.json b/uk-UA/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/uk-UA/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/uk-UA/commands/account/link.json b/uk-UA/commands/account/link.json index 9c80860c..97f17473 100644 --- a/uk-UA/commands/account/link.json +++ b/uk-UA/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/uk-UA/commands/account/profile.json b/uk-UA/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/uk-UA/commands/account/profile.json +++ b/uk-UA/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/uk-UA/commands/account/stats.json b/uk-UA/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/uk-UA/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/uk-UA/commands/account/union-raid.json b/uk-UA/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/uk-UA/commands/account/union-raid.json +++ b/uk-UA/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/uk-UA/commands/account/union.json b/uk-UA/commands/account/union.json index b15bb177..1c650e96 100644 --- a/uk-UA/commands/account/union.json +++ b/uk-UA/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/uk-UA/commands/admin.json b/uk-UA/commands/admin.json index 6139f6d1..6d158468 100644 --- a/uk-UA/commands/admin.json +++ b/uk-UA/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/uk-UA/commands/config.json b/uk-UA/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/uk-UA/commands/config.json +++ b/uk-UA/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/uk-UA/commands/fun/feedback.json b/uk-UA/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/uk-UA/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/uk-UA/commands/fun/game.json b/uk-UA/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/uk-UA/commands/fun/game.json +++ b/uk-UA/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/uk-UA/commands/fun/leaderboard.json b/uk-UA/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/uk-UA/commands/fun/leaderboard.json +++ b/uk-UA/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/uk-UA/commands/help.json b/uk-UA/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/uk-UA/commands/help.json +++ b/uk-UA/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/uk-UA/commands/misc/privacy.json b/uk-UA/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/uk-UA/commands/misc/privacy.json +++ b/uk-UA/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/uk-UA/commands/misc/status.json b/uk-UA/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/uk-UA/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/uk-UA/commands/settings.json b/uk-UA/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/uk-UA/commands/settings.json +++ b/uk-UA/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/uk-UA/lib/blablaResolve.json b/uk-UA/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/uk-UA/lib/blablaResolve.json +++ b/uk-UA/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/uk-UA/lib/games/replay.json b/uk-UA/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/uk-UA/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/uk-UA/lib/games/twoTruths.json b/uk-UA/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/uk-UA/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/uk-UA/lib/games/unionRaid.json b/uk-UA/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/uk-UA/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/uk-UA/lib/games/zoomWho.json b/uk-UA/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/uk-UA/lib/games/zoomWho.json +++ b/uk-UA/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/uk-UA/lib/searchPicker.json b/uk-UA/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/uk-UA/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/uk-UA/services/ark.json b/uk-UA/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/uk-UA/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/vi-VN/commands/account/characters.json b/vi-VN/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/vi-VN/commands/account/characters.json +++ b/vi-VN/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/vi-VN/commands/account/investment.json b/vi-VN/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/vi-VN/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/vi-VN/commands/account/link.json b/vi-VN/commands/account/link.json index 9c80860c..97f17473 100644 --- a/vi-VN/commands/account/link.json +++ b/vi-VN/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/vi-VN/commands/account/profile.json b/vi-VN/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/vi-VN/commands/account/profile.json +++ b/vi-VN/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/vi-VN/commands/account/stats.json b/vi-VN/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/vi-VN/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/vi-VN/commands/account/union-raid.json b/vi-VN/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/vi-VN/commands/account/union-raid.json +++ b/vi-VN/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/vi-VN/commands/account/union.json b/vi-VN/commands/account/union.json index b15bb177..1c650e96 100644 --- a/vi-VN/commands/account/union.json +++ b/vi-VN/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/vi-VN/commands/admin.json b/vi-VN/commands/admin.json index 6139f6d1..6d158468 100644 --- a/vi-VN/commands/admin.json +++ b/vi-VN/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/vi-VN/commands/config.json b/vi-VN/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/vi-VN/commands/config.json +++ b/vi-VN/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/vi-VN/commands/fun/feedback.json b/vi-VN/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/vi-VN/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/vi-VN/commands/fun/game.json b/vi-VN/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/vi-VN/commands/fun/game.json +++ b/vi-VN/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/vi-VN/commands/fun/leaderboard.json b/vi-VN/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/vi-VN/commands/fun/leaderboard.json +++ b/vi-VN/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/vi-VN/commands/help.json b/vi-VN/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/vi-VN/commands/help.json +++ b/vi-VN/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/vi-VN/commands/misc/privacy.json b/vi-VN/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/vi-VN/commands/misc/privacy.json +++ b/vi-VN/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/vi-VN/commands/misc/status.json b/vi-VN/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/vi-VN/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/vi-VN/commands/settings.json b/vi-VN/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/vi-VN/commands/settings.json +++ b/vi-VN/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/vi-VN/lib/blablaResolve.json b/vi-VN/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/vi-VN/lib/blablaResolve.json +++ b/vi-VN/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/vi-VN/lib/games/replay.json b/vi-VN/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/vi-VN/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/vi-VN/lib/games/twoTruths.json b/vi-VN/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/vi-VN/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/vi-VN/lib/games/unionRaid.json b/vi-VN/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/vi-VN/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/vi-VN/lib/games/zoomWho.json b/vi-VN/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/vi-VN/lib/games/zoomWho.json +++ b/vi-VN/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/vi-VN/lib/searchPicker.json b/vi-VN/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/vi-VN/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/vi-VN/services/ark.json b/vi-VN/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/vi-VN/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +} diff --git a/zh-CN/commands/account/characters.json b/zh-CN/commands/account/characters.json index 1351cb0a..662b953e 100644 --- a/zh-CN/commands/account/characters.json +++ b/zh-CN/commands/account/characters.json @@ -8,6 +8,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled character privacy.", "noAccount": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", "noProfileId": "Could not find a BlaBlaLink profile with that ID.", "noArea": "Could not determine this player's game area.", @@ -16,7 +17,7 @@ "noGameAccount": "Could not load character data โ€” {{msg}}", "loadFailed": "Failed to load character data. Please try again later.", "noCookie": "Could not load character data. Link your account with `/blabla-link` to view rosters, or provide a valid `user_id`.", - "sessionExpired": "Session expired. Use /characters again.", + "sessionExpired": "Your session expired. Showing data from the bot's account.", "noCharacters": "No characters to display.", "rosterDesc": "{{nickname}}'s Roster โ€” {{count}} characters", "rosterTitle": "NIKKE Roster", @@ -63,5 +64,47 @@ "wind": "Wind", "electric": "Electric", "iron": "Iron" + }, + "stats": { + "incElementDmg": { + "short": "Element Dmg", + "long": "Increased Elemental Advantage Dmg" + }, + "statAtk": { + "short": "Atk", + "long": "Increased ATK" + }, + "statAmmoLoad": { + "short": "Ammo Cap", + "long": "Increased Max Ammunition Capacity" + }, + "statChargeTime": { + "short": "Charge Spd", + "long": "Increased Charge Speed" + }, + "statChargeDamage": { + "short": "Charge Dmg", + "long": "Increased Charge Damage" + }, + "statCritical": { + "short": "Crit Rate", + "long": "Increased Critical Rate" + }, + "statCriticalDamage": { + "short": "Crit Dmg", + "long": "Increased Critical Damage" + }, + "statDef": { + "short": "Def", + "long": "Increased DEF" + }, + "statAccuracyCircle": { + "short": "Accuracy", + "long": "Increased Hit Rate" + }, + "onHitRatio": { + "short": "Hit Rate", + "long": "Increased Hit Rate" + } } } diff --git a/zh-CN/commands/account/investment.json b/zh-CN/commands/account/investment.json new file mode 100644 index 00000000..ccf2ba9d --- /dev/null +++ b/zh-CN/commands/account/investment.json @@ -0,0 +1,6 @@ +{ + "button": "Investment History", + "historyTitle": "**Investment History**", + "noChanges": "No investment changes recorded yet", + "noChangesHint": "The first observation becomes the baseline; later changed builds appear here." +} \ No newline at end of file diff --git a/zh-CN/commands/account/link.json b/zh-CN/commands/account/link.json index 9c80860c..97f17473 100644 --- a/zh-CN/commands/account/link.json +++ b/zh-CN/commands/account/link.json @@ -2,49 +2,7 @@ "name": "blabla-link", "description": "Link your BlaBlaLink account to your Discord account", "prefixOnly": "Use /blabla-link to link your BlaBlaLink account.", - "alreadyLinked": "Your Discord account is already linked to BlaBlaLink user **{{id}}**. Use /blabla-relink to change methods or /blabla-unlink to unlink.", - "selectRegionTitle": "Select Region", - "selectRegionDesc": "Choose your BlaBlaLink server region to get started.\n\n**๐ŸŒ Global** โ€” JP / KR / NA / SEA / Global\n**๐ŸŒ HK/MC/TW** โ€” Hong Kong / Macau / Taiwan", - "chooseMethod": "**Link Account โ€” {{emoji}} {{region}}**\n\nChoose how you want to link your BlaBlaLink account:\n\n**By User ID** โ€” Paste your BlaBlaLink user ID and verify via [profile signature]({{url}}).\n**By Cookie** โ€” Paste your browser cookies from BlaBlaLink.", - "noVerification": "No pending verification. Start over with /blabla-link.", - "timeExpired": "Time expired. Please start over with /blabla-link.", - "fetchProfileFailed": "Could not fetch your BlaBlaLink profile. Please try again later.", - "phraseNotFound": "The phrase wasn't found in your BlaBlaLink signature yet.\nWait 1-2 minutes and click the button again.", - "verified": "โœ… Verification successful! Your Discord account is now linked to **{{username}}**.", - "invalidUserId": "Invalid user ID. Please enter the numeric ID from your BlaBlaLink profile.", - "accountNotFound": "Could not find a BlaBlaLink account with that ID. Double-check your user ID and try again.", - "bothRequired": "Both User ID and Auth Token are required.", - "invalidCredentials": "Could not validate these credentials. Make sure the values are correct and you're still logged in on BlaBlaLink.", - "linkedCookie": "โœ… Successfully linked to **{{username}}** via cookies! Your session will be automatically refreshed.", - "verifyFound": "โœ… Found **{{username}}**!\n\nTo verify ownership, put this phrase in your [BlaBlaLink signature]({{url}}), then click check:\n**{{phrase}}**\n\nThen click the button below to check.\n_This verification will expire ._", - "labels": { - "global": "Global", - "hkMcTw": "HK/MC/TW", - "byUserId": "By User ID", - "byCookie": "By Cookie", - "changeRegion": "Change Region", - "checkVerification": "Check Verification", - "insertCookies": "Insert Cookies", - "pc": "PC", - "android": "Android", - "ios": "iOS" - }, - "modals": { - "byUserIdTitle": "Link by User ID", - "userIdLabel": "Paste your BlaBlaLink user ID", - "userIdPlaceholder": "e.g. 9277418340955554060", - "byCookieTitle": "Link by Cookie", - "cookieUserIdLabel": "User ID (game_openid)", - "cookieUserIdPlaceholder": "Paste the game_openid value", - "cookieTokenLabel": "Auth Token (game_token)", - "cookieTokenPlaceholder": "Paste the game_token value" - }, - "cookieInstructions": { - "pcTitle": "Link by Cookie โ€” PC", - "pcDesc": "Follow these steps to get your BlaBlaLink cookies.\n\n**Step 1** โ€” Go to **https://www.blablalink.com** in your browser and make sure you're logged in.\n\n**Step 2** โ€” Press **F12** (or right-click โ†’ Inspect) to open Developer Tools.\n\n**Step 3** โ€” Go to the **Application** tab (or **Storage** on some browsers).\n\n**Step 4** โ€” On the left, expand **Cookies** and click **https://www.blablalink.com**.\n\n**Step 5** โ€” Click the **Insert Cookies** button below and copy the **game_openid** and **game_token** values.", - "androidTitle": "Link by Cookie โ€” Android", - "androidDesc": "Follow these steps to get your BlaBlaLink cookies from an Android device.\n\n**Step 1** โ€” Open **Chrome** on your Android device, go to **https://www.blablalink.com**, and log in.\n\n**Step 2** โ€” In the address bar, type or paste this:\n```js\njavascript:prompt('',document.cookie)\n```\n> โš ๏ธ If Chrome removes the `javascript:` prefix, save it as a bookmark and open it while on BlaBlaLink.\n\n**Step 3** โ€” Copy the text that appears in the popup.\n\n**Step 4** โ€” Click the **Insert Cookies** button below and paste the result.", - "iosTitle": "Link by Cookie โ€” iOS", - "iosDesc": "iOS instructions are coming soon." - } + "panelDescription": "Account linking happens on the web panel. Click below to open it.", + "panelButton": "Open link panel", + "panelUrlMissing": "The web panel is not configured. Ask the bot owner to set `PANEL_URL`." } diff --git a/zh-CN/commands/account/profile.json b/zh-CN/commands/account/profile.json index e35402c7..8ea94464 100644 --- a/zh-CN/commands/account/profile.json +++ b/zh-CN/commands/account/profile.json @@ -9,6 +9,7 @@ "invalidSearch": "Please provide a valid search query.", "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", + "private": "This user has enabled BlaBlaLink profile privacy.", "sessionExpiring": "Your BlaBlaLink session expires in {{days}} day(s). Re-link with /blabla-link to avoid interruption.", "fields": { "blablalink": "BlaBlaLink", diff --git a/zh-CN/commands/account/stats.json b/zh-CN/commands/account/stats.json new file mode 100644 index 00000000..a0ed6a70 --- /dev/null +++ b/zh-CN/commands/account/stats.json @@ -0,0 +1,5 @@ +{ + "name": "stats", + "description": "View a NIKKE's stats for a player", + "prefixOnly": "Use /stats nikke: to view a character's stats." +} \ No newline at end of file diff --git a/zh-CN/commands/account/union-raid.json b/zh-CN/commands/account/union-raid.json index 04b25b31..2d5f6193 100644 --- a/zh-CN/commands/account/union-raid.json +++ b/zh-CN/commands/account/union-raid.json @@ -11,6 +11,9 @@ "dataNotAvailableDesc": "Raid data for past seasons is only accessible to current guild members. Join the guild to view this season's details.", "fetchFailed": "Could not fetch season data.", "noParticipants": "There's Nothing to Show here.", + "memberTitle": "Member Squad", + "attemptPage": "Attempt {{current}} of {{total}}", + "attemptsLabel": "{{count}} attempts", "dayLabel": "Day {{day}}", "allEntries": "All Entries", "filteredResults": "Filtered Results", @@ -33,6 +36,9 @@ "selectDay": "Select a day...", "difficulty": "Difficulty", "level": "Level", - "bossFilter": "Boss" + "bossFilter": "Boss", + "member": "Member (page {{page}})", + "memberAll": "All Members", + "attempt": "Select attempt... (page {{page}})" } } diff --git a/zh-CN/commands/account/union.json b/zh-CN/commands/account/union.json index b15bb177..1c650e96 100644 --- a/zh-CN/commands/account/union.json +++ b/zh-CN/commands/account/union.json @@ -7,6 +7,14 @@ "guildRank": "Rank: **{{rank}}**", "ranking": "Ranking #{{num}}", "membersLabel": "{{count}}/{{max}} Members", + "filterLabels": { + "area": "Server", + "rank": "Rank", + "top": "Top %", + "synchro": "Synchro Level", + "synchroMin": "Min sync level", + "synchroMax": "Max sync level" + }, "fields": { "description": "Description", "guildInfo": "Guild Info", diff --git a/zh-CN/commands/admin.json b/zh-CN/commands/admin.json index 6139f6d1..6d158468 100644 --- a/zh-CN/commands/admin.json +++ b/zh-CN/commands/admin.json @@ -8,5 +8,14 @@ "cleared": "Cleared {{deleted}} emoji(s)", "clearedWithFailed": "Cleared {{deleted}} emoji(s) ({{failed}} failed)", "restartNote": "Restart the bot to re-upload from local assets." + }, + "eval": { + "name": "eval", + "description": "Run arbitrary JavaScript in the bot (owner only). Use the prefix form: Enikk eval .", + "slashOnly": "This command is only available as a prefix command.", + "notOwner": "Only bot owners can use this command.", + "noCode": "Provide code after the eval command.", + "tooLong": "Code exceeds the {{max}} character limit.", + "blocked": "Blocked: the code references `{{token}}`, which is not allowed." } } diff --git a/zh-CN/commands/config.json b/zh-CN/commands/config.json index b6e12bf1..a34b1f92 100644 --- a/zh-CN/commands/config.json +++ b/zh-CN/commands/config.json @@ -39,6 +39,16 @@ "enabled": "BlaBlaLink embeds are now enabled.", "disabled": "BlaBlaLink embeds are now disabled." }, + "ark": { + "title": "Daily Announcements", + "description": "Daily event overview posted to a chosen channel.", + "channel": "Announcement Channel", + "unset": "Not configured", + "selectPlaceholder": "Select an announcement channel", + "test": "Send Test Announcements", + "testSuccess": "Test Daily Announcement sent successfully.", + "testFail": "Failed to send test announcements. Check channel permissions or webhook access." + }, "prefix": { "title": "Prefix", "description": "Change the bot's command prefix", diff --git a/zh-CN/commands/fun/feedback.json b/zh-CN/commands/fun/feedback.json new file mode 100644 index 00000000..0f923988 --- /dev/null +++ b/zh-CN/commands/fun/feedback.json @@ -0,0 +1,6 @@ +{ + "slashOnly": "Use `/feedback` to send feedback to the developers.", + "unavailable": "The feedback service is not configured right now.", + "failed": "Your feedback could not be sent. Please try again later.", + "sent": "Your feedback was sent to the developers. Thank you!" +} diff --git a/zh-CN/commands/fun/game.json b/zh-CN/commands/fun/game.json index eb4542ab..8e1489dc 100644 --- a/zh-CN/commands/fun/game.json +++ b/zh-CN/commands/fun/game.json @@ -7,5 +7,6 @@ "joined": "You joined the game!", "alreadyIn": "You're already in the game.", "noSession": "No active game session found.", - "hostOnly": "Only the host can cancel the game." + "hostOnly": "Only the host can cancel the game.", + "gameInProgress": "A game is already running in this channel. Wait for it to end before starting a new one." } diff --git a/zh-CN/commands/fun/leaderboard.json b/zh-CN/commands/fun/leaderboard.json index 14d4d68e..c98dad74 100644 --- a/zh-CN/commands/fun/leaderboard.json +++ b/zh-CN/commands/fun/leaderboard.json @@ -1,10 +1,24 @@ { "name": "leaderboard", - "description": "View the minigame leaderboard", - "gameChoice": "The leaderboard to view", + "description": "View the minigame and character leaderboards", "title": "{{game}} Leaderboard", "selectTab": "Select a leaderboard", + "selectType": "Select leaderboard type", + "selectAxis": "Select a stat or game", + "minigameLeaderboard": "Minigame Leaderboard", + "characterLeaderboard": "Character Stats", + "scopeGlobal": "Global", + "scopeServer": "Server", + "scopePersonal": "Personal", + "previousPage": "Previous", + "nextPage": "Next", + "page": "Page {{page}}", + "serverOnlyInGuild": "The Server leaderboard only works inside a server.", + "serverScopeDisabled": "The Server leaderboard is temporarily unavailable while we wait on Discord to approve the Server Members intent. Please check back later.", "yourRank": "Your rank: #{{rank}} ยท {{wins}} total wins", + "yourCharacterRank": "Your rank: #{{rank}}", "noRank": "You haven't played any games yet", - "empty": "No games played yet. Start a game with /game to get on the leaderboard!" + "empty": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyMinigame": "No games played yet. Start a game with /game to get on the leaderboard!", + "emptyCharacter": "No character stats added yet. Search your best Nikkes with /character to be on the leaderboard." } diff --git a/zh-CN/commands/help.json b/zh-CN/commands/help.json index b8b8e06e..91f2e26e 100644 --- a/zh-CN/commands/help.json +++ b/zh-CN/commands/help.json @@ -2,9 +2,13 @@ "name": "help", "description": "View available commands by category", "title": "Enikk Help", - "selectCategory": "Select a category to view commands.", + "directory": "Help Directory", + "directoryDescription": "Select a category from the dropdown to view commands specific to that category.", + "categories": "Available categories:", + "inviteButton": "Invite Bot", + "websiteButton": "Website", + "noCommands": "No commands are available in this category.", "categoryHeader": "Commands in **{{category}}**", - "categoryHeaderWithCommands": "Commands in **{{category}}**\n\n{{commands}}", "selectPlaceholder": "Select a category", "optionDescription": "View {{category}} commands" } diff --git a/zh-CN/commands/misc/privacy.json b/zh-CN/commands/misc/privacy.json index 88b7de00..e8efa640 100644 --- a/zh-CN/commands/misc/privacy.json +++ b/zh-CN/commands/misc/privacy.json @@ -2,13 +2,13 @@ "name": "privacy", "description": "View the bot's privacy policy", "title": "๐Ÿ”’ Privacy Policy", - "footer": "Last updated: July 2026", - "section1": "**What we collect**\nโ€ข **AI configuration** (MongoDB) โ€” enabled/disabled, auto-respond channels, mention mode, banned users\nโ€ข **BlaBlaLink bindings** (MongoDB) โ€” Discord ID/username, BlaBlaLink user ID, timestamps\nโ€ข **In-memory message cache** (volatile) โ€” last 100 messages per channel, lost on restart", - "section2": "**What we do NOT collect**\nโ€ข Message content is not stored off-platform\nโ€ข Member data is not stored off-platform\nโ€ข Voice data is not recorded or stored\nโ€ข User messages are not used to train AI models", - "section3": "**How we use your data**\nAI settings โ†’ Per-server feature configuration\nBlaBlaLink bindings โ†’ Discord-to-BlaBlaLink account linking\nMessage cache โ†’ AI chat conversation context", - "section4": "**Storage & Security**\nMongoDB database (optional โ€” no `MONGODB_URI` = no persistence)\nData is not sold, shared, or transmitted for marketing or analytics.", - "section5": "**Retention**\nConfiguration data (AI settings, BlaBlaLink bindings) is stored indefinitely.\nThere is no automatic deletion mechanism.", - "section6": "**Your Rights**\nโ€ข Server admins: disable AI, enable mention-only mode, ban users via `/ai`\nโ€ข Individual users: avoid BlaBlaLink by not using `/blabla-link`\nโ€ข Individual users: avoid the AI by not using the `Enikk` prefix or replying\nโ€ข Request deletion: join our support server", - "section7": "**Third-party Services**\nThe bot communicates with NKAS, nikke.gg, BlaBlaLink, and HuggingFace.\nEach has its own privacy policy.", - "section8": "**Changes to This Policy**\nThe \"Last updated\" date is revised on changes.\nContinued use after changes constitutes acceptance of the updated policy." + "footer": "Last updated: August 2026", + "section1": "**What Enikk collects**\nโ€ข Your Discord user ID and username when the bot needs them to provide a feature or save your game statistics.\nโ€ข BlaBlaLink account details when you link an account, so Enikk can retrieve the game data you request.\nโ€ข Server settings, such as AI preferences and music settings, when a server uses those features.\nโ€ข Feedback that you submit through `/feedback`, including your message, Discord tag, user ID, and the server or DM channel where you sent it.", + "section2": "**What Enikk does not collect**\nโ€ข Enikk does not record or store voice conversations.\nโ€ข Enikk does not sell your information or use it for advertising.\nโ€ข Messages used for AI context are kept in a temporary in-memory cache and are lost when the bot restarts.\nโ€ข Your messages are not used to train AI models.", + "section3": "**How Enikk uses your information**\nโ€ข Linked BlaBlaLink details are used to show profiles, rosters, unions, and other game data that you request.\nโ€ข Game statistics are used to update minigame and leaderboard results.\nโ€ข Discord IDs and usernames associate saved data with the correct person.\nโ€ข Temporary message context helps the AI feature understand recent conversation when that feature is enabled.", + "section4": "**Your privacy controls**\nUse `/settings` and open **Privacy Settings** to control whether other users can view your BlaBlaLink profile or character data. You can also hide your username on minigame and character leaderboards while keeping your scores and ranks visible.\n\nWhen you enable a privacy setting, you can still view your own protected data. Those self-views are shown privately to you. Other users receive a privacy notice instead of the protected profile or character data.", + "section5": "**How we store and protect data**\nSome data is stored in a database so features continue to work after a restart. BlaBlaLink login information is encrypted before it is stored. Temporary AI message context is kept in memory only.\n\nDatabase availability depends on the bot's current hosting setup. Enikk does not sell your data or use it for marketing.", + "section6": "**How long we keep data**\nLinked accounts, saved settings, game statistics, and character leaderboard data may remain stored until they are deleted. Temporary AI message context is removed when the bot restarts.\n\nTo request deletion of data associated with your Discord account, contact us through the support server. Do not send passwords, cookies, or other secret information in a support request.", + "section7": "**Other services**\nTo provide its features, Enikk may communicate with Discord, BlaBlaLink, NKAS, nikke.gg, and other services used by a specific command. Feedback is sent to the configured feedback channel through a Discord webhook. These services have their own privacy policies and terms.", + "section8": "**Questions and policy changes**\nIf you have a privacy question or want to request data deletion, contact us through the Enikk support server. We may update this policy when the bot's features or data practices change. The date at the bottom of this policy shows when it was last updated." } diff --git a/zh-CN/commands/misc/status.json b/zh-CN/commands/misc/status.json new file mode 100644 index 00000000..fd988b9a --- /dev/null +++ b/zh-CN/commands/misc/status.json @@ -0,0 +1,12 @@ +{ + "name": "status", + "description": "Show bot status and statistics", + "servers": "Servers", + "users": "Users", + "ping": "Ping", + "version": "Version", + "developers": "Developers", + "server": "Server", + "website": "Website", + "invite": "Invite" +} diff --git a/zh-CN/commands/settings.json b/zh-CN/commands/settings.json index 21b6584e..b2f1661c 100644 --- a/zh-CN/commands/settings.json +++ b/zh-CN/commands/settings.json @@ -1,17 +1,57 @@ { "name": "settings", "description": "Manage your personal settings", - "title": "Enikk Profile Settings", - "profileDescription": "Change your Enikk profile settings here.", - "profileSummary": "Profile Summary", + "tabs": { + "user": "User Settings", + "privacy": "Privacy Settings", + "account": "Account Settings" + }, + "tabSelect": { + "placeholder": "Settings" + }, "language": { - "title": "Current Language", - "description": "Set your preferred language for bot responses.", + "title": "Language", + "serverDefaultHint": "Enikk will default to the server language. Some text might still be in English.", "current": "Your current language: **{{language}}**", "updated": "Language set to **{{language}}**.", "reset": "Language reset to server default.", "selectPlaceholder": "Select your language", "global": "Use server default", "serverDefault": "Server default" + }, + "privacy": { + "title": "Privacy", + "on": "Private", + "off": "Public", + "profile": { + "title": "BlaBlaLink Profile Privacy", + "description": "When enabled, other users cannot view your BlaBlaLink profile through Enikk. You can still view your own profile privately." + }, + "characters": { + "title": "Character Privacy", + "description": "When enabled, other users cannot view your character roster or details through Enikk. Your character leaderboard rows remain visible with your name hidden." + }, + "minigame": { + "title": "Minigame Privacy", + "description": "When enabled, your minigame leaderboard scores remain visible, but your username is hidden." + } + }, + "investment": { + "title": "Investment Tracking", + "description": "If enabled, Enikk will track investment made on your nikkes", + "on": "On", + "off": "Off", + "failed": "Could not enable investment tracking. Make sure a BlaBlaLink account is linked and accessible." + }, + "compact": { + "title": "Compact Character Details", + "description": "If enabled, character details when you do /characters will be automatically compacted", + "on": "On", + "off": "Off" + }, + "account": { + "placeholder": "Select account", + "primary": "Main account", + "noAccount": "No BlaBlaLink account linked." } -} \ No newline at end of file +} diff --git a/zh-CN/lib/blablaResolve.json b/zh-CN/lib/blablaResolve.json index c92c3f74..995d471e 100644 --- a/zh-CN/lib/blablaResolve.json +++ b/zh-CN/lib/blablaResolve.json @@ -7,5 +7,6 @@ "searchNotFound": "Couldn't find any users matching **{{query}}**.", "searchNoProfile": "Found **{{username}}** but they don't have a game profile.", "noOwnLink": "You don't have a BlaBlaLink account linked. Use **/blabla-link** to link one, or provide a **user_id** or **user** option.", - "noOwnAlt": "No alt labeled **{{label}}** found on your account." + "noOwnAlt": "No alt labeled **{{label}}** found on your account.", + "sessionExpired": "Your BlaBlaLink session is missing or expired, so the bot is using a shared fallback session. Use **/blabla-link** to refresh your session." } diff --git a/zh-CN/lib/games/replay.json b/zh-CN/lib/games/replay.json new file mode 100644 index 00000000..cf86559d --- /dev/null +++ b/zh-CN/lib/games/replay.json @@ -0,0 +1,3 @@ +{ + "label": "๐Ÿ”„ Replay Game" +} \ No newline at end of file diff --git a/zh-CN/lib/games/twoTruths.json b/zh-CN/lib/games/twoTruths.json new file mode 100644 index 00000000..ff33db5c --- /dev/null +++ b/zh-CN/lib/games/twoTruths.json @@ -0,0 +1,17 @@ +{ + "noData": "Could not find any Nikke data. Try again later.", + "title": "Two Truths, One Lie", + "roundHeader": "Round {{round}}/{{rounds}}", + "prompt": "Which statement about **{{name}}** is the **lie**? Vote before ", + "alreadyVoted": "You already voted this round!", + "voteClosed": "Voting is closed for this round.", + "lieReveal": "The lie was **{{lie}}**", + "revealName": "The answer was **{{name}}**", + "correctVoters": "โœ… Correct: {{players}}", + "wrongVoters": "โŒ Wrong: {{players}}", + "revealTitle": "Round {{round}} โ€” Reveal!", + "noScores": "No one voted correctly this game.", + "finalTitle": "Two Truths, One Lie โ€” Final!", + "winner": "๐Ÿ† **{{username}}** wins!", + "scoresList": "{{rank}}. **{{username}}** โ€” {{points}} pts" +} \ No newline at end of file diff --git a/zh-CN/lib/games/unionRaid.json b/zh-CN/lib/games/unionRaid.json new file mode 100644 index 00000000..5eb3ab26 --- /dev/null +++ b/zh-CN/lib/games/unionRaid.json @@ -0,0 +1,52 @@ +{ + "host": "Host", + "lobbyTitle": "Union Raid Lobby", + "lobbyBoss": "Boss: **{{boss}}**", + "lobbyPlayers": "Players: **{{count}}/5**", + "lobbyInstructions": "Join the raid, choose one NIKKE, then the host can start with 1-5 players.", + "unassigned": "Unassigned", + "join": "Join Raid", + "choose": "Choose NIKKE", + "leave": "Leave", + "start": "Start Raid", + "searchTitle": "Choose Your NIKKE", + "searchLabel": "Search by name", + "selectPlaceholder": "Select a NIKKE", + "searchResults": "Search results for **{{query}}**:", + "noSearchResults": "No visible NIKKE matched **{{query}}**.", + "invalidNikke": "That NIKKE is no longer available.", + "selected": "Selected **{{name}}**.", + "lobbyClosed": "The lobby is closed or you are not in this raid.", + "joinFailed": "You could not join this raid. It may be full or already started.", + "alreadyJoined": "You are already in this raid.", + "left": "You left the raid.", + "leaveFailed": "You cannot leave this raid right now.", + "cannotStart": "The host must start the raid, and every player must choose a NIKKE.", + "lobbyExpired": "The Union Raid lobby expired.", + "combatTitle": "Union Raid: {{boss}}", + "round": "Round {{round}}/{{rounds}}", + "phase": "Phase: **{{phase}}**", + "chooseAction": "Choose an action before .", + "roundResult": "The squad dealt **{{damage}}** damage. The boss dealt **{{bossDamage}}** damage.", + "bossGuarded": "๐Ÿ›ก๏ธ The boss raised its guard. Attack and Burst damage was blocked this round.", + "attackMiss": "{{username}}'s attack missed.", + "burstMiss": "{{username}}'s Burst was resisted.", + "actionClosed": "This action is closed or the raid has ended.", + "alreadyActed": "You already chose an action this round.", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server", + "downed": "Your NIKKE is downed and cannot act this round.", + "downedShort": "โ€” DOWNED", + "playerHit": "{{username}} took **{{damage}}** damage.", + "playerDowned": "๐Ÿ’€ {{username}}'s NIKKE was downed.", + "playerHealed": "๐Ÿ’š {{username}} recovered **{{health}} HP**.", + "actions": { + "attack": "Attack", + "burst": "Burst", + "support": "Support", + "defend": "Defend" + }, + "victory": "Union Raid Victory", + "defeat": "Union Raid Defeat", + "timeout": "Union Raid Timed Out", + "finalStats": "This round dealt **{{damage}}** damage and the boss dealt **{{bossDamage}}** damage.\n\nFinal contributions:" +} diff --git a/zh-CN/lib/games/zoomWho.json b/zh-CN/lib/games/zoomWho.json index e4776d5a..40501e37 100644 --- a/zh-CN/lib/games/zoomWho.json +++ b/zh-CN/lib/games/zoomWho.json @@ -7,5 +7,6 @@ "correct": "Hurray <@{{userId}}> did it! ๐ŸŽ‰", "reveal": "The answer was **{{name}}**", "score": "{{seconds}}s ยท +{{points}} pts", - "timeUp": "โฐ Time's up!" + "timeUp": "โฐ Time's up!", + "testingFooter": "We are still testing these minigames if u got feedback please use the /feedback or join our discord server" } diff --git a/zh-CN/lib/searchPicker.json b/zh-CN/lib/searchPicker.json new file mode 100644 index 00000000..02db95e5 --- /dev/null +++ b/zh-CN/lib/searchPicker.json @@ -0,0 +1,14 @@ +{ + "title": "Search results for \"{{query}}\"", + "kind": { + "user": "Users", + "union": "Unions" + }, + "noResults": "No results found.", + "noSession": "This search session has expired. Run the command again to search.", + "selectPlaceholder": "Select a result...", + "selectDetail": "Select to view", + "noLimit": "No limit", + "raidMemberLocked": "You are a member of this guild, but your account is ID-linked (not cookie-linked). Link your game cookie to view raid data.", + "raidNotMember": "You are not a member of this guild, so you can't view its raid data. Join the guild to view it." +} diff --git a/zh-CN/services/ark.json b/zh-CN/services/ark.json new file mode 100644 index 00000000..46ee1656 --- /dev/null +++ b/zh-CN/services/ark.json @@ -0,0 +1,10 @@ +{ + "title": "Ark Overview | Daily Announcements", + "recruitmentsHeader": "ใ€ RECRUITMENTS ใ€‘", + "costumesHeader": "ใ€ COSTUMES & PASSES ใ€‘", + "eventsHeader": "ใ€ EVENTS ใ€‘", + "arenaRaidsHeader": "ใ€ ARENA & RAIDS ใ€‘", + "inviteLabel": "Invite Bot", + "websiteLabel": "Official Website", + "empty": "No events are currently tracked." +}