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

Discord.js执行ban命令报INVALID_TYPE错误:传入参数不是对象

问题原因

你使用的discord.js v13及更高版本中,GuildMember.ban()方法的入参规范发生了变更,不再支持直接传入字符串类型的封禁原因,要求传入配置对象,这就是报错TypeError [INVALID_TYPE]: Supplied options is not an object的根源。
kick方法仍然兼容直接传原因字符串的写法,所以相同逻辑下kick命令可以正常运行。

修复方案

将你代码中调用ban方法的行:

target.ban(reason);

修改为符合v13+规范的对象入参写法:

// 基础写法,仅传入封禁原因
target.ban({
  reason: reason || 'Unspecified'
})

如果需要额外配置封禁时删除该用户的历史消息,可以添加对应参数:

// 示例:封禁同时删除该用户最近24小时内发送的消息
target.ban({
  reason: reason || 'Unspecified',
  deleteMessageSeconds: 86400 // 单位为秒,最大支持604800即7天
})
额外优化建议

ban()是异步方法,建议添加await关键字等待封禁操作执行完成后再发送成功通知,避免出现通知已发但封禁操作还在执行/执行失败的逻辑异常:

  1. 先将当前命令的执行函数声明为async
  2. 修改ban调用为:
await target.ban({
  reason: reason || 'Unspecified'
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:06:02