票证系统不一致.js检查票证



我的票务系统基本完成了。我剩下的唯一问题是检查一个人是否已经有票了。不幸的是,我不知道如何检查。我主要通过数据库找到答案,但我现在想避免这种情况。

我的票务系统:


case 'ticket':
case 'Ticket':

var guild = client.guilds.cache.get('897417868633940028')
guild.channels.create(message.member.displayName + 's-ticket', {
type: 'text',
topic: message.author.id + '-ticket',
parent: '897771652451678268',
permissionOverwrites: [
{
id: message.author.id,
allow: ['SEND_MESSAGES', 'VIEW_CHANNEL', 'READ_MESSAGE_HISTORY', 'EMBED_LINKS', 'ATTACH_FILES'],
},
{
id: message.guild.roles.everyone,
deny: ['VIEW_CHANNEL'],
},
{
id: "897772395368583178",
allow: ['SEND_MESSAGES', 'VIEW_CHANNEL'],
},
],
})
let created = new Discord.MessageEmbed()
.setTitle("Ticket-System")
.setThumbnail('png')
.setDescription(`Hello, '${message.member.displayName}'. You're ticket is created.`)
.setColor("GREY")
.setTimestamp()

message.channel.send({ embeds: [created] });
let newchannel = message.guild.channels.cache.find(channel => channel.name === `${message.member.displayName}s-ticket`);
message.guild.channels.cache.get(`${newchannel}`)
break;

case 'close':
if (!message.channel.name.includes("-ticket")) return message.channel.send("You can't delete that channel, nice try")
message.channel.delete()
break;

case 'rename':
var rename = message.content.slice(" rename" .length);
if(!message.channel.name.includes("-ticket")) return message.channel.send("You can't rename this channel!")
if(!message.member.permissions.has(Discord.Permissions.FLAGS.MANAGE_ROLES)) return message.channel.send("You can't do that!")
message.channel.setName(rename + '-ticket')

break;

由于将主题设置为userID-ticket,因此可以检查频道主题。通道可能未缓存,因此使用GuildChannelManager#fetch可能会有所帮助。

await guild.channels.fetch()
if (guild.channels.cache.some(c => c.topic?.startsWith(message.author.id)) {
//User has a ticket already
}

最新更新