【发布时间】:2021-04-24 19:05:00
【问题描述】:
我正在尝试制作票务系统,但是出现了问题。我想在有人打开票时做到这一点,等到票关闭,然后让他们再次做出反应。 (冷却时间)
这是我的代码:
client.on('messageReactionAdd', async (reaction, user) => {
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 db.get(`tickets_${reaction.message.guild.id}`);
if (!ticketid) return;
if (reaction.message.id == ticketid && reaction.emoji.name == ':tickets:') {
db.add(`ticketnumber_${reaction.message.guild.id}`, 1)
let ticketnumber = await db.get(`ticketnumber_${reaction.message.guild.id}`)
if (ticketnumber === null) ticketnumber = "1"
reaction.users.remove(user);
let CH = message.guild.channels.find(r => r.id == '770687676152020993');
if (!CH) return;
reaction.message.guild.channels.create(`ticket-${ticketnumber}`, {
type: 'text', parent: CH, reason: 'Reaction Tickets System',
permissionOverwrites: [
{
id: user.id,
allow: ["SEND_MESSAGES", "VIEW_CHANNEL"]
},
{
id: reaction.message.guild.roles.everyone,
deny: ["VIEW_CHANNEL"]
}
],
type: 'text'
}).then(async channel => {
let data = {
channelid: channel.id
}
db.push(`tickets`, data).then(console.log)
channel.send(`<@${user.id}>`).then(log => { db.set(`mention_${channel.id}`, log.id) })
db.set(`ticketauthor_${channel.id}`, user.id)
let icon = reaction.message.guild.iconURL()
let ticketmsg = await channel.send(new Discord.MessageEmbed()
.setTitle(`${user.username} Ticket`)
.setDescription("We are going to contact you as soon\n Click the reaction to close the ticket:closed_lock_with_key:")
.setFooter(reaction.message.guild.name, icon)
.setTimestamp()
);
ticketmsg.react(':closed_lock_with_key:')
console.log(`${ticketmsg.id}`)
db.set(`closeticket_${channel.id}`, ticketmsg.id)
})
}
}
});
【问题讨论】:
-
请使用缩进使您的代码对其他人更具可读性。
-
您好@Adob,请缩进您的代码,另外我建议您编写具体的错误和您打算执行的具体代码段,以及具体的错误,因为我们不在这种情况下,有足够的上下文真的很难帮助你。
标签: javascript node.js discord discord.js ticket-system