Discord.js,message.guild.owner 返回 null

Posted

技术标签:

【中文标题】Discord.js,message.guild.owner 返回 null【英文标题】:Discord.js, message.guild.owner returns null 【发布时间】:2021-02-13 03:02:33 【问题描述】:

我正在为我的 discord 机器人编写 server-info 命令,我想从实际的公会中获取所有者用户名或标签。我在 discord js 11 中找到了一种方法,但在第 12 版下它不再工作了:

const guild = client.guilds.get(message.guild.id);
message.channel.send(message.guild.member(guild.owner) ? guild.owner.toString() : guild.owner.user.tag);
// if the user is in that guild it will mention him, otherwise it will use .tag

所以在 discord js 12 中,client.guilds.get 不是函数,guild.owner 返回nullmessage.guild.owner.user.username也返回Cannot read property 'user' of null。 我查看了文档,message.guild.owner 似乎是一个真实的财产(https://discord.js.org/#/docs/main/stable/class/Guild?scrollTo=owner)。所以我不知道为什么它返回 null。

【问题讨论】:

你修复client.guilds.get()函数了吗? 试试console.log(message.guild) 看看是否有ownerID。 @Lioness100,它现在是 client.guilds.cache.get,但它也不起作用 @WorthyAlpaca 我试过了。它正在返回所有公会信息。所以我把guildconst 改成了message.guild.id,但是现在,message.guild.id.owner 是未定义的 guild 对象中应该有一个名为ownerID 的值。看看你有没有。 console.log(message.guild.ownerID) 【参考方案1】:

我建议您先获取公会并确保它可用,然后再尝试修改或访问它。因此,您的机器人不会遇到任何错误。此外,据我所知,guild.owner 返回 null 但有一种解决方法。您可以通过guild.ownerID 获取公会所有者ID,并将成员作为公会成员获取。代码如下:

const guild = message.guild; // Gets guild from the Message object
if(!guild.available) return; // Stops if unavailable
await message.guild.members.fetch(message.guild.ownerID) // Fetches owner
      .then(guildMember => sOwner = guildMember) // sOwner is the owner
message.channel.send(guild.member(sOwner) ? sOwner.toString() : guild.owner.user.tag);

【讨论】:

【参考方案2】:

当你拥有公会时,这就是你获得所有者标签的方式。这也不依赖于缓存,因此如果您的机器人重新启动或缓存被清除,它仍然可以正常工作。

let ownerTag = undefined;
<client>.users.fetch(<guild>.ownerID).then(user => ownerTag = user.tag);

.fetch() 返回一个承诺,这就是为什么我声明一个变量然后为其赋值的原因。

【讨论】:

【参考方案3】:

确保您在您的不和谐开发者门户中启用这些意图,以便您的机器人可以访问您的服务器

之后,您可以访问您的用户所有者标签。

【讨论】:

以上是关于Discord.js,message.guild.owner 返回 null的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js,message.guild.owner 返回 null

message.guild.createRole无效-discord.js

Discord.js 级别角色

“fn 不是函数” discord.js

Discord.js 查找频道时的问题

discord.js 用 1 个命令添加 3 个角色