almost ready for discord.js 14!
This commit is contained in:
+2
-8
@@ -252,14 +252,8 @@ exports.checker = async () => {
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
|
||||
checkType(config.bot_name,"string","bot_name")
|
||||
if (config.main_color.startsWith("#")){
|
||||
checkHexColor(config.main_color,"main_color")
|
||||
}else{
|
||||
checkEmbedColor(config.main_color,"main_color")
|
||||
}
|
||||
checkHexColor(config.main_color,"main_color")
|
||||
checkDiscord("serverid",config.server_id,"server_id")
|
||||
checkToken(config.auth_token)
|
||||
checkDiscordArray("roleid",config.main_adminroles,"main_adminroles")
|
||||
@@ -267,7 +261,7 @@ exports.checker = async () => {
|
||||
//languagefile
|
||||
checkType(config.languagefile,"string","languagefile")
|
||||
const lf = config.languagefile
|
||||
if (!lf.startsWith("custom") && !lf.startsWith("english") && !lf.startsWith("dutch") && !lf.startsWith("romanian") && !lf.startsWith("german") && !lf.startsWith("arabic")){
|
||||
if (!lf.startsWith("custom") && !lf.startsWith("english") && !lf.startsWith("dutch") && !lf.startsWith("romanian") && !lf.startsWith("german") && !lf.startsWith("arabic") && !lf.startsWith("spanish")){
|
||||
createError("'languagefile' | invalid language, more info in the wiki")
|
||||
}
|
||||
|
||||
|
||||
+21
-21
@@ -7,58 +7,58 @@ const l = bot.language
|
||||
|
||||
module.exports = () => {
|
||||
//closebar
|
||||
var closeBar = new discord.MessageActionRow()
|
||||
var closeBar = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("closeTicketTrue")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("✅")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("closeTicketFalse")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("❌")
|
||||
)
|
||||
var deleteBar = new discord.MessageActionRow()
|
||||
var deleteBar = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicketTrue")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("✅")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicketFalse")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("❌")
|
||||
)
|
||||
var deleteBar1 = new discord.MessageActionRow()
|
||||
var deleteBar1 = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicketTrue1")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("✅")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicketFalse1")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("❌")
|
||||
)
|
||||
//closebutton
|
||||
var closeRowNormal = new discord.MessageActionRow()
|
||||
var closeRowNormal = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("closeTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setLabel(l.buttons.close)
|
||||
.setEmoji("🔒")
|
||||
)
|
||||
@@ -66,16 +66,16 @@ module.exports = () => {
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle("DANGER")
|
||||
.setStyle(discord.ButtonStyle.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
var closeRowClosed = new discord.MessageActionRow()
|
||||
var closeRowClosed = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicket1")
|
||||
.setDisabled(false)
|
||||
.setStyle("DANGER")
|
||||
.setStyle(discord.ButtonStyle.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
@@ -83,7 +83,7 @@ module.exports = () => {
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("sendTranscript")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setLabel(l.buttons.sendTranscript)
|
||||
.setEmoji("📄")
|
||||
)
|
||||
@@ -91,17 +91,17 @@ module.exports = () => {
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle("SUCCESS")
|
||||
.setStyle(discord.ButtonStyle.Success)
|
||||
.setLabel(l.buttons.reopen)
|
||||
.setEmoji("✔")
|
||||
)
|
||||
|
||||
var closeRowDisabled = new discord.MessageActionRow()
|
||||
var closeRowDisabled = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("closeTicket")
|
||||
.setDisabled(true)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setLabel(l.buttons.close)
|
||||
.setEmoji("🔒")
|
||||
)
|
||||
@@ -109,7 +109,7 @@ module.exports = () => {
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicket")
|
||||
.setDisabled(true)
|
||||
.setStyle("DANGER")
|
||||
.setStyle(discord.ButtonStyle.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
@@ -176,12 +176,12 @@ module.exports = () => {
|
||||
}
|
||||
}
|
||||
|
||||
const closedButtonDisabled = new discord.MessageActionRow()
|
||||
const closedButtonDisabled = new discord.ActionRowBuilder()
|
||||
.addComponents([
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("closeTicketTrue1")
|
||||
.setDisabled(true)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("🔒")
|
||||
])
|
||||
interaction.message.edit({components:[closedButtonDisabled]})
|
||||
|
||||
@@ -13,6 +13,7 @@ else if (config.languagefile.startsWith("german")) localLanguage = require("../l
|
||||
else if (config.languagefile.startsWith("french")) localLanguage = require("../language/french.json")
|
||||
else if (config.languagefile.startsWith("romanian")) localLanguage = require("../language/romanian.json")
|
||||
else if (config.languagefile.startsWith("arabic")) localLanguage = require("../language/arabic.json")
|
||||
else if (config.languagefile.startsWith("spanish")) localLanguage = require("../language/spanish.json")
|
||||
|
||||
const errorLog = async () => {
|
||||
const chalk = await (await import("chalk")).default
|
||||
|
||||
@@ -9,7 +9,7 @@ module.exports = async () => {
|
||||
|
||||
console.log(chalk.red("\nINSTRUCTIONS:\n\n1: Run the command you want to delete in discord.\n2: You get the message 'This command is now deleted!'\n3: There is also a message in the console that says the command is deleted.\n4: reload your discord."))
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isCommand()) return console.log("this isn't a command!")
|
||||
if (!interaction.isChatInputCommand()) return console.log("this isn't a command!")
|
||||
|
||||
interaction.reply({content:"This command is now deleted!"})
|
||||
|
||||
|
||||
@@ -4,6 +4,9 @@ const client = require("../../index").client
|
||||
const config = bot.config
|
||||
const getoptions = require("../getoptions")
|
||||
|
||||
const act = discord.ApplicationCommandType
|
||||
const acot = discord.ApplicationCommandOptionType
|
||||
|
||||
module.exports = async () => {
|
||||
const chalk = (await import("chalk")).default
|
||||
const sid = config.server_id
|
||||
@@ -42,10 +45,10 @@ module.exports = async () => {
|
||||
name:"ticket",
|
||||
description:"Create a ticket!",
|
||||
defaultPermission:true,
|
||||
type:"CHAT_INPUT",
|
||||
type:act.ChatInput,
|
||||
options:[
|
||||
{
|
||||
type:"STRING",
|
||||
type:acot.String,
|
||||
name:"type",
|
||||
description:"The type of ticket.",
|
||||
required:true,
|
||||
@@ -61,10 +64,10 @@ module.exports = async () => {
|
||||
name:"new",
|
||||
description:"Create a ticket!",
|
||||
defaultPermission:true,
|
||||
type:"CHAT_INPUT",
|
||||
type:act.ChatInput,
|
||||
options:[
|
||||
{
|
||||
type:"STRING",
|
||||
type:acot.String,
|
||||
name:"type",
|
||||
description:"The type of ticket.",
|
||||
required:true,
|
||||
@@ -81,7 +84,7 @@ module.exports = async () => {
|
||||
name:"help",
|
||||
description:"The help menu",
|
||||
defaultPermission:true,
|
||||
type:"CHAT_INPUT"
|
||||
type:act.ChatInput
|
||||
},sid).then(() => {
|
||||
readystats++
|
||||
|
||||
@@ -92,7 +95,7 @@ module.exports = async () => {
|
||||
name:"close",
|
||||
description:"Close the current ticket.",
|
||||
defaultPermission:true,
|
||||
type:"CHAT_INPUT"
|
||||
type:act.ChatInput
|
||||
},sid).then(() => {
|
||||
readystats++
|
||||
})
|
||||
@@ -102,7 +105,7 @@ module.exports = async () => {
|
||||
name:"delete",
|
||||
description:"Delete the current ticket.",
|
||||
defaultPermission:true,
|
||||
type:"CHAT_INPUT"
|
||||
type:act.ChatInput
|
||||
},sid).then(() => {
|
||||
readystats++
|
||||
})
|
||||
@@ -112,14 +115,15 @@ module.exports = async () => {
|
||||
name:"message",
|
||||
description:"Create a ticket message.",
|
||||
defaultPermission:true,
|
||||
type:"CHAT_INPUT",
|
||||
type:act.ChatInput,
|
||||
options:[
|
||||
{
|
||||
type:"STRING",
|
||||
type:acot.String,
|
||||
name:"id",
|
||||
description:"The message id.",
|
||||
required:true,
|
||||
choices:msgchoices
|
||||
choices:msgchoices,
|
||||
max_length:30
|
||||
|
||||
}
|
||||
]
|
||||
@@ -132,10 +136,10 @@ module.exports = async () => {
|
||||
name:"add",
|
||||
description:"Add people to this ticket.",
|
||||
defaultPermission:true,
|
||||
type:"CHAT_INPUT",
|
||||
type:act.ChatInput,
|
||||
options:[
|
||||
{
|
||||
type:"USER",
|
||||
type:acot.User,
|
||||
name:"user",
|
||||
description:"The user to add.",
|
||||
required:true
|
||||
@@ -150,10 +154,10 @@ module.exports = async () => {
|
||||
name:"remove",
|
||||
description:"Remove people from this ticket.",
|
||||
defaultPermission:true,
|
||||
type:"CHAT_INPUT",
|
||||
type:act.ChatInput,
|
||||
options:[
|
||||
{
|
||||
type:"USER",
|
||||
type:acot.User,
|
||||
name:"user",
|
||||
description:"The user to remove.",
|
||||
required:true
|
||||
@@ -168,10 +172,10 @@ module.exports = async () => {
|
||||
name:"rename",
|
||||
description:"Rename this ticket.",
|
||||
defaultPermission:true,
|
||||
type:"CHAT_INPUT",
|
||||
type:act.ChatInput,
|
||||
options:[
|
||||
{
|
||||
type:"STRING",
|
||||
type:acot.String,
|
||||
name:"name",
|
||||
description:"The new name (without prefix).",
|
||||
required:true
|
||||
@@ -186,7 +190,7 @@ module.exports = async () => {
|
||||
name:"reopen",
|
||||
description:"Reopen this ticket.",
|
||||
defaultPermission:true,
|
||||
type:"CHAT_INPUT"
|
||||
type:act.ChatInput
|
||||
},sid).then(() => {
|
||||
readystats++
|
||||
})
|
||||
|
||||
@@ -100,12 +100,12 @@ exports.closeTicket = async (interaction,prefix,mode) => {
|
||||
interaction.channel.permissionOverwrites.set(permissionArray)
|
||||
|
||||
//message
|
||||
var closeButtonRow = new discord.MessageActionRow()
|
||||
var closeButtonRow = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicket1")
|
||||
.setDisabled(false)
|
||||
.setStyle("DANGER")
|
||||
.setStyle(discord.ButtonStyle.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
@@ -113,7 +113,7 @@ exports.closeTicket = async (interaction,prefix,mode) => {
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("sendTranscript")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setLabel(l.buttons.sendTranscript)
|
||||
.setEmoji("📄")
|
||||
)
|
||||
@@ -121,7 +121,7 @@ exports.closeTicket = async (interaction,prefix,mode) => {
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle("SUCCESS")
|
||||
.setStyle(discord.ButtonStyle.Success)
|
||||
.setLabel(l.buttons.reopen)
|
||||
.setEmoji("✔")
|
||||
)
|
||||
@@ -186,6 +186,7 @@ exports.closeTicket = async (interaction,prefix,mode) => {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
if (enableTranscript == true && mode != "deletenotranscript"){
|
||||
|
||||
if (config.system.enable_transcript || config.system.enable_DM_transcript){
|
||||
|
||||
@@ -70,7 +70,7 @@ exports.createEmbed = (id) => {
|
||||
|
||||
for (let i = AmountOfRows; i > 0; i--){
|
||||
|
||||
componentRows.push(new discord.MessageActionRow())
|
||||
componentRows.push(new discord.ActionRowBuilder())
|
||||
}
|
||||
|
||||
buttons.forEach((button,index) => {
|
||||
|
||||
@@ -9,12 +9,12 @@ const getconfigoptions = require("./getoptions")
|
||||
const storage = bot.storage
|
||||
|
||||
module.exports = () => {
|
||||
var closeButton = new discord.MessageActionRow()
|
||||
var closeButton = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("closeTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setLabel(l.buttons.close)
|
||||
.setEmoji("🔒")
|
||||
)
|
||||
@@ -22,14 +22,14 @@ module.exports = () => {
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle("DANGER")
|
||||
.setStyle(discord.ButtonStyle.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
|
||||
//ticket button click / create ticket
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (interaction.isCommand() && (interaction.commandName == "new" || interaction.commandName == "ticket")){
|
||||
if (interaction.isChatInputCommand() && (interaction.commandName == "new" || interaction.commandName == "ticket")){
|
||||
var customId = "newT"+interaction.options.getString("type")
|
||||
}else if (interaction.isButton()){
|
||||
var customId = interaction.customId
|
||||
@@ -54,7 +54,7 @@ module.exports = () => {
|
||||
|
||||
if (interaction.isButton()){
|
||||
interaction.deferUpdate()
|
||||
}else if (interaction.isCommand()){
|
||||
}else if (interaction.isChatInputCommand()){
|
||||
interaction.reply({embeds:[bot.errorLog.success(l.messages.createdTitle,l.messages.createdDescription)]})
|
||||
}
|
||||
|
||||
|
||||
+15
-15
@@ -7,12 +7,12 @@ const l = bot.language
|
||||
const storage = bot.storage
|
||||
|
||||
module.exports = () => {
|
||||
var closeRowNormal = new discord.MessageActionRow()
|
||||
var closeRowNormal = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("closeTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setLabel(l.buttons.close)
|
||||
.setEmoji("🔒")
|
||||
)
|
||||
@@ -20,17 +20,17 @@ module.exports = () => {
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle("DANGER")
|
||||
.setStyle(discord.ButtonStyle.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
|
||||
var closeRowClosed = new discord.MessageActionRow()
|
||||
var closeRowClosed = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicket1")
|
||||
.setDisabled(false)
|
||||
.setStyle("DANGER")
|
||||
.setStyle(discord.ButtonStyle.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
@@ -38,7 +38,7 @@ module.exports = () => {
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("sendTranscript")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setLabel(l.buttons.sendTranscript)
|
||||
.setEmoji("📄")
|
||||
)
|
||||
@@ -46,49 +46,49 @@ module.exports = () => {
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle("SUCCESS")
|
||||
.setStyle(discord.ButtonStyle.Success)
|
||||
.setLabel(l.buttons.reopen)
|
||||
.setEmoji("✔")
|
||||
)
|
||||
|
||||
var reopenBar = new discord.MessageActionRow()
|
||||
var reopenBar = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicketTrue")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("✅")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicketFalse")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("❌")
|
||||
)
|
||||
|
||||
var reopenBar1 = new discord.MessageActionRow()
|
||||
var reopenBar1 = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicketTrue1")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("✅")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicketFalse1")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("❌")
|
||||
)
|
||||
|
||||
var reopenCommandBar = new discord.MessageActionRow()
|
||||
var reopenCommandBar = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicket1")
|
||||
.setDisabled(false)
|
||||
.setStyle("SECONDARY")
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("🔓")
|
||||
)
|
||||
|
||||
|
||||
@@ -6,19 +6,20 @@ const l = bot.language
|
||||
|
||||
/**@returns {"DANGER"|"SUCCESS"|"PRIMARY"|"SECONDARY"} */
|
||||
const getColor = (color) => {
|
||||
const b = discord.ButtonStyle
|
||||
if (color.toLowerCase() == "red"){
|
||||
return "DANGER"
|
||||
return b.Danger
|
||||
}else if (color.toLowerCase() == "green"){
|
||||
return "SUCCESS"
|
||||
return b.Success
|
||||
}else if (color.toLowerCase() == "blue" || color.toLowerCase() == "blurple"){
|
||||
return "PRIMARY"
|
||||
return b.Primary
|
||||
}else if (color.toLowerCase() == "black" || color.toLowerCase() == "gray" || color.toLowerCase() == "grey"){
|
||||
return "SECONDARY"
|
||||
return b.Secondary
|
||||
}else if (color == "DANGER" || color == "SECONDARY" || color == "SUCCESS" || color == "PRIMARY"){
|
||||
return color
|
||||
}else if (color.toLowerCase() == "none" || color.toLowerCase() == "false" || color.toLowerCase() == ""){
|
||||
return "SECONDARY"
|
||||
}else return "SECONDARY"
|
||||
return b.Secondary
|
||||
}else return b.Secondary
|
||||
}
|
||||
|
||||
const getOption = (id) => {
|
||||
@@ -47,7 +48,7 @@ exports.getButton = (id) => {
|
||||
}else if (option.type == "website"){
|
||||
var button = new discord.ButtonBuilder()
|
||||
.setDisabled(false)
|
||||
.setStyle("LINK")
|
||||
.setStyle(discord.ButtonStyle.Link)
|
||||
.setURL(option.url)
|
||||
|
||||
if (option.label){button.setLabel(option.label)}
|
||||
|
||||
Reference in New Issue
Block a user