【发布时间】:2021-07-06 01:53:41
【问题描述】:
所以我的 guildCreate 和 guildDelete 事件应该发送一个嵌入到带有所有者标签的频道
client.on("guildDelete", async(guild) => {
const EmbedLeave = new Discord.MessageEmbed()
.setColor('RED')
.setTitle(`Left Guild: ${guild.name}.`)
.setThumbnail(guild.iconURL())
.setTimestamp()
console.log(`Left Guild: ${guild.name}`);
await client.channels.cache.get(`746423099871985755`).send(EmbedLeave)
const EmbedLeave2 = new Discord.MessageEmbed()
.setColor('RED')
.setTitle(`Left Guild: ${guild.name}.`)
.setDescription(`**Guild owner:** ${guild.owner.user.tag}\n**Members size:** ${guild.memberCount}`)
.setThumbnail(guild.iconURL())
.setTimestamp()
await client.channels.cache.get(`758356170926325790`).send(EmbedLeave2)
});
client.on("guildCreate", async(guild) => {
const EmbedJoin = new Discord.MessageEmbed()
.setColor('#FFFF33')
.setTitle(`Joined Guild: ${guild.name}!`)
.setThumbnail(guild.iconURL())
.setTimestamp()
console.log(`Joined New Guild: ${guild.name}`);
await client.channels.cache.get(`746423099871985755`).send(EmbedJoin)
const EmbedJoin2 = new Discord.MessageEmbed()
.setColor('GREEN')
.setTitle(`Joined Guild: ${guild.name}!`)
.setDescription(`**Guild owner:** ${guild.owner.user.tag}\n**Members size:** ${guild.memberCount}`)
.setThumbnail(guild.iconURL())
.setTimestamp()
await client.channels.cache.get(`758356170926325790`).send(EmbedJoin2)
});
},
};
我正在使用两个嵌入,因为我想在这部分不同的嵌入到不同的频道
.setDescription(`**Guild owner:** ${guild.owner.user.tag}\n**Members size:** ${guild.memberCount}`)
它通常适用于机器人之前所在的服务器(可能是因为缓存),但对于全新的服务器,它会给出错误无法读取可能未定义的“标签”
我也尝试通过这样做来改变获取所有者标签的方式
let owner = await client.users.cache.get(guild.ownerID)
.setDescription(`**Guild owner:** ${owner.tag}\n**Members size:** ${guild.memberCount}`)
但是同样的事情发生在新的服务器上会出现同样的错误
其他功能,如 guild.memberCount guild.iconURL() 工作正常
【问题讨论】:
-
我让我的机器人自己创建了一个新的公会(从而触发了事件),你的代码工作得很好。也许有权限的东西(尽管我认为不太可能)?
标签: node.js discord.js