繁体   English   中英

机器人问用户希望加入哪个角色,机器人根据回复将其添加到角色中

[英]Bot asks user what role they wish to join, bot adds them to role based on the reply

我在业余时间正在慢慢学习javascript,但是我还没有完全了解这一点。 但是一个朋友要我做一个简单的机器人,向每个加入服务器的新用户发送私人消息,询问他们希望他们的用户名是哪种颜色,并将其添加到回复角色中。 服务器上的角色没有权限的意义。 它纯粹是用户名的一种颜色(不和谐服务器是基于DeviantArt的社区聊天)。

在下面的摘录中,它可以正常工作,直到用户回复“蓝色”颜色和“请选择一种颜色或确保您键入的颜色与显示的颜色完全一样”为止。 发送,而不是将用户添加到正确的角色,然后回复颜色是什么。 我相当确定这部分的问题:

user.addTo(server.roles.get("name", `${collected.first().content}`));
newmsg.channel.send(`Your name is now: **${collected.first().content}** Thank you and enjoy the server!`)

我只是不确定我所缺少的内容或应该如何构造它才能使其正常工作。 列出的颜色确实在角色区域中以小写字母显示,并且存在角色。

 bot.on('guildMemberAdd', member => { member.send("Welcome to RebornWings! Please select a color for your username! **Choices: orange-red, red, blue, blue-green, or purple** Please type exactly how they appear in the list of choices.") .then((newmsg) => { //Now newmsg is the message you sent newmsg.channel.awaitMessages(response => response.content, { max: 1, time: 300000, errors: ['time'], }).then((collected) => { user.addTo(server.roles.get("name", `${collected.first().content}`)) newmsg.channel.send(`Your name is now: **${collected.first().content}** Thank you and enjoy the server!`) }).catch(() => { newmsg.channel.send('Please choose a color or be sure you typed the color exactly as shown.'); }); }); }); bot.login(config.token); 

我想我已经很接近通过实验来获得它了,只是不确定我缺少什么。

在我慢慢学习的过程中,先感谢您的帮助。

角色添加过程之后的Catch语句被触发,因为您试图不正确地获取角色并将其添加到不存在的变量中。

如果将user替换为member并将addTo替换为addRole,那将是正确的。
同时get也不用于此目的。 您将Collection#get与雪花ID一起使用(服务器的角色保存在集合中)。
出于您的目的,您只需将get替换为find,它将可以正常工作。 但是正如Stock Overflaw已经说过的那样,我将首先检查用户是否输入正确。 永远不要相信用户输入的盲目性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM