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

Discord.js 带Embed与按钮的踢人命令运行报member.kick不是函数错误

错误原因

client.users.fetch()返回的是Discord全局的User对象,该对象仅包含用户的通用公开信息,不具备服务器成员相关的操作方法。kick()是GuildMember对象的专属方法,只有从当前服务器实例中拉取的成员对象才会携带这个方法。

修复方案

你需要从当前交互对应的服务器实例拉取成员对象,而非从全局用户池拉取,修改后的代码如下:

  1. 先提取目标用户ID:
const targetUserId = interaction.message.embeds[0].fields[0].value.replace(/[\\<>@#&!]/g,"");
  1. 替换拉取成员的方法:
// 从当前服务器拉取成员
interaction.guild.members.fetch(targetUserId)
  .then(member => member.kick())
  .catch(err => {
    console.error("踢人操作失败:", err)
    // 根据实际场景添加用户提示,比如交互回复
    interaction.reply({ content: "踢人失败,请确认目标用户仍在服务器内、且机器人拥有踢人权限", ephemeral: true })
  })

额外注意事项

  • 必须确保机器人拥有服务器的Kick Members权限,且机器人的角色等级高于被踢用户的角色等级
  • 如果交互已经提前做过延迟回复,需将interaction.reply替换为interaction.followUp或interaction.editReply避免报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:39:02