【发布时间】:2021-06-17 08:30:19
【问题描述】:
我正在尝试为我的 discord.js 机器人创建票证功能,但是当我单击表情符号时,它会引发错误。代码如下:
let messageEmbed = await message.channel.send(ticketEmbed);
messageEmbed.react("1️⃣");
messageEmbed.react("2️⃣");
messageEmbed.react("3️⃣");
messageEmbed.react("4️⃣");
client.on('messageReactionAdd', async (reaction, user) => {
if (reaction.message.partial) await reaction.message.fetch();
if (reaction.partial) await reaction.fetch();
if (user.bot) return;
if (!reaction.message.guild) return;
if (reaction.emoji.name === firstreaction) {
const categoryId = "822577084223586364"
var username = reaction.message.guild.members.cache.get(user.id)
var userDiscriminator = reaction.message.guild.members.cache.get(user.id).discriminator
var ticketExists = false
message.guild.channels.cache.array.forEach(channel => {
if(channel.name == userName.toLowerCase() + "-" + userDiscriminator){
var ticketExists = true
message.username.send("You already have an open ticket!")
return
}
})
if (ticketExists) return
message.guild.channels.create("Playerreport-" +username.toLowerCase + userDiscriminator, {type: "text"})
【问题讨论】:
-
你不需要将
message.guild.channels.cache转换为数组,缓存存储为一个集合,它继承了Map的属性。您可以在集合上致电.forEach()
标签: javascript discord.js