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

Discord机器人受邀入服后私信服主触发TypeError报错如何解决

报错原因

guildCreate事件回调返回的Guild(服务器)对象不存在author属性,访问不存在的属性会得到undefined,对undefined调用send()方法就会触发你看到的类型错误。
Discord服务器结构里没有所谓的author字段,服务器的创建者/所有者需要通过专属属性和方法获取。

正确实现代码
client.on('guildCreate', async guild => {
  try {
    // 异步拉取当前服务器的所有者用户对象
    const guildOwner = await guild.fetchOwner()
    // 向所有者发送私信
    await guildOwner.send('Hello')
  } catch (error) {
    // 捕获异常避免机器人崩溃:常见原因是用户关闭了陌生人私信权限、所有者账号不存在等
    console.error(`向服务器[${guild.name}]所有者发信失败:`, error.message)
  }
})
关键说明
  • 不要直接使用guild.owner获取所有者:这个字段仅读取本地缓存,存在缓存缺失返回null的风险,必须调用fetchOwner()方法从Discord接口拉取准确的所有者信息。
  • 发私信逻辑必须加try/catch异常捕获:大量Discord用户默认关闭非好友的私信权限,不做错误处理的话遇到这类场景机器人依然会崩溃。
  • 该逻辑不需要额外申请特殊机器人权限,只要机器人成功加入服务器,默认带有的查看成员权限就足够支撑拉取所有者、发私信的操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:27:29