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

Discord.js、message.guild.owner返回null,discord,discord.js,owner,Discord,Discord.js,Owner,我正在为我的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); /

我正在为我的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
返回
null
message.guild.owner.user.username也返回了
无法读取null的属性“user”

我看了一下文档,
message.guild.owner
似乎是不动产()。所以我不知道为什么它会返回空值。

我建议您首先获得公会,并确保它在尝试修改或访问它之前可用。因此,您的机器人不会出现任何错误。另外,据我所知,
guild.owner
返回null,但有一种方法可以解决这个问题。您可以通过
guild.ownerID
获取帮会所有者ID,并以帮会成员身份获取该成员。代码如下:

const guild=message.guild;//从消息对象获取消息
如果(!guild.available)返回;//如果不可用,则停止
等待message.guild.members.fetch(message.guild.ownerID)//获取所有者
.然后(guildMember=>sOwner=guildMember)//sOwner是所有者
message.channel.send(guild.member(sOwner)?sOwner.toString():guild.owner.user.tag);

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

let ownerTag=未定义;
.users.fetch(.ownerID).then(user=>ownerTag=user.tag);

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

你修复了
client.guilds.get()
函数了吗?试试
console.log(message.guild)
看看是否有ownerID。@Lioness100,现在是client.guilds.cache.get,但它不起作用neither@WorthyAlpaca我试过了。它将返回所有公会信息。因此,我将
guild
常量更改为
message.guild.id
,但现在,
message.guild.id.owner
未定义
guild
对象中应该有一个名为
ownerID
的值。看看你有没有<代码>控制台.log(message.guild.ownerID)