【问题标题】:Discord.js guildCreate/guildDelete event can't get the owner tag of a new guildDiscord.js guildCreate/guildDelete 事件无法获取新公会的所有者标签
【发布时间】: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


【解决方案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 代表的赏金”
猜你喜欢
  • 1970-01-01
  • 2021-05-24
  • 2020-12-30
  • 2020-07-07
  • 2021-11-01
  • 2021-07-01
  • 2021-02-07
  • 2020-12-08
  • 2021-04-30
相关资源
最近更新 更多