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

discord.js v12指令获取服务器邀请返回[object Promise]报错

问题原因

createInvite()是异步API,调用后默认返回Promise对象,你没有等异步操作执行完成拿到实际的邀请数据,直接把Promise对象拼接成字符串发送,就会显示[object Promise]。另外你直接输出invite对象本身也拿不到链接,需要取对象的url属性才是可用的邀请地址。

修复方案
  • 给message事件的回调函数加async关键字,支持使用await等待异步结果
  • 在createInvite()调用前加await,等邀请创建完成后再执行后续逻辑
  • 补充基础的边界判断和错误捕获,避免因为频道不存在、权限不足导致机器人崩溃

修复后完整代码

client.on('message', async message => {
    if (message.content === prefix + 'invite'){
        try {
            const targetGuild = client.guilds.cache.get('981948182844039198');
            if (!targetGuild) return message.channel.send('目标服务器不存在');

            // 筛选出机器人有权限创建邀请的文字频道,避免取到无权限频道/语音频道
            const validChannel = targetGuild.channels.cache
                .filter(ch => ch.type === 'text' && ch.permissionsFor(targetGuild.me).has(['CREATE_INSTANT_INVITE', 'VIEW_CHANNEL']))
                .first();
            if (!validChannel) return message.channel.send('没有可用于创建邀请的频道');

            const invite = await validChannel.createInvite({
                maxAge: 0,
                maxUses: 0
            })
            message.channel.send(`服务器邀请链接:${invite.url}`)
        } catch (error) {
            console.error('创建邀请失败:', error);
            message.channel.send('邀请链接创建失败,请确认机器人拥有创建邀请的权限');
        }
    }
})

如果不需要做容错处理,最简修改只需要给回调加async、createInvite前加await,发送时取invite.url即可。

内容的提问来源于stack exchange,提问作者giggleshotter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:39:26