1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
const fs = require('fs')
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"],
mod_only: true,
config:config,
config_loc:config_loc,
async main (client,Discord,message,args){
let id = message.mentions.channels.first()
let echo = message.content.slice(8)
if(id){
echo = echo.split(/ +/g);
echo.shift();
echo = echo.join(' ')
} else {
id = message.channel
}
this.exec(client,{id:id,echo:echo})
},
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){
try{
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})
}
} catch(e) {
info.interaction.channel.reply({ content: 'error sending message, most likely from permissions or length', ephemeral: true})
}
},
async exec(client,info){
return await 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 })
}
}
}
|