owobot/commands/settings.js

140 lines
4 KiB
JavaScript

const { languages, getMessage } = require('../util/lang.js')
const fs = require('fs')
module.exports = {
execute: (c) => {
const subcmd = c.args.splice(0, 1)[0]
switch (subcmd) {
case 'set':
const allowedKeys = ["colorPrimary", "colorSecondary", "lang"]
const key = c.args.splice(0, 1)[0]
if(!allowedKeys.includes(key)){
c.reply({
text: getMessage(c.lang, 'command.settings.error.invalidKey'),
color: c.colors.secondary
});
return;
}
const value = c.args.join(" ")
if(value === "" && key==="lang"){
// Show all valid languages to user
for(const i in languages){
c.reply({
translate: "%s (%s)",
color: c.colors.secondary,
with:[
{
text: getMessage(languages[i], 'language.name'),
color: c.colors.primary
},
{
text: getMessage(languages[i], 'language.region'),
color: c.colors.primary
}
],
hoverEvent:{
action: "show_text",
value: {
translate: getMessage(languages[i], 'command.settings.setLanguage'),
with:[
{
text: `${c.prefix}settings set lang ${languages[i]}`,
color: c.colors.secondary
}
]
}
}
})
}
return
}
if(value === ""){
c.reply({
text: getMessage(c.lang, 'command.settings.error.mustProvideValue'),
color: c.colors.secondary
});
return;
}
if(key==="lang" && !languages.includes(value)){
c.reply({
text: getMessage(c.lang, 'command.settings.error.invalidLanguage'),
color: c.colors.secondary
});
return;
}
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]
}
c.reply({
text: getMessage(c.lang, 'command.settings.saved'),
color: c.colors.secondary
});
break;
case 'get':{
c.reply({
translate: "%s: %s",
color: c.colors.primary,
with:[
{
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:[
{
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:[
{
text: getMessage(c.lang, 'command.settings.get.language'),
color: c.colors.secondary
},
{
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
}
]
})
}
}
}