使用discord.js 14.6.0检测成员自定义状态中的邀请链接
Discord.js 14.6.0 检测自定义状态中的邀请链接
你的代码存在几个问题:
- 拼写错误:
member.activites应为member.activities(单词拼写失误) - 变量名大小写不一致:定义的变量是
invitelink,判断时写成了inviteLink,会触发未定义错误 - 匹配范围过窄:仅检测
.gg/VANITY无法覆盖所有Discord邀请链接格式
修正后的代码:
const { Events } = require('discord.js'); // 匹配所有常见Discord邀请链接的正则表达式 const inviteRegex = /(discord\.gg\/|discord\.com\/invite\/|discordapp\.com\/invite\/)/i; client.on(Events.PresenceUpdate, (oldPresence, newPresence) => { const member = newPresence.member; if (!member) return; // 获取自定义状态的内容 const customStatus = member.activities .find(activity => activity.type === 'CUSTOM_STATUS') ?.state; if (customStatus && inviteRegex.test(customStatus)) { console.log(`检测到邀请链接:${customStatus}`); // 此处可添加后续处理逻辑,比如发送警告、移除成员等 } });
补充说明:
- 正则表达式中的
i标记表示不区分大小写,能匹配大写或小写的链接格式 - 提前判断
member是否存在,避免后续逻辑出现空值报错 - 若需要更精准的匹配(比如验证邀请码格式),可以进一步调整正则表达式规则
内容的提问来源于stack exchange,提问作者Cyrus
相关产品推荐
相关产品推荐

