有沒有辦法讓用戶不能使用按鈕,除非他們有像管理員這樣的特定權限?
下面的代碼適用于我的票證系統,我只是在尋找解決方案,當用戶創建票證時,??? close除非他們有權限,否則他們將無法使用按鈕關閉它。
如果我能在這方面提供幫助,我將不勝感激,因為如果用戶以垃圾郵件的方式打開票并立即關閉票會很煩人。
const { MessageEmbed, MessageActionRow, MessageButton } = require("discord.js");
const botconfig = require("../../botconfig");
module.exports = {
name: "ticket",
aliases: ["new"],
run: async (client, message, args) => {
let channel = message.guild.channels.cache.find(channel => channel.name === `ticket-${message.author.id}`)
if (message.guild.channels.cache.find(channel => channel.name === `ticket-${message.author.id}`)) {
return message.reply({ content: `You currently have an open ticket.\n<:CL_Reply:909436090413363252> <#${channel.id}>` });
}
const ticketEmbed = new MessageEmbed()
.setTitle("__Support will be will you shortly__")
.setDescription("> While you wait, please let us know how we can help\nClick on the ??? to close this ticket")
.setColor("GREEN")
.setFooter(`User ID: ${message.author.id}`, message.author.displayAvatarURL())
const deleteTicket = new MessageActionRow().addComponents(
new MessageButton()
.setCustomId("delete")
.setLabel("??? Close")
.setStyle("DANGER")
);
//support ping for later references - <@&705344500578648119>
message.guild.channels.create(`ticket-${message.author.id}`, {
permissionOverwrites: [
{
id: message.author.id,
allow: ["SEND_MESSAGES", "VIEW_CHANNEL"]
},
{
id: message.guild.roles.everyone,
deny: ["SEND_MESSAGES", "VIEW_CHANNEL"]
}
],
type: "GUILD_TEXT"
})
.then(async channel => {
message.reply({ content: `<:CL_Support:912055272275599380> Your ticket has been created!\n<:CL_Reply:909436090413363252> ${channel}` });
channel.send({ content: `@here <@${message.author.id}>`, embeds: [ticketEmbed], components: [deleteTicket] });
const logchannel = message.guild.channels.cache.find(channel => channel.name === "ticket-logs");
if (logchannel) {
const ticketLogs = new MessageEmbed()
.setTitle("__New Ticket__")
.setDescription(`A new ticket was created\n<:CL_Reply:909436090413363252> ${channel.name}\n\nCreated <t:${Math.floor(Date.now()/1000)}:R>`)
.setColor("GREEN")
logchannel.send({ embeds: [ticketLogs] });
}
});
}
};
uj5u.com熱心網友回復:
您可以使用成員權限的has方法檢查標志,如果他沒有,則只需禁用即可
const { Permissions } = require('discord.js');
if(!message.member.permissions.has(Permissions.FLAGS.ADMINISTRATOR) {
deleteTicket.components[0].setDisabled(true);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/379291.html
