pissbot-9000/commands/message/dev/update.js
2023-06-28 15:05:18 +02:00

34 lines
No EOL
1.4 KiB
JavaScript

const { createEmbed } = require('../../../labscore/utils/embed')
const { editOrReply } = require('../../../labscore/utils/message')
const { execSync } = require("child_process");
const { icon, highlight } = require('../../../labscore/utils/markdown');
module.exports = {
name: "update",
label: "flags",
metadata: {
description: 'Fetches latest bot version.',
description_short: 'Bot update',
examples: ['update'],
category: 'dev',
usage: 'update [-force true]'
},
onBefore: context => context.user.isClientOwner,
onCancel: ()=>{},
run: async (context, args) => {
let response = await editOrReply(context, createEmbed("loading", context, "Updating bot..."))
try{
const t = Date.now()
if(args.flags.includes('-force') || args.flags.includes('-f')) execSync("git checkout .")
const r = execSync("git pull")
if(r.toString().includes("Already up to date.")) return await editOrReply(context, {embeds: [createEmbed("warning", context, "Already up to date.")]})
let com = r.toString().match(/([a-z0-9]{7})\.\.([a-z0-9]{7})/)
return await editOrReply(context, { content: `${icon("success_simple")} Updated ${highlight(com[1] + ' -> ' + com[2])} in ${((Date.now() - t) / 1000).toFixed(2)}s`, embeds: []})
}catch(e){
console.log(e)
return await editOrReply(context, createEmbed("error", context, "Update failed. Use -f to force update."))
}
}
};