Skip to content

Commit

Permalink
Modified "config" namespace
Browse files Browse the repository at this point in the history
  • Loading branch information
raphdcst committed Jun 26, 2024
1 parent a528343 commit 121a952
Showing 1 changed file with 98 additions and 20 deletions.
118 changes: 98 additions & 20 deletions src/namespaces/config.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import * as app from "#app"


export enum BaseLgGuildInfosChannels {

WELCOME_CHANNEL = "👋-welcome",
RULES_CHANNEL = "📜-rules",
//RULES_CHANNEL = "📜-rules",
//ANNOUNCEMENT_CHANNEL = "📢-announcement",
PRESENTATION_CHANNEL = "🖋-presentation",
ANNOUNCEMENT_CHANNEL = "📢-announcement",
ROLES_CHANNEL = "👤-roles",

}
Expand All @@ -24,15 +25,16 @@ export type BaseLgGuildChatChannel = keyof typeof BaseLgGuildChatChannels

export enum BaseLgGuildVoiceChannels {

BASE_VOICE_CHAT = "BASE_VOICE"
ENGLISH_CHAT_CHANNEL = "🇬🇧-eng-chat",
FRENCH_CHAT_CHANNEL = "🇫🇷-fr-chat"

}

export type BaseLgGuildVoiceChannel = keyof typeof BaseLgGuildVoiceChannels

export enum BaseLgGuildCommandsChannels {

BASE_COMMANDS_CHAT = "BASE_COMMANDS"
COMMANDS_CHAT_CHANNEL = "🤖-commands"

}

Expand All @@ -41,7 +43,9 @@ export type BaseLgGuildCommandsChannel = keyof typeof BaseLgGuildCommandsChannel

export enum BaseLgGuildHelpChannels {

BASE_HELP_CHAT = "BASE_HELP"
HELP_CHAT_CHANNEL = "💬-help",
//FAQ_FORUM_CHANNEL = "🆘-faq",
TICKET_CHAT_CHANNEL = "🎫-ticket",

}

Expand All @@ -53,27 +57,55 @@ export enum BaseLgGuildCategories {

INFOS_CATEGORY = "INFORMATIONS",
CHAT_CATEGORY = "TEXT CHAT",
VOICE_CATEGORY = "VOICE CHAT",
COMMANDS_CATEGORY = "COMMANDS CHAT",
HELP_CATEGORY = "HELP CHAT",
VOICE_CATEGORY = "VOICE CHAT",

}

export type BaseLgGuildCategory = keyof typeof BaseLgGuildCategories


export class BaseChannelProps {
NAME: string
TYPE: app.ChannelType.GuildText | app.ChannelType.GuildVoice | app.ChannelType.GuildCategory | app.ChannelType.GuildAnnouncement | app.ChannelType.GuildStageVoice | app.ChannelType.GuildForum | app.ChannelType.GuildMedia
CATEGORY?: string

constructor() {
this.NAME = "basic-channel"
this.TYPE = app.ChannelType.GuildText
}
}

export class FAQ_FORUM_PROPS extends BaseChannelProps {

super() {
this.NAME = "🆘-faq",
this.TYPE = app.ChannelType.GuildForum
this.CATEGORY = BaseLgGuildCategories.HELP_CATEGORY
}
}

export class ANNOUNCEMENT_CHANNEL_PROPS extends BaseChannelProps {

super() {
this.NAME = "📢-announcement",
this.TYPE = app.ChannelType.GuildAnnouncement
this.CATEGORY = BaseLgGuildCategories.INFOS_CATEGORY
}
}


