不和谐.js类型错误:无法读取未定义的属性(读取"添加")



我正在做的事情出了什么问题?我正在尝试制作一些代码,以检测何时有人试图欺骗他人。这不是我犯错误的部分。当我试图将我的静音角色赋予邮件作者时,就会出现错误。有人请帮忙!

这是代码:

// mute for 3 hours if anyone is scamming
client.on("messageCreate", async message => {
if (message.author.bot) return;
if (message.content.includes("free robux" || "free v-bucks" || ...)) {
const target = message.author.username;
const mutedRole = message.guild.roles.cache.get("1004037957902147676");
message.delete();
message.channel.send("@" + message.author.username + ", scamming is...");
message.member.roles.add("1004037957902147676");
setTimeout(() => {
target.roles.cache.remove(mutedRole);
}, 5000);
}
}, {});

错误如下:无法读取未定义(读取"add"(的属性

谢谢!

由于多种原因,您的代码无法工作。

  • 你的"图案";在CCD_ 1内部将仅针对第一项进行每次检查。(在"free robux"的情况下,请参阅MDN逻辑或(||((。要检查所有字符串,您要么必须使用regex模式,要么单独测试您正在搜索的每个字符串。

  • target是一个字符串(消息作者的用户名(。如果要管理用户的角色,则必须将target更改为message.member

您还将回调声明为async,但没有使用任何awaits

你的代码应该是这样的。

const scamRegex = /pattern 1|second pattern|third pattern/;
client.on('messageCreate', async (message) => {
if (message.author.bot || !message.member) return;
if (!scamRegex.test(message.content)) return;
const userRoles = message.member.roles;
await message.delete();
await message.channel.send('...some warning...');
await userRoles.add('<ROLE_ID>');
setTimeout(() => userRoles.remove('<ROLE_ID>'), <MUTE_TIME_IN_MS>);
});

您将角色作为属性传递给message.member.roles.add()

message.member.roles.add(mutedRole);

下次发布问题时请使用代码块,并确保代码的格式。

最新更新