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`); } } });
关键修正点说明
- 把
bot.on的回调直接声明为async函数,去掉了错误的run方法定义。 - 修正事件回调参数为
oldMember和newMember,这是guildMemberUpdate事件的正确参数。 - 用
oldMember.client获取客户端实例(或者你也可以直接用全局的bot变量),修正了channels的拼写和调用方式。 - 移除
has方法后面多余的空格,补充了规范的分号,让代码更严谨。 - 确保逻辑只在用户新增特定booster角色时才发送消息,和你原本的需求一致。
内容的提问来源于stack exchange,提问作者Sander Seiersnes
相关产品推荐
相关产品推荐

