From fd739054fdd0a9bd74c1297786f260e2581a6155 Mon Sep 17 00:00:00 2001 From: DJj123dj <80536295+DJj123dj@users.noreply.github.com> Date: Sun, 20 Apr 2025 12:08:52 +0200 Subject: [PATCH] Added 3th & 4th question to Quick Setup CLI --- src/core/api/modules/client.ts | 2 +- src/core/cli/quickSetup.ts | 37 +++++++++++++++++++++++++++++++++- src/index.ts | 2 +- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/core/api/modules/client.ts b/src/core/api/modules/client.ts index 45dea53..7175de1 100644 --- a/src/core/api/modules/client.ts +++ b/src/core/api/modules/client.ts @@ -114,7 +114,7 @@ export class ODClientManager { this.#debug.debug("Created client with permissions: "+this.permissions.join(", ")) } /**Get all servers the bot is part of. */ - getGuilds(){ + async getGuilds(): Promise { if (!this.initiated) throw new ODSystemError("Client isn't initiated yet!") if (!this.ready) throw new ODSystemError("Client isn't ready yet!") diff --git a/src/core/cli/quickSetup.ts b/src/core/cli/quickSetup.ts index 2e7d283..8c7c636 100644 --- a/src/core/cli/quickSetup.ts +++ b/src/core/cli/quickSetup.ts @@ -1,6 +1,7 @@ import {opendiscord, api, utilities} from "../../index" import {Terminal, terminal} from "terminal-kit" import ansis from "ansis" +import * as discord from "discord.js" import {renderHeader} from "./cli" export async function renderQuickSetup(backFn:() => api.ODPromiseVoid){ @@ -172,7 +173,41 @@ async function renderQuickSetupBotToken(backFn:() => api.ODPromiseVoid){ terminal.gray("Your bot should be online with the status 'Configuring Open Ticket...'.") await utilities.timer(3000) //continue - //TODO + await renderQuickSetupServer(result,async () => {await renderQuickSetupBotToken(backFn)}) } } } + +async function renderQuickSetupServer(client:api.ODClientManager,backFn:() => api.ODPromiseVoid){ + renderHeader("⏱️ Open Ticket Quick Setup: Discord Server") + + terminal.bold.blue("(Step 3) Please select a Discord Server to use.\n") + terminal.gray("The bot will only work in this server.\n\n") + + const guilds = await client.getGuilds() + const nameList = guilds.map((g) => g.name) + const longestName = utilities.getLongestLength(nameList) + const guildList = guilds.map((g) => g.name.padEnd(longestName+5," ")+ansis.gray(" ("+g.id+")")) + + const answer = await terminal.singleColumnMenu([ansis.green("🔄 "),...guildList],{ + leftPadding:"> ", + style:terminal.cyan, + selectedStyle:terminal.bgDefaultColor.bold, + submittedStyle:terminal.bgBlue, + extraLines:2, + cancelable:true + }).promise + + if (answer.canceled) return backFn() + if (answer.selectedIndex == 0) return await renderQuickSetupServer(client,backFn) + const server = guilds[answer.selectedIndex-1] + await renderQuickSetupAdminRoles(client,server,[],async () => {await renderQuickSetupServer(client,backFn)}) +} + +async function renderQuickSetupAdminRoles(client:api.ODClientManager,guild:discord.Guild,selectedAdmins:string[],backFn:() => api.ODPromiseVoid){ + renderHeader("⏱️ Open Ticket Quick Setup: Admin Roles") + + terminal.bold.blue("(Step 4) Please select all 'Global Admins' roles to use.\n") + terminal.gray("Users with one of these roles will be able to access & interact with all tickets.\n\n") + +} diff --git a/src/index.ts b/src/index.ts index c83ae71..9c413d8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -373,7 +373,7 @@ const main = async () => { const client = opendiscord.client //check if all servers are valid - const botServers = client.getGuilds() + const botServers = await client.getGuilds() const generalConfig = opendiscord.configs.get("opendiscord:general") const serverId = generalConfig.data.serverId ? generalConfig.data.serverId : "" if (!serverId) throw new api.ODSystemError("Server Id Missing!")