Files
2025-02-13 21:04:53 +01:00

69 lines
2.2 KiB
JavaScript

const { mClient, tClient } = require("../..");
module.exports = {
name: 'Command/settings',
once: false,
async execute(channel, userstate, message, self, state, name) {
if (userstate.badges.moderator != 1 && userstate.badges.broadcaster != 1) { return }
const db = mClient.db('commands')
const coll = db.collection(channel)
const command = await coll.findOne({ name: 'settings' })
// create in disabled state if not exists
if (!command) {
await coll.insertOne({
name: 'settings',
enabled: true,
default: true
})
}
if (!command?.enabled) { return tClient.say(channel, `This command is currently disabled `) }
const db2 = mClient.db('settings')
const coll2 = db2.collection(channel)
// Default non-admin mode, give list of all enabled commands
if (!name) {
const settings = await coll2.find({}).toArray()
var settingsList = []
console.log(settings)
settings.forEach((setting) => {
settingsList.push(` ${setting.name}(${setting.enabled?'✅':'❌'})`)
})
if (settingsList.length == 0) {
return await tClient.say(channel, `No settings available in this channel`)
}
return await tClient.say(channel, `Settings List: ${settingsList.toString()}`)
}
if (!state) { return }
// Parameters are valid
switch (state) {
case 'enable':
state = true
break;
case 'disable':
state = false
break;
default:
return tClient.say(channel, `invalid state, expecting 'enable' or 'disable'`)
}
// command is valid
const findSetting = await coll2.findOne({ name: name })
if (!findSetting) { return await tClient.say(channel, `Setting [${name}] not found.`) }
await coll2.findOneAndUpdate({
name: name
}, {
$set: { enabled: state }
}, {
upsert: true
})
return await tClient.say(channel, `[${name}] has been set to [${state}]`)
}
}