aboutsummaryrefslogtreecommitdiff
path: root/commands/mod/sticky.js
diff options
context:
space:
mode:
authorame <[email protected]>2023-10-31 17:24:25 -0500
committerame <[email protected]>2023-10-31 17:24:25 -0500
commit53b4e132d593ac6a0d7cad6f0c988a97b68b8d2d (patch)
tree5db8aa7e1768ecec5fd1b62ea0f995a8067410ed /commands/mod/sticky.js
parent350d0de46b90d8a54fbf98ca500a4f88512f7a69 (diff)
sticky slash command, extended slash commands, and other fixes
Diffstat (limited to 'commands/mod/sticky.js')
-rw-r--r--commands/mod/sticky.js84
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