export async function fetchAndDeleteGuild(guild: app.Guild) {
await guild.channels.fetch()
.then((channels) => {

app.fetchLogger.success(`Successfully fetched channels in "${guild.name}" (${guild.id})`)
app.fetchLogger.success(`Fetched channels in "${guild.name}" (${guild.id})`)

channels.each(async (channel) => {
await channel?.delete()
.then((channel) => {
app.deleteLogger.success(`Succesfully deleted "${channel.name}" in "${guild.name}" (${guild.id})`)
app.deleteLogger.success(`Deleted "${channel.name}" in "${guild.name}" (${guild.id})`)
})
.catch((err) => {
app.deleteLogger.error(`Failed to delete channel in "${guild.name}" (${guild.id})`)
Expand All @@ -91,18 +123,18 @@ export async function createCategories(guild: app.Guild): Promise<app.CategoryCh

const categoriesAcc: app.CategoryChannel[] = []

Object.values(BaseLgGuildCategories).forEach(async (value) => {
Object.entries(BaseLgGuildCategories).forEach(async ([key, value]) => {
await guild.channels.create({
name: value,
type: app.ChannelType.GuildCategory
})
.then((category) => {
app.createLogger.success(`Succesfully created "${category.name}" in "${guild.name}" (${guild.id})`)
app.createLogger.success(`Created ${key} named "${category.name}" in "${guild.name}" (${guild.id})`)

return categoriesAcc.push(category)
})
.catch((err) => {
app.createLogger.error(`Failed to create channel in "${guild.name}" (${guild.id})`)
app.createLogger.error(`Failed to create ${key} in "${guild.name}" (${guild.id})`)
return console.error(err)
})
})
Expand All @@ -113,29 +145,75 @@ export async function createCategories(guild: app.Guild): Promise<app.CategoryCh

export async function createChannels(guild: app.Guild, categories: app.CategoryChannel[]) {

const channels = [BaseLgGuildInfosChannels, BaseLgGuildChatChannels, BaseLgGuildVoiceChannels, BaseLgGuildCommandsChannels, BaseLgGuildHelpChannels]
const textChannels = [BaseLgGuildInfosChannels, BaseLgGuildChatChannels, BaseLgGuildCommandsChannels, BaseLgGuildHelpChannels]

const voiceChannels = BaseLgGuildVoiceChannels

Object.values(channels).forEach(async (v, index) => {
const faqForum = new FAQ_FORUM_PROPS()

Object.values(v).forEach(async (value) => {
const announcementChannel = new ANNOUNCEMENT_CHANNEL_PROPS()

const customChannels = [faqForum, announcementChannel]

Object.values(textChannels).forEach(async (v, index) => {

Object.entries(v).forEach(async ([key, value]) => {

await guild.channels.create({
name: value,
type: app.ChannelType.GuildText
})
.then(async (channel) => {

await channel.setParent(categories[index].id)
app.createLogger.success(`Succesfully created "${channel.name}" in "${guild.name}" (${guild.id})`)

app.createLogger.success(`Created ${key} named "${channel.name}" in "${guild.name}" (${guild.id})`)
})
.catch((err) => {
app.createLogger.error(`Failed to create channel in "${guild.name}" (${guild.id})`)
app.createLogger.error(`Failed to create ${key} in "${guild.name}" (${guild.id})`)
return console.error(err)
})
})

})


Object.entries(voiceChannels).forEach(async ([key, value]) => {
await guild.channels.create({
name: value,
type: app.ChannelType.GuildVoice
})
.then(async (channel) => {

await channel.setParent(categories[2].id)

app.createLogger.success(`Created ${key} named "${channel.name}" in "${guild.name}" (${guild.id})`)
})
.catch((err) => {
app.createLogger.error(`Failed to create ${key} in "${guild.name}" (${guild.id})`)
return console.error(err)
})
})

Object.entries(customChannels).forEach(async ([key, value]) => {
await guild.channels.create({
name: value.NAME,
type: value.TYPE
})
.then(async (channel) => {


const catId = Object.values(categories).filter((category) => category.name === value.CATEGORY)

await channel.setParent(catId[0].id)

app.createLogger.success(`Created ${key} named "${channel.name}" in "${guild.name}" (${guild.id})`)
})
.catch((err) => {
app.createLogger.error(`Failed to create ${key} in "${guild.name}" (${guild.id})`)
return console.error(err)
})
})

}

export async function configServ(message: app.Message<true>) {
Expand All @@ -147,6 +225,6 @@ export async function configServ(message: app.Message<true>) {
const categories = await createCategories(guild)

await createChannels(guild, categories)


}

0 comments on commit 121a952

Please sign in to comment.