mirror of
https://github.com/arthur-pbty/flint.git
synced 2026-08-01 20:29:03 +02:00
- 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.
343 lines
12 KiB
JSON
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."
|
|
}
|
|
}
|
|
}
|
|
}
|