feat: Enhance goodbye and welcome forms with new message types and image options

- Added support for different message types (text, embed, both) in goodbye and welcome forms.
- Implemented embed options including title, description, color, thumbnail, and footer for both forms.
- Introduced image options with gradient selection, title, subtitle, and member count display for goodbye and welcome messages.
- Updated API routes to handle new configuration parameters for saving and retrieving goodbye and welcome settings.
- Created a new function to generate welcome images with customizable gradients and text.
This commit is contained in:
Arthur Puechberty
2026-01-18 17:28:23 +01:00
parent 0ba91ac116
commit fac4b0c9e5
11 changed files with 1530 additions and 156 deletions
+80 -4
View File
@@ -32,15 +32,37 @@ db.exec(`
CREATE TABLE IF NOT EXISTS welcome_config (
guild_id TEXT PRIMARY KEY,
channel_id TEXT,
enabled INTEGER NOT NULL,
message TEXT NOT NULL
enabled INTEGER NOT NULL DEFAULT 0,
message TEXT,
message_type TEXT NOT NULL DEFAULT 'embed',
embed_title TEXT,
embed_description TEXT,
embed_color TEXT DEFAULT '#57F287',
embed_thumbnail INTEGER NOT NULL DEFAULT 1,
embed_footer TEXT,
image_enabled INTEGER NOT NULL DEFAULT 0,
image_gradient TEXT DEFAULT 'purple',
image_title TEXT,
image_subtitle TEXT,
image_show_member_count INTEGER NOT NULL DEFAULT 1
);
CREATE TABLE IF NOT EXISTS goodbye_config (
guild_id TEXT PRIMARY KEY,
channel_id TEXT,
enabled INTEGER NOT NULL,
message TEXT NOT NULL
enabled INTEGER NOT NULL DEFAULT 0,
message TEXT,
message_type TEXT NOT NULL DEFAULT 'embed',
embed_title TEXT,
embed_description TEXT,
embed_color TEXT DEFAULT '#ED4245',
embed_thumbnail INTEGER NOT NULL DEFAULT 1,
embed_footer TEXT,
image_enabled INTEGER NOT NULL DEFAULT 0,
image_gradient TEXT DEFAULT 'red',
image_title TEXT,
image_subtitle TEXT,
image_show_member_count INTEGER NOT NULL DEFAULT 1
);
CREATE TABLE IF NOT EXISTS autorole_newuser_config (
@@ -443,4 +465,58 @@ db.exec(`
);
`);
// Migration: Ajouter les nouvelles colonnes pour welcome/goodbye si elles n'existent pas
const migrateWelcomeGoodbye = () => {
// Colonnes à ajouter pour welcome_config
const welcomeColumns = [
{ name: 'message_type', sql: "ALTER TABLE welcome_config ADD COLUMN message_type TEXT NOT NULL DEFAULT 'embed'" },
{ name: 'embed_title', sql: "ALTER TABLE welcome_config ADD COLUMN embed_title TEXT" },
{ name: 'embed_description', sql: "ALTER TABLE welcome_config ADD COLUMN embed_description TEXT" },
{ name: 'embed_color', sql: "ALTER TABLE welcome_config ADD COLUMN embed_color TEXT DEFAULT '#57F287'" },
{ name: 'embed_thumbnail', sql: "ALTER TABLE welcome_config ADD COLUMN embed_thumbnail INTEGER NOT NULL DEFAULT 1" },
{ name: 'embed_footer', sql: "ALTER TABLE welcome_config ADD COLUMN embed_footer TEXT" },
{ name: 'image_enabled', sql: "ALTER TABLE welcome_config ADD COLUMN image_enabled INTEGER NOT NULL DEFAULT 0" },
{ name: 'image_gradient', sql: "ALTER TABLE welcome_config ADD COLUMN image_gradient TEXT DEFAULT 'purple'" },
{ name: 'image_title', sql: "ALTER TABLE welcome_config ADD COLUMN image_title TEXT" },
{ name: 'image_subtitle', sql: "ALTER TABLE welcome_config ADD COLUMN image_subtitle TEXT" },
{ name: 'image_show_member_count', sql: "ALTER TABLE welcome_config ADD COLUMN image_show_member_count INTEGER NOT NULL DEFAULT 1" }
];
// Colonnes à ajouter pour goodbye_config
const goodbyeColumns = [
{ name: 'message_type', sql: "ALTER TABLE goodbye_config ADD COLUMN message_type TEXT NOT NULL DEFAULT 'embed'" },
{ name: 'embed_title', sql: "ALTER TABLE goodbye_config ADD COLUMN embed_title TEXT" },
{ name: 'embed_description', sql: "ALTER TABLE goodbye_config ADD COLUMN embed_description TEXT" },
{ name: 'embed_color', sql: "ALTER TABLE goodbye_config ADD COLUMN embed_color TEXT DEFAULT '#ED4245'" },
{ name: 'embed_thumbnail', sql: "ALTER TABLE goodbye_config ADD COLUMN embed_thumbnail INTEGER NOT NULL DEFAULT 1" },
{ name: 'embed_footer', sql: "ALTER TABLE goodbye_config ADD COLUMN embed_footer TEXT" },
{ name: 'image_enabled', sql: "ALTER TABLE goodbye_config ADD COLUMN image_enabled INTEGER NOT NULL DEFAULT 0" },
{ name: 'image_gradient', sql: "ALTER TABLE goodbye_config ADD COLUMN image_gradient TEXT DEFAULT 'red'" },
{ name: 'image_title', sql: "ALTER TABLE goodbye_config ADD COLUMN image_title TEXT" },
{ name: 'image_subtitle', sql: "ALTER TABLE goodbye_config ADD COLUMN image_subtitle TEXT" },
{ name: 'image_show_member_count', sql: "ALTER TABLE goodbye_config ADD COLUMN image_show_member_count INTEGER NOT NULL DEFAULT 1" }
];
// Exécuter les migrations pour welcome_config
welcomeColumns.forEach(col => {
db.run(col.sql, (err) => {
if (err && !err.message.includes('duplicate column')) {
// Ignorer les erreurs de colonnes dupliquées
}
});
});
// Exécuter les migrations pour goodbye_config
goodbyeColumns.forEach(col => {
db.run(col.sql, (err) => {
if (err && !err.message.includes('duplicate column')) {
// Ignorer les erreurs de colonnes dupliquées
}
});
});
};
// Exécuter la migration
migrateWelcomeGoodbye();
module.exports = db;