aboutsummaryrefslogtreecommitdiff
path: root/commands/mod/timed-message.js
diff options
context:
space:
mode:
Diffstat (limited to 'commands/mod/timed-message.js')
-rw-r--r--commands/mod/timed-message.js76
1 files changed, 76 insertions, 0 deletions
diff --git a/commands/mod/timed-message.js b/commands/mod/timed-message.js
new file mode 100644
index 0000000..35789da
--- /dev/null
+++ b/commands/mod/timed-message.js
@@ -0,0 +1,76 @@
+const fs = require('fs')
+const path = require("path");
+const db = require("../../src/db")
+let config_loc = __filename+".json"
+let config = JSON.parse(fs.readFileSync(config_loc))
+const {upload_limit} = require("../../src/util")
+let valid_times = {"s":1000,"m":60000,"h":3.6e+6,"d":8.64e+7}
+module.exports = {
+ name : "timed message",
+ command: ["timed"],
+ mod_only: true,
+ config:config,
+ config_loc:config_loc,
+ async main (client,Discord,message,args){
+ switch(args[0]){
+ case 'add':
+ case 'a':
+ if(args.length<3){
+ message.reply("not enough parameters, try `sns help timed`")
+ break;
+ }
+ let del_ind = args.indexOf("delay")
+ if(del_ind==-1||del_ind==args.length-1){
+ message.reply("invalid usage! i need a delay")
+ break;
+ }
+ if(!Object.keys(valid_times).includes(args[del_ind+1][args[del_ind+1].length-1])){
+ message.reply("please end your delay with either s,m,h, or d")
+ break;
+ }
+ let time = args[del_ind+1]
+ let ind = time[time.length-1]
+ time[time.length-1] = '';
+ time = valid_times[ind] * parseInt(time)
+ if(time==NaN){
+ message.reply("invalid delay")
+ break;
+ }
+ db.Timed_Message.create({channel:args[1],message:args[2],last_message:'null',last_message_time:'null',embed:args.includes("embed"),embed_color:config.embed_color,delay:time,guild:message.guild.id})
+ //db.Sticky.create({channel:args[1],message:args[2],last_message:'null',embed:args.includes("embed"),embed_color:config.embed_color});
+ message.react("✅")
+ break;
+ case 'rem':
+ case 'remove':
+ case 'r':
+ if(args.length<2){
+ message.reply("not enough parameters, try `sns help timed`")
+ break;
+ }
+ let initial = await db.Timed_Message.count()
+ await db.Timed_Message.destroy({
+ where: {
+ channel: args[1]
+ }
+ });
+ message.reply("removed "+(initial-(await db.Timed_Message.count()))+" item(s)")
+ break;
+ case 'dump':
+ case 'list':
+ let list = await db.Timed_Message.findAll()
+ let flist = "channelid : message : last message : last message time : delay : color\n"
+ for(let l of list)
+ flist+=l.channel+" : "+l.message+" : "+l.last_message+" : "+l.last_message_time+" : " + l.delay + " : " + l.embed_color + "\n"
+ let filename = "/tmp/timed.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]})
+ break;
+ default:
+ message.reply("unknown action, try `sns help timed`")
+ }
+
+ },
+} \ No newline at end of file