当用户在🎫这个表情符号上做出反应时,他们能够创建无限的票券渠道,我在脚本中错过了什么部分,以便用户只能创建一张票券,直到他们再次关闭它?
我的bot ID如下:701327880046510080
任何帮助将不胜感激!:)
bot.on('messageReactionAdd', async (reaction, user, channel) => {
if(user.partial) await user.fetch();
if(reaction.partial) await reaction.fetch();
if(reaction.message.partial) await reaction.message.fetch();
if(user.bot) return;
let ticketid = await settings.get(`${reaction.message.guild.id}-ticket`);
if(!ticketid) return;
if(reaction.message.id == ticketid && reaction.emoji.name == '🎫') {
reaction.users.remove(user);
const ticketChannel = reaction.message.guild.channels.cache.find(chan => chan.name === `ticket-${user.username}`)
if (ticketChannel) return;
reaction.message.guild.channels.create(`ticket-${user.username}`, {
parent: '701254271861260389',
position: 1,
permissionOverwrites: [
{
id: '701327880046510080',
allow: ["MANAGE_CHANNELS", "MANAGE_GUILD", "MANAGE_ROLES", "MANAGE_EMOJIS", "READ_MESSAGE_HISTORY", "MANAGE_MESSAGES", "SEND_MESSAGES", "VIEW_CHANNEL"]
},
{
id: user.id,
allow: ["SEND_MESSAGES", "VIEW_CHANNEL", "READ_MESSAGE_HISTORY"]
},
{
id: reaction.message.guild.roles.everyone,
deny: ["VIEW_CHANNEL"]
},
{
id: '306893721725829121',
allow: ["SEND_MESSAGES", "VIEW_CHANNEL", "READ_MESSAGE_HISTORY"]
}
],
type: 'text'
}).then(async channel => {
EMBED STUFF ..irrelevant. <-ignore this
send.react("🔒")
})
}
if(reaction.emoji.name == '🔒'){
if(!reaction.message.channel.name.includes("ticket-")) return;
reaction.users.remove(user);
reaction.message.channel.delete()
}
})
将这些行添加到您的代码
bot.on('messageReactionAdd', async (reaction, user, channel) => {
if(user.partial) await user.fetch();
if(reaction.partial) await reaction.fetch();
if(reaction.message.partial) await reaction.message.fetch();
if(user.bot) return;
let ticketid = await settings.get(`${reaction.message.guild.id}-ticket`);
if(!ticketid) return;
// add below here
const existing = bot.channels.cache.find(c => c.name === `ticket-${user.username}`)
if (existing) {
return reaction.message.reply({
content: `You already have a ticket open, please close it first before creating a new one. See the ${existing} channel`
});
}
// add above here
// rest of code