diff options
author | ame <[email protected]> | 2023-10-31 17:24:25 -0500 |
---|---|---|
committer | ame <[email protected]> | 2023-10-31 17:24:25 -0500 |
commit | 53b4e132d593ac6a0d7cad6f0c988a97b68b8d2d (patch) | |
tree | 5db8aa7e1768ecec5fd1b62ea0f995a8067410ed /commands/mod/sticky.js | |
parent | 350d0de46b90d8a54fbf98ca500a4f88512f7a69 (diff) |
sticky slash command, extended slash commands, and other fixes
Diffstat (limited to 'commands/mod/sticky.js')
-rw-r--r-- | commands/mod/sticky.js | 84 |
1 files changed, 57 insertions, 27 deletions
diff --git a/commands/mod/sticky.js b/commands/mod/sticky.js index b3dc055..f5034de 100644 --- a/commands/mod/sticky.js +++ b/commands/mod/sticky.js @@ -4,6 +4,7 @@ const db = require("../../src/db") let config_loc = __filename+".json" let config = JSON.parse(fs.readFileSync(config_loc)) const {upload_limit} = require("../../src/util") +const options = ["add","remove","dump"] module.exports = { name : "sticky", command: ["sticky"], @@ -14,44 +15,73 @@ module.exports = { switch(args[0]){ case 'add': case 'a': - if(args.length<3){ - message.reply("not enough parameters, try `sns help sticky`") - break; - } - db.Sticky.create({channel:args[1],message:args[2],last_message:'null',embed:args.includes("embed"),embed_color:config.embed_color}); - message.react("✅") + this.p_add(client,Discord,message,args[1],args[2],args.includes("embed")) break; case 'rem': case 'remove': case 'r': - if(args.length<2){ - message.reply("not enough parameters, try `sns help sticky`") - break; - } - let initial = await db.Sticky.count() - await db.Sticky.destroy({ - where: { - channel: args[1] - } - }); - message.reply("removed "+(initial-(await db.Sticky.count()))+" item(s)") + this.p_rem(client,Discord,message,args[1]); break; case 'dump': case 'list': - let list = await db.Sticky.findAll() - let flist = "channelid : message : last message\n" - for(let l of list) - flist+=l.channel+" : "+l.message+" : "+l.last_message+"\n" - let filename = "/tmp/sticky.json" - fs.writeFileSync(filename,flist) - let stats = fs.statSync(filename) - if(stats.size / (1024*1024) > upload_limit(message.guild)) - return message.reply("file too large:( file is "+stats.size / (1024*1024)+"mb") - message.reply({files:[filename]}) + this.p_dump(client,Discord,message); break; default: message.reply("unknown action, try `sns help sticky`") } }, + s_options:[{type:"string",name:"action",desc:"what to do",required:true,autocomplete:["add","remove","dump"]}, + {type:"string",name:"message",desc:"(required for add) message to be sent",required:false,autocomplete:false}, + {type:"channel",name:"chan",desc:"(required for remove and add) channel to clear",required:false,autocomplete:false}, + {type:"bool",name:"embed",desc:"whether or not to use a embed",required:false,autocomplete:false}], + async s_main(client,Discord,interaction){ + let action = interaction.options.getString("action") + let mess = interaction.options.getString("message") + let chan = interaction.options.getChannel("chan") + let embed = interaction.options.getBoolean("embed") + if(!options.includes(action)) + return interaction.reply({content:"please use the autocomplete, (valid values are add, remove, and dump)",ephemeral: true}) + if(action=="add") return this.p_add(client,Discord,interaction,chan.id,mess,embed) + if(action=="remove") return this.p_rem(client,Discord,interaction,chan.id) + if(action=="dump") return this.p_dump(client,Discord,interaction) + }, + async p_dump(client,Discord,message){ + let list = await db.Sticky.findAll() + let flist = "channelid : message : last message\n" + for(let l of list) + flist+=l.channel+" : "+l.message+" : "+l.last_message+"\n" + let filename = "/tmp/sticky.json" + fs.writeFileSync(filename,flist) + let stats = fs.statSync(filename) + if(stats.size / (1024*1024) > upload_limit(message.guild)) + return message.reply("file too large:( file is "+stats.size / (1024*1024)+"mb") + message.reply({files:[filename]}) + }, + async p_rem(client,Discord,message,chan){ + if(chan==null){ + message.reply("no channel provided") + return; + } + let initial = await db.Sticky.count() + await db.Sticky.destroy({ + where: { + channel: chan + } + }); + message.reply("removed "+(initial-(await db.Sticky.count()))+" item(s)") + }, + async p_add(client,Discord,message,chan,mess,embed){ + if(chan==null){ + message.reply("no channel provided") + return; + } + if(mess==null){ + message.reply("no message provided") + return; + } + db.Sticky.create({channel:chan,message:mess,last_message:'null',embed:embed ?? false,embed_color:config.embed_color}); + //message.react("✅") + message.reply("added") + } }
\ No newline at end of file |