Creates commands `!version` and `!set-version` to view/save a bot version like `1.0.2`. Only admins have the ability to set the version.
const lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN});
const prefix = require('prefix-parser')
const { channel_id, content } = context.params.event;
const key = 'bot-version'
// Set version
const [argsGet, infoOrErrorGet] = prefix("!set-version", "Set the current bot version")
.regex('Version', /\d+\.\d+\.\d+/, '1.0.2')
.parse(content)
if (infoOrErrorGet) {
return lib.discord.channels['@0.1.2'].messages.create({ channel_id, content: infoOrErrorGet })
}
else if (argsGet) {
const version = argsGet[0]
await lib.utils.kv['@0.1.16'].set({ key, value: version });
return lib.discord.channels['@0.1.2'].messages.create({
channel_id,
content: `Version set to ${version}`,
})
}
// Get version
const [argsSet, infoOrErrorSet] = prefix("!version", "Get the current bot version")
.parse(content)
if (infoOrErrorSet) {
return lib.discord.channels['@0.1.2'].messages.create({ channel_id, content: infoOrErrorSet })
}
else if (argsSet) {
if (!isAdmin()) return
const version = await lib.utils.kv['@0.1.16'].get({ key }) ?? '0.0.0';
return lib.discord.channels['@0.1.2'].messages.create({
channel_id,
content: `The bot version is ${version}`,
})
}
async function isAdmin() {
let isAdmin = false;
let guildInfo = await lib.discord.guilds['@0.1.0'].retrieve({ guild_id });
let roles = await lib.discord.guilds['@0.1.0'].roles.list({ guild_id });
let userRoles = roles.filter(role => context.params.event.member.roles.includes(role.id));
if (guildInfo.owner_id === context.params.event.author.id)
isAdmin = true;
else
for (let i = 0; i < userRoles.length; i++) {
let _role = userRoles[i];
if (_role.permission_names.includes('ADMINISTRATOR')) {
isAdmin = true;
break;
}
}
if (!isAdmin)
await lib.discord.channels['@0.1.1'].messages.create({
channel_id,
content: `Sorry, you don't have permission to use this command. You need to have the <@&${adminRoleId}> role.`
});
return isAdmin
}