aboutsummaryrefslogtreecommitdiff
path: root/commands/util/say.js
diff options
context:
space:
mode:
Diffstat (limited to 'commands/util/say.js')
-rw-r--r--commands/util/say.js82
1 files changed, 75 insertions, 7 deletions
diff --git a/commands/util/say.js b/commands/util/say.js
index 17af382..1966512 100644
--- a/commands/util/say.js
+++ b/commands/util/say.js
@@ -3,6 +3,27 @@ const path = require("path");
let config_loc = __filename+".json"
const { PermissionsBitField } = require('discord.js');
let config = JSON.parse(fs.readFileSync(config_loc))
+const { EmbedBuilder, ActionRowBuilder,ButtonBuilder,ButtonStyle } = require("discord.js");
+const settings = require("../../src/settings")
+
+/*let presets = {
+ "ticket-create": function(client, info){
+ let embed = new EmbedBuilder()
+ .setColor(settings.defaultColor)
+ .setTitle("create a ticket")
+ .setDescription("test")
+
+ const create = new ButtonBuilder()
+ .setCustomId('new-private-thread')
+ .setLabel('Create Ticket')
+ .setStyle(ButtonStyle.Primary)
+
+ const row = new ActionRowBuilder()
+ .addComponents(create);
+
+ info.id.send({embeds:[embed],components:[row]})
+ }
+}*/
module.exports = {
name : "say",
command: ["say"],
@@ -21,16 +42,63 @@ module.exports = {
}
this.exec(client,{id:id,echo:echo})
},
- s_options:[{type:"string",name:"echo",desc:"message to be said",required:true,autocomplete:false},
- {type:"channel",name:"channel",desc:"channel to be sent to",required:false,autocomplete:false}],
+ s_options:[{type:"sub",name:"text",options:[{type:"string",name:"echo",desc:"message to be said",required:true,autocomplete:false},
+ {type:"channel",name:"channel",desc:"channel to be sent to",required:false,autocomplete:false}]},
+ //{type:"sub",name:"preset",options:[{type:"string",name:"pre",desc:"preset message",required:true,autocomplete:Object.keys(presets)}]},
+ {type:"sub", name:"embed",options:[
+ {type:"string",name:"hex-color",desc:"hex color on left side of embed",required:false,autocomplete:false},
+ {type:"string",name:"title",desc:"embed title",required:false,autocomplete:false},
+ {type:"string",name:"url",desc:"embed url",required:false,autocomplete:false},
+ {type:"string",name:"description",desc:"embed body",required:false,autocomplete:false},
+ {type:"string",name:"thumbnail",desc:"embed thumbnail",required:false,autocomplete:false},
+ {type:"string",name:"image",desc:"embed image",required:false,autocomplete:false},
+ {type:"string",name:"footer",desc:"footer text",required:false,autocomplete:false},
+ ]}],
async s_main (client,Discord,interaction){
- this.exec(client,
- {echo:interaction.options.getString("echo"),
- id:interaction.options.getChannel("channel") ?? interaction.channel})
- await interaction.reply({ content:'sent', ephemeral: true })
- interaction.deleteReply()
+ let action = interaction.options.getSubcommand()
+ if(action == "text"){
+ this.exec(client,
+ {echo:interaction.options.getString("echo"),
+ id:interaction.options.getChannel("channel") ?? interaction.channel})
+ await interaction.reply({ content:'sent', ephemeral: true })
+ interaction.deleteReply()
+ } else if(action == "embed"){
+ this.embed_exec(client, {msg:interaction,id:interaction.channel})
+ }
+
+
},
+
async exec(client,info){
return info.id.send(info.echo)
+ },
+
+ async embed_exec(client, info){
+ let interaction = info.msg
+ let opt;
+ try{
+ let embed = new EmbedBuilder()
+ .setColor(interaction.options.getString("hex-color") ?? settings.defaultColor)
+ if((opt = interaction.options.getString("title")) != null)
+ embed.setTitle(opt)
+ if((opt = interaction.options.getString("url")) != null)
+ embed.setURL(opt)
+ if((opt = interaction.options.getString("description")) != null)
+ embed.setDescription(opt)
+ if((opt = interaction.options.getString("thumbnail")) != null)
+ embed.setThumbnail(opt)
+ if((opt = interaction.options.getString("image")) != null)
+ embed.setImage(opt)
+ if((opt = interaction.options.getString("image")) != null)
+ embed.setImage(opt)
+ if((opt = interaction.options.getString("footer")))
+ embed.setFooter({text:opt})
+ info.id.send({embeds:[embed]})
+ await interaction.reply({ content:'sent', ephemeral: true })
+ interaction.deleteReply()
+ } catch(e){
+ await interaction.reply({ content:'invalid configuration', ephemeral: true })
+ }
+
}
} \ No newline at end of file