【发布时间】:2019-11-10 02:14:28
【问题描述】:
我正在尝试制作一个机器人,为用户提供对 Discord 服务器的完全访问权限。
我已让机器人提供一个随机数字,并在用户加入时为他们提供访客角色,但我需要我的机器人在他们重复该数字时为他们提供成员角色。
这是我的代码:
let code;
client.on('guildMemberAdd', member => {
const channel = member.guild.channels.find(ch => ch.name === 'captcha');
if (!channel) return;
member.addRole(member.guild.roles.find("name", "Guest"));
code = Math.floor(Math.random() + Math.random() + Math.random() + Math.random() * 992875 + Math.random());
channel.send('Welcome, ' + member.toString() + '! Please repeat these numbers to get access to this server: ' + code);
if (message.content == code) {
member.addRole(member.guild.roles.find("name", "Member"));
code = -1;
}
});
client.on('message', async message => {
if (message.content === 'fakeJoin--') {
client.emit('guildMemberAdd', message.member || await message.guild.fetchMember(message.author));
}
});
我没有收到任何错误消息,机器人没有崩溃。当我重复这个数字时没有任何反应。
【问题讨论】:
-
您是否尝试自己解决问题?就像使用日志一样。例如,可以在 if 前添加
console.log(message.content, code),在 if 中添加console.log('yes'),查看程序是否进入。通过一步一步地做这件事,你可能会解决你的问题,如果你没有成功,你会有更好的信息提供给帮助你的人 -
如果这个系统的目的是防止用户帐户下的有害机器人,如果你知道消息的样子(取消息,提取代码,回复它),很容易绕过它。有 npm 包可帮助在图像中生成真正的 CAPTCHA,这更加安全且具有原生外观。
标签: javascript node.js discord.js