Source

db/mongo/BotGuild.js

const { Schema, model } = require('mongoose');

const BotGuildClass = require('../../classes/bot-guild');

/**
 * @class BotGuild
 */
const BotGuildSchema = new Schema({

    roleIDs: {
        memberRole: {
            type: String,
        },
        staffRole: {
            type: String,
        },
        adminRole: {
            type: String,
        },
        everyoneRole: {
            type: String,
        },
    },

    channelIDs: {
        adminConsole: {
            type: String,
        },
        adminLog: {
            type: String,
        },
        botSupportChannel: {
            type: String,
        },
        archiveCategory: {
            type: String,
        },
    },

    verification: {
        isEnabled: {
            type: Boolean,
            default: false,
        },
        guestRoleID: {
            type: String,
        },
        welcomeChannelID: {
            type: String,
        },
        welcomeSupportChannelID: {
            type: String,
        },
        verificationRoles: {
            type: Map,
            default: new Map(),
        }
    },

    attendance: {
        isEnabled: {
            type: Boolean,
            default: false,
        },
        attendeeRoleID: {
            type: String,
        },
    },

    stamps: {
        isEnabled: {
            type: Boolean,
            default: false,
        },
        stampRoleIDs: {
            type: Map,
            default: new Map(),
        },
        stamp0thRoleId: {
            type: String,
        },
        stampCollectionTime: {
            type: Number,
            default: 60,
        },
    },

    report: {
        isEnabled: {
            type: Boolean,
            default: false,
        },
        incomingReportChannelID: {
            type: String,
        },
    },

    announcement: {
        isEnabled: {
            type: Boolean,
            default: false,
        },
        announcementChannelID: {
            type: String,
        },
    },

    ask: {
        isEnabled: {
            type: Boolean,
            default: false,
        },
    },

    blackList: {
        type: Map,
        default: new Map(),
    },

    caves: {
        type: Map,
        default: new Map(),
    },

    colors: {
        embedColor: {
            type: String,
            default: '#26fff4',
        },
        questionEmbedColor: {
            type: String,
            default: '#f4ff26',
        },
        announcementEmbedColor: {
            type: String,
            default: '#9352d9',
        },
        tfTeamEmbedColor: {
            type: String,
            default: '#60c2e6',
        },
        tfHackerEmbedColor: {
            type: String,
            default: '#d470cd',
        },
        specialDMEmbedColor: {
            type: String,
            default: '#fc6b03',
        }, 
    },

    _id: {
        type: String,
        required: true,
    },

    isSetUpComplete: {
        type: Boolean,
        default: false,
    },

    prefix: {
        type: String,
        default: '!',
        required: true,
    },
});

BotGuildSchema.loadClass(BotGuildClass);

const BotGuild = model('BotGuild', BotGuildSchema);

module.exports = BotGuild;