owobot/commands/settings.js

156 lines
4.4 KiB
JavaScript
Raw Normal View History

2024-08-12 05:13:32 -04:00
const { languages, getMessage } = require('../util/lang.js')
const fs = require('fs')
const settings = require('../settings.json')
2024-08-12 05:13:32 -04:00
module.exports = {
execute: (c) => {
2024-08-24 10:15:39 -04:00
if (c.type === 'console') {
2024-08-23 10:44:32 -04:00
c.reply({
text: getMessage(c.lang, 'command.settings.disabled.console'),
color: c.colors.secondary
})
return
}
if (settings.userSettingsDisabled) {
c.reply({
text: getMessage(c.lang, 'command.settings.disabled.global'),
color: c.colors.secondary
})
return
}
2024-08-12 05:13:32 -04:00
const subcmd = c.args.splice(0, 1)[0]
switch (subcmd) {
case 'set':{
const allowedKeys = ['colorPrimary', 'colorSecondary', 'lang']
2024-08-12 05:13:32 -04:00
const key = c.args.splice(0, 1)[0]
if (!allowedKeys.includes(key)) {
2024-08-12 05:13:32 -04:00
c.reply({
text: getMessage(c.lang, 'command.settings.error.invalidKey'),
color: c.colors.secondary
})
return
2024-08-12 05:13:32 -04:00
}
const value = c.args.join(' ')
if (value === '' && key === 'lang') {
2024-08-12 05:13:32 -04:00
// Show all valid languages to user
for (const item of languages) {
2024-08-12 05:13:32 -04:00
c.reply({
translate: '%s (%s)',
2024-08-12 05:13:32 -04:00
color: c.colors.secondary,
with: [
2024-08-12 05:13:32 -04:00
{
text: getMessage(item, 'language.name'),
color: c.colors.primary
2024-08-12 05:13:32 -04:00
},
{
text: getMessage(item, 'language.region'),
2024-08-12 05:13:32 -04:00
color: c.colors.primary
}
],
hoverEvent: {
action: 'show_text',
2024-08-12 05:13:32 -04:00
value: {
translate: getMessage(item, 'command.settings.setLanguage'),
with: [
2024-08-12 05:13:32 -04:00
{
text: `${c.prefix}settings set lang ${item}`,
2024-08-12 05:13:32 -04:00
color: c.colors.secondary
}
]
}
}
})
}
return
}
if (value === '') {
2024-08-12 05:13:32 -04:00
c.reply({
text: getMessage(c.lang, 'command.settings.error.mustProvideValue'),
color: c.colors.secondary
})
return
2024-08-12 05:13:32 -04:00
}
if (key === 'lang' && !languages.includes(value)) {
2024-08-12 05:13:32 -04:00
c.reply({
text: getMessage(c.lang, 'command.settings.error.invalidLanguage'),
color: c.colors.secondary
})
return
2024-08-12 05:13:32 -04:00
}
c.prefs[key] = value
// Save to file
fs.writeFileSync(`userPref/${c.uuid}.json`, JSON.stringify(c.prefs))
// Delete require cache
for (const i in require.cache) {
if (i.endsWith(`${c.uuid}.json`)) delete require.cache[i]
2024-08-12 05:13:32 -04:00
}
c.reply({
text: getMessage(c.lang, 'command.settings.saved'),
color: c.colors.secondary
})
break
}
case 'get':
2024-08-12 05:13:32 -04:00
c.reply({
translate: '%s: %s',
color: c.colors.primary,
with: [
2024-08-12 05:13:32 -04:00
{
text: getMessage(c.lang, 'command.settings.get.colorPrimary'),
color: c.colors.secondary
},
{
text: c.colors.primary,
color: c.colors.primary
}
]
})
c.reply({
translate: '%s: %s',
color: c.colors.primary,
with: [
2024-08-12 05:13:32 -04:00
{
text: getMessage(c.lang, 'command.settings.get.colorSecondary'),
color: c.colors.secondary
},
{
text: c.colors.secondary,
color: c.colors.secondary
}
]
})
c.reply({
translate: '%s: %s (%s)',
color: c.colors.primary,
with: [
2024-08-12 05:13:32 -04:00
{
text: getMessage(c.lang, 'command.settings.get.language'),
color: c.colors.secondary
2024-08-12 05:13:32 -04:00
},
{
text: getMessage(c.lang, 'language.name'),
color: c.colors.primary
},
{
text: getMessage(c.lang, 'language.region'),
color: c.colors.primary
}
]
})
break
default:
c.reply({
translate: getMessage(c.lang, 'command.cloop.error.subcommand'),
color: c.colors.secondary,
with: [
{
text: `${c.prefix}help settings`,
color: c.colors.primary
}
]
})
}
}
}