Discord.js guildCreate/guildDelete 事件无法获取新公会的所有者标签
Posted
技术标签:
【中文标题】Discord.js guildCreate/guildDelete 事件无法获取新公会的所有者标签【英文标题】:Discord.js guildCreate/guildDelete event can't get the owner tag of a new guild 【发布时间】: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()
工作正常
【问题讨论】:
我让我的机器人自己创建了一个新的公会(从而触发了事件),你的代码工作得很好。也许有权限的东西(尽管我认为不太可能)? 【参考方案1】:你可以试试这个(但这个使用message
):
const username = await message.client.users.fetch(message.guild.ownerID);
// This is optional
const serverOwner = username;
或者这个:
const owner = await client.users.fetch(guild.ownerID);
我不确定它是否适合你,我不在家,所以我无法测试它,但我遇到了类似的问题:
如果他离线,我无法获得guild owner
。可能是因为他不再被缓存。在这种情况下,first solution
为我工作
【讨论】:
奇怪,我记得试过这个但没有用,但谢谢你告诉我!它现在工作了 你应该奖励他们。 我试过了,但它说“你可以在 16 小时内奖励价值 50 代表的赏金”以上是关于Discord.js guildCreate/guildDelete 事件无法获取新公会的所有者标签的主要内容,如果未能解决你的问题,请参考以下文章
Discord 错误错误 Discord.js 中的无效令牌
Discord 仅识别 discord.js 中的“ping”命令
错误“const Discord = require(discord.js) ^ ReferenceError: discord is not defined”
(Discord 机器人)当用户加入 Discord 服务器(discord.js)时,如何发送欢迎消息?