You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js的Discord.js v14中获取服务器创建者的用户名与头像

如何获取Discord服务器所有者的用户名和头像

在Discord.js v13及以上版本中,直接调用message.guild.owner.username大概率会失败,因为guild.owner默认是一个PartialGuildMember(不完整的成员对象),没有加载完整的用户数据。正确的做法是使用guild.fetchOwner()方法来获取完整的所有者信息。

核心实现步骤

  1. 用fetchOwner()异步获取服务器所有者的完整GuildMember对象
  2. 从该对象的user属性中提取用户名和头像URL
  3. 将这些数据用于信息命令或嵌入消息

代码示例

// 假设你的命令处理函数是异步的
async function serverInfoCommand(message) {
    // 获取服务器所有者(必须用await,因为是异步操作)
    const owner = await message.guild.fetchOwner();

    // 获取用户名(带 discriminator,格式为「用户名#1234」)
    const ownerFullUsername = owner.user.tag;
    // 若只需纯用户名,用:owner.user.username

    // 获取头像URL,dynamic: true 会自动适配GIF头像
    const ownerAvatar = owner.user.displayAvatarURL({ size: 256, dynamic: true });

    // 创建嵌入消息并发送
    const infoEmbed = new Discord.EmbedBuilder()
        .setTitle(`${message.guild.name} 服务器信息`)
        .addFields(
            { name: "服务器所有者", value: ownerFullUsername },
        )
        .setThumbnail(ownerAvatar)
        .setColor("#2F3136");

    await message.channel.send({ embeds: [infoEmbed] });
}

补充:获取原始服务器创建者(非当前所有者)

如果需要获取服务器的原始创建者(即使所有权已转让),可以通过查询服务器的审核日志:

async function getOriginalCreator(guild) {
    const auditLogs = await guild.fetchAuditLogs({ type: 'GUILD_CREATE', limit: 1 });
    const creatorEntry = auditLogs.entries.first();
    return creatorEntry?.executor; // 返回创建者的User对象,若不存在则返回undefined
}

// 使用示例
const creator = await getOriginalCreator(message.guild);
if (creator) {
    console.log(`原始创建者:${creator.tag}`);
    console.log(`创建者头像:${creator.displayAvatarURL({ size: 256 })}`);
}

内容的提问来源于stack exchange,提问作者luiggi batista dilones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:55:06