当新公会邀请机器人时,很难弄清楚如何从新公会获取公会所有者id



所以我试图让机器人从刚加入的公会中获取公会所有者id,这样它以后就可以与我的数据库进行比较,看看他们是否有一个固定的角色,可以锁定或解锁某些命令。但无论我怎么做,所有者id都会返回为未定义,并且所有内容都会显示";无法读取未定义的X"天气我尝试。用户。公会等

/// adding a guild to the database upon invite
bot.on('guildCreate', async (guild) => {
// Guild the user needs to have the role in
let guildA = process.env.BOT_GUILD;
console.log(guildA);
// Role that the user needs
let requiredRole = process.env.PAID_ROLE;
console.log(requiredRole);
// Member object of the user in guildA
let member = guild.bot.users.fetch(guild.ownerID);
console.log(member);
----------------------------
i have also tried 
// Member object of the user in guildA
let member = bot.guild.ownerID;
console.log(member);

// Member object of the user in guildA
let member = bot.guilds.cache.get(guild.ownerID).id;
console.log(member);
// Member object of the user in guildA
let member = guilds.members.cache.get(guild.ownerID);
console.log(member);
etc etc etc

在这种情况下,我如何正确地获取公会所有者id?在这一点上,我觉得我尝试了所有对其他人有效的方法。

不确定我是否正确理解您,但可能您确实想将所有者作为成员。您可以使用guild.ownerguild.members.fetch(ID):

bot.on('guildCreate', async (guild) => {
// Guild the user needs to have the role in
let guildA = process.env.BOT_GUILD;
console.log(guildA);
// Role that the user needs
let requiredRole = process.env.PAID_ROLE;
console.log(requiredRole);
// fetch the guild owner as a member
let member = await guild.members.fetch(guild.ownerID);
console.log(member);
});

在GuildCreate事件中,如果您想将公会所有者作为用户对象,您有两个选择。Guild对象包含ownerID属性,您已找到该属性。还有所有者属性,它是GuildMember对象。我建议检查这个所有者属性是否存在,你可以通过访问GuildMember#user从中获取用户,这将返回该公会所有者的用户对象。

如果该成员不存在,则必须获取该用户。您可以通过在获取用户时等待请求来完成此操作。由于fetch方法返回一个promise。

例如:

client.on('guildCreate', async (guild) => {
const guildOwner = guild.owner ? guild.owner : await 
guild.members.fetch(guild.ownerID);
console.log(guildOwner); 
})

最新更新