diff --git a/structure/client/components/settings/utility/GuildIndexing.js b/structure/client/components/settings/utility/GuildIndexing.js new file mode 100644 index 0000000..b434f22 --- /dev/null +++ b/structure/client/components/settings/utility/GuildIndexing.js @@ -0,0 +1,97 @@ +const { Setting } = require('../../../../interfaces'); + +class DescriptionSetting extends Setting { + + constructor(client) { + + super(client, { + name: 'index', + module: 'utility', + index: 'guildIndex', + aliases: [ + ], + usage: '', + examples: [ + 'index on', + 'index description some description here', + 'description some description here', + 'description clear' + ], + guarded: false, + resolve: 'GUILD', + default: { + guildIndex: { + indexed: false, + description: 'Use `-settings description` to change your guild description', + tags: [] + } + }, + custom: true + }); + + this.client = client; + + } + + async handle(message, params) { + + let index = null, + langParams = {}; + + const setting = message.guild._settings[this.index] || this.default[this.index]; + const { guild } = message; + const { resolver } = this.client; + + const method = params[0].toLowerCase(); + + if (method === 'description' || message._settingCaller === 'description') { + + if (method === 'description') params.shift(); + + if (params[0].toLowerCase() === 'clear') setting.description = this.default[this.index].description; + else setting.description = params.join(', '); + + index = 'S_INDEX_DESCRIPTION_SET'; + langParams.changes = setting.description || 'N/A'; + + } else if (resolver.resolveBoolean(method)) { + + setting.indexed = true; + index = 'S_INDEX_TOGGLE'; + langParams.toggle = message.format('ON_OFF_TOGGLE', { toggle: true }, true); + + } else if (resolver.resolveBoolean(method) === false) { + + setting.indexed = false; + index = 'S_INDEX_TOGGLE'; + langParams.toggle = message.format('ON_OFF_TOGGLE', { toggle: false }, true); + + } else return { error: true, msg: message.format('ERR_INVALID_METHOD', { method }) }; + + await message.guild._updateSettings({ [this.index]: setting }); + return { error: false, msg: message.format(index, langParams) }; + + } + + async fields(guild) { + const setting = guild._settings[this.index]; + return [ + { + name: '》Indexing', + value: setting?.indexed, + inline: true + }, { + name: '》Tags', + value: setting?.tags.join(', ') || 'N/A', + inline: true + }, { + name: '》Description', + value: setting?.description || 'N/A' + } + ]; + + } + +} + +module.exports = DescriptionSetting; \ No newline at end of file