Files
flint/locales/en.json
T
Puechberty Arthur fc0daa671d feat: add member message functionality for welcome and goodbye events
- Introduced `goodbyeCommand` and `welcomeCommand` to handle member leave and join events.
- Implemented `memberMessagePanel` for interactive message configuration.
- Created `dispatchMemberMessage` to send messages based on member events.
- Added database support for storing member message configurations.
- Integrated image rendering for member messages using `@napi-rs/canvas`.
- Registered event listeners for `GuildMemberAdd` and `GuildMemberRemove` to trigger messages.
- Updated `package.json` to include `@napi-rs/canvas` dependency.
2026-04-12 17:04:05 +02:00

343 lines
12 KiB
JSON

{
"errors": {
"args": {
"missing": "Missing argument {{arg}}. Usage: {{usage}}",
"invalidInt": "Argument must be an integer. Received: {{value}}",
"invalidNumber": "Argument must be a number. Received: {{value}}",
"invalidBoolean": "Argument must be a boolean value. Received: {{value}}",
"invalidUser": "Could not resolve a user from {{value}}",
"invalidChannel": "Could not resolve a channel from {{value}}",
"invalidRole": "Could not resolve a role from {{value}}",
"tooMany": "Too many arguments detected ({{count}}): {{extras}}. Usage: {{usage}}"
},
"permissions": {
"user": "You are missing permissions: {{permissions}}"
},
"execution": "An unexpected error happened while running this command.",
"cooldown": "Please wait {{seconds}}s before using this command again."
},
"categories": {
"fun": "Fun",
"utility": "Utility",
"core": "Core"
},
"commands": {
"kiss": {
"name": "kiss",
"description": "Send a kiss to another user.",
"args": {
"user": "Target user"
},
"examples": {
"basic": "Send a kiss to a member"
},
"responses": {
"success": "{{from}} sends a kiss to {{to}}."
}
},
"ping": {
"name": "ping",
"description": "Check bot websocket latency.",
"examples": {
"basic": "Basic health check"
},
"responses": {
"pong": "Pong. Websocket latency: {{latency}}ms."
}
},
"advanced": {
"name": "advanced",
"description": "Showcase command using every available command parameter.",
"args": {
"text": "Required text value",
"count": "Required integer value",
"ratio": "Optional decimal number",
"enabled": "Optional boolean flag",
"user": "Required target user",
"channel": "Optional channel",
"role": "Optional role"
},
"examples": {
"full": "Complete prefix example with all argument types",
"slash": "Equivalent slash usage"
},
"responses": {
"summary": "Advanced command summary\ntext={{text}}\ncount={{count}}\nratio={{ratio}}\nenabled={{enabled}}\nuser={{user}}\nchannel={{channel}}\nrole={{role}}\nsource={{source}}"
}
},
"presence": {
"name": "presence",
"description": "Configure bot presence with an interactive panel.",
"examples": {
"slash": "Open the interactive presence panel"
},
"responses": {
"panel": "Presence panel\nStatus: {{status}}\nActivity: {{activityType}}\nRotation: every {{rotationIntervalSeconds}}s\nActive text ({{currentTextIndex}}/{{textCount}}): {{activityText}}\nRendered preview: {{activityPreview}}\nTexts: {{activityTexts}}\nVariables ({{doubleBracesHint}}): {{variables}}",
"notOwner": "Only the command author can use this panel.",
"invalidSelection": "Invalid selection received.",
"invalidInterval": "Invalid interval. Use an integer between {{minSeconds}} and {{maxSeconds}} seconds.",
"modalTimeout": "Text update timed out. Click the button again."
},
"ui": {
"status": {
"placeholder": "Choose a status",
"options": {
"online": {
"label": "Online",
"description": "Displayed as online"
},
"idle": {
"label": "Idle",
"description": "Displayed as idle"
},
"dnd": {
"label": "Do Not Disturb",
"description": "Displayed as do not disturb"
},
"invisible": {
"label": "Invisible",
"description": "Displayed as offline"
},
"streaming": {
"label": "Streaming",
"description": "Displayed in streaming mode"
}
}
},
"activity": {
"placeholder": "Choose an activity type",
"options": {
"PLAYING": {
"label": "Playing",
"description": "Shows as Playing ..."
},
"STREAMING": {
"label": "Streaming",
"description": "Shows as Streaming ..."
},
"WATCHING": {
"label": "Watching",
"description": "Shows as Watching ..."
},
"LISTENING": {
"label": "Listening",
"description": "Shows as Listening to ..."
},
"COMPETING": {
"label": "Competing",
"description": "Shows as Competing in ..."
},
"CUSTOM": {
"label": "CustomStatus",
"description": "Shows a custom status"
}
}
},
"embed": {
"title": "Presence Configuration",
"description": "Change status, activity type, multiple texts, and rotation interval in real time.",
"footer": "Interactive /presence panel",
"fields": {
"status": "Status",
"activity": "Activity type",
"text": "Text"
}
},
"textButton": "📝 Edit texts",
"intervalButton": "⏱️ Interval",
"modal": {
"title": "Presence texts",
"label": "One text per line (use {{var}})",
"placeholder": "Maintenance\n{{guild_count}} servers | {{prefix}}help"
},
"intervalModal": {
"title": "Rotation interval",
"label": "Seconds between each text",
"placeholder": "Example: 30"
}
}
},
"welcome": {
"name": "welcome",
"description": "Configure welcome messages with an interactive panel.",
"examples": {
"slash": "Open the welcome message configuration panel"
},
"responses": {
"guildOnly": "This command can only be used inside a server.",
"notOwner": "Only the command author can use this panel.",
"invalidSelection": "Invalid selection.",
"testSuccess": "Test message sent in {{channel}}.",
"testDisabled": "Welcome module is disabled.",
"testMissingChannel": "No channel configured yet. Use the channel button first.",
"testChannelUnavailable": "Configured channel was not found or is not supported.",
"testMissingPermissions": "Bot is missing permission to send messages in that channel.",
"testFailed": "Failed to send test message. Please try again later."
},
"ui": {
"embed": {
"title": "Welcome Configuration",
"description": "Configure status, channel, message type, and run a test send.",
"fields": {
"status": "Status",
"channel": "Channel",
"type": "Type",
"channelPicker": "Channel picker"
}
},
"status": {
"enabled": "🟢 Enabled",
"disabled": "🔴 Disabled"
},
"channelNotConfigured": "#not-configured",
"channelPickerPlaceholder": "Select a welcome channel",
"channelPickerHint": "Use the select menu below to choose the destination channel.",
"buttons": {
"toggle": "Toggle status",
"channel": "Set channel",
"channelCancel": "Close channel picker",
"test": "Test"
},
"type": {
"placeholder": "Choose a message type",
"options": {
"simple": {
"label": "Simple message",
"description": "Send a classic text message"
},
"embed": {
"label": "Embed",
"description": "Send a rich embed message"
},
"container": {
"label": "Container (V2)",
"description": "Send a Components V2 container"
},
"image": {
"label": "Image",
"description": "Send an embed with an image"
}
}
}
},
"templates": {
"simple": "🎉 Welcome {{user}} to **{{guild}}**!",
"embedTitle": "Welcome!",
"embedDescription": "{{user}} just joined **{{guild}}**.",
"containerTitle": "Welcome",
"containerDescription": "{{user}} just joined **{{guild}}**.",
"imageTitle": "Welcome",
"imageDescription": "on the Discord server {{guild}}"
}
},
"goodbye": {
"name": "goodbye",
"description": "Configure goodbye messages with an interactive panel.",
"examples": {
"slash": "Open the goodbye message configuration panel"
},
"responses": {
"guildOnly": "This command can only be used inside a server.",
"notOwner": "Only the command author can use this panel.",
"invalidSelection": "Invalid selection.",
"testSuccess": "Test message sent in {{channel}}.",
"testDisabled": "Goodbye module is disabled.",
"testMissingChannel": "No channel configured yet. Use the channel button first.",
"testChannelUnavailable": "Configured channel was not found or is not supported.",
"testMissingPermissions": "Bot is missing permission to send messages in that channel.",
"testFailed": "Failed to send test message. Please try again later."
},
"ui": {
"embed": {
"title": "Goodbye Configuration",
"description": "Configure status, channel, message type, and run a test send.",
"fields": {
"status": "Status",
"channel": "Channel",
"type": "Type",
"channelPicker": "Channel picker"
}
},
"status": {
"enabled": "🟢 Enabled",
"disabled": "🔴 Disabled"
},
"channelNotConfigured": "#not-configured",
"channelPickerPlaceholder": "Select a goodbye channel",
"channelPickerHint": "Use the select menu below to choose the destination channel.",
"buttons": {
"toggle": "Toggle status",
"channel": "Set channel",
"channelCancel": "Close channel picker",
"test": "Test"
},
"type": {
"placeholder": "Choose a message type",
"options": {
"simple": {
"label": "Simple message",
"description": "Send a classic text message"
},
"embed": {
"label": "Embed",
"description": "Send a rich embed message"
},
"container": {
"label": "Container (V2)",
"description": "Send a Components V2 container"
},
"image": {
"label": "Image",
"description": "Send an embed with an image"
}
}
}
},
"templates": {
"simple": "👋 {{user}} left **{{guild}}**.",
"embedTitle": "Goodbye",
"embedDescription": "{{user}} has left **{{guild}}**.",
"containerTitle": "Goodbye",
"containerDescription": "{{user}} has left **{{guild}}**.",
"imageTitle": "Goodbye",
"imageDescription": "from the Discord server {{guild}}"
}
},
"help": {
"name": "help",
"description": "Display command list or details for one command.",
"args": {
"command": "Optional command name or trigger"
},
"examples": {
"basic": "List all commands",
"single": "Show details for one command"
},
"errors": {
"notFound": "No command matches {{query}}."
},
"embed": {
"title": "Command Help",
"description": "Use {{usage}} to inspect one command.",
"categoryEmpty": "No commands in this category.",
"detailsTitle": "Command: {{name}}",
"detailsDescription": "{{description}}",
"footer": "Category: {{source}}",
"fields": {
"usage": "Usage",
"arguments": "Arguments",
"examples": "Examples"
}
},
"labels": {
"prefix": "Prefix",
"slash": "Slash",
"required": "required",
"optional": "optional",
"noArgs": "No arguments.",
"noExamples": "No examples."
}
}
}
}