File size: 3,788 Bytes
3c7e34b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
const createRoles = require('./createRoles');
const createChannels = require('./createChannels');
const { sendVerificationEmbed } = require('../systems/verification');
const { sendTicketEmbed } = require('../systems/tickets');
const { sendDisclaimerEmbed, sendRulesEmbed } = require('../systems/embeds');
const { successEmbed, infoEmbed, createEmbed } = require('../utils/embeds');
const { Colors } = require('../config');

module.exports = {
    name: 'setup server',
    async execute(client, message) {
        const startEmbed = createEmbed({
            title: '🚀 Server Setup',
            description: [
                '> Starting full server setup...',
                '',
                '```',
                'Phase 1: Creating Roles',
                'Phase 2: Creating Channels',
                'Phase 3: Rules & Disclaimer Embeds',
                'Phase 4: Verification System',
                'Phase 5: Ticket System',
                '```',
            ].join('\n'),
            color: Colors.PRIMARY,
        });
        await message.reply({ embeds: [startEmbed] });

        // Phase 1: Roles
        await message.reply({ embeds: [infoEmbed('Phase 1/5', 'Creating roles...')] });
        await createRoles.execute(client, message);

        // Phase 2: Channels
        await message.reply({ embeds: [infoEmbed('Phase 2/5', 'Creating channels...')] });
        await createChannels.execute(client, message);

        // Phase 3: Rules & Disclaimer
        await message.reply({ embeds: [infoEmbed('Phase 3/5', 'Posting rules & disclaimer embeds...')] });
        try {
            await sendRulesEmbed(client);
            await message.reply({ embeds: [successEmbed('Rules', 'Rules embed sent to 📜・rules')] });
        } catch (err) {
            await message.reply({ content: `⚠️ Rules embed issue: ${err.message}` });
        }
        try {
            await sendDisclaimerEmbed(client);
            await message.reply({ embeds: [successEmbed('Disclaimer', 'Disclaimer embed sent to ⚠️・disclaimer')] });
        } catch (err) {
            await message.reply({ content: `⚠️ Disclaimer embed issue: ${err.message}` });
        }

        // Phase 4: Verification
        await message.reply({ embeds: [infoEmbed('Phase 4/5', 'Setting up verification...')] });
        try {
            await sendVerificationEmbed(client);
            await message.reply({ embeds: [successEmbed('Verification', 'Verification embed sent to ✅・verify')] });
        } catch (err) {
            await message.reply({ content: `⚠️ Verification setup issue: ${err.message}` });
        }

        // Phase 5: Tickets
        await message.reply({ embeds: [infoEmbed('Phase 5/5', 'Setting up ticket system...')] });
        try {
            await sendTicketEmbed(client);
            await message.reply({ embeds: [successEmbed('Tickets', 'Ticket embed sent to 🎫・open-ticket')] });
        } catch (err) {
            await message.reply({ content: `⚠️ Ticket setup issue: ${err.message}` });
        }

        // Done
        const completeEmbed = createEmbed({
            title: '✅ Setup Complete',
            description: [
                '> **Wyvern Softworks** server is ready!',
                '',
                '```',
                '✓ Roles created and ordered',
                '✓ All categories & channels set up',
                '✓ Rules & disclaimer posted',
                '✓ Verification system active',
                '✓ Ticket system active',
                '✓ Booster auto-role enabled',
                '✓ Welcome system enabled',
                '```',
            ].join('\n'),
            color: Colors.SUCCESS,
        });
        await message.reply({ embeds: [completeEmbed] });
    },
};