簡體   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