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

Discord.js代码报错:两处需加分号,出现Unexpected identifier错误

解决Discord.js guildMemberUpdate事件的语法错误

嘿,我一眼就看出问题所在了——你的代码结构完全搞错了,这才触发了SyntaxError: Unexpected identifier错误。咱们来一步步修正:

错误根源分析

  • 事件参数写错了:guildMemberUpdate事件的回调参数是oldMember和newMember,不是message,你一开始的参数就不对。
  • 函数定义语法错误:你在bot.on的回调里直接写async run(Client, oldMember, newMember) { ... }完全不符合JS语法,这里不需要额外定义run方法,直接把回调写成async函数就行。
  • Discord.js API调用错误:你写的Client.channel.cache是错的,应该是client.channels.cache(注意复数channels,而且通常客户端变量用小写client更规范)。
  • 小细节问题:has ('...')里的空格会导致潜在问题,还有你提到的分号规范,咱们一起调整。

修正后的完整代码

bot.on('guildMemberUpdate', async (oldMember, newMember) => {
  const channel = oldMember.client.channels.cache.get('707524910658093058');
  if (oldMember.roles.cache.size !== newMember.roles.cache.size) {
    if (!oldMember.roles.cache.has('712325241845710878') && newMember.roles.cache.has('712325241845710878')) {
      channel.send(`Thank ${newMember} for boosting you are awesome`);
    }
  }
});

关键修正点说明

  1. 把bot.on的回调直接声明为async函数,去掉了错误的run方法定义。
  2. 修正事件回调参数为oldMember和newMember,这是guildMemberUpdate事件的正确参数。
  3. 用oldMember.client获取客户端实例(或者你也可以直接用全局的bot变量),修正了channels的拼写和调用方式。
  4. 移除has方法后面多余的空格,补充了规范的分号,让代码更严谨。
  5. 确保逻辑只在用户新增特定booster角色时才发送消息,和你原本的需求一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 17:07:59