【问题标题】:Give role to user from direct message从直接消息中为用户赋予角色
【发布时间】:2020-01-07 14:04:07
【问题描述】:

我想制作一个不和谐的帮助机器人,它可以向用户提问。如果用户可以正确回答所有问题,机器人就会在服务器上为他们提供一个角色。

我怎么能这样做,机器人将角色赋予服务器上的用户?

我用 javascript 编写,带有 discord.js 模块。

client.on("message", (datas) => {
    if (datas.author.bot) { return; }

    let messageArray = datas.content.split(" ");
    let command = messageArray[0];
    let args = messageArray.slice(1);

    if (datas.channel.type === "dm") {
        [...]
        if (usersInTest[datas.user] !== undefined) {
            [...]
            } else if (usersInTest[datas.user][0] < testQuestions.length) {
                if (Number(datas.content) && Number(datas.content)>=1 && Number(datas.content)<=3) {
                    if (testQuestions[usersInTest[datas.user][0]][4] === Number(datas.content)) {
                        if (usersInTest[datas.user][0]+1 >= testQuestions.length) {
                            datas.channel.send("You successfully complete the test!");
//give role to user
                            [...]
                            return;
                        }
                        [...]
                    } else {
                        [...]
                    }
                } else {
                    [...]
                }
            }
        }
    }
});

function sendQuestion(channel, user) {
    if (usersInTest[user] !== undefined || channel !== undefined) {
        channel.send(testQuestions[usersInTest[user][0]][0]+"\n\n(1) " + testQuestions[usersInTest[user][0]][1] + "\n(2) " + testQuestions[usersInTest[user][0]][2] + "\n(3) " + testQuestions[usersInTest[user][0]][3] + "\n Type the answer to continue.");
    }
}

【问题讨论】:

    标签: discord.js


    【解决方案1】:
    
    client.on("message", (client, datas) => {
        if (datas.author.bot) { return; }
    
        let messageArray = datas.content.split(" ");
        let command = messageArray[0];
        let args = messageArray.slice(1);
        let guild = client.guilds.get("Guild ID");
        let member = message.guild.member(datas.author.bot);
        if (datas.channel.type === "dm") {
            [...]
            if (usersInTest[datas.user] !== undefined) {
                [...]
                } else if (usersInTest[datas.user][0] < testQuestions.length) {
                    if (Number(datas.content) && Number(datas.content)>=1 && Number(datas.content)<=3) {
                        if (testQuestions[usersInTest[datas.user][0]][4] === Number(datas.content)) {
                            if (usersInTest[datas.user][0]+1 >= testQuestions.length) {
                                datas.channel.send("You successfully complete the test!");
                                 member.addRole("Role Id")
                                [...]
                                return;
                            }
                            [...]
                        } else {
                            [...]
                        }
                    } else {
                        [...]
                    }
                }
            }
        }
    });
    
    

    首先你需要找到我创建的公会let guild = client.guilds.get("Guild ID");,之后你需要验证用户是否是公会let member = message.guild.member(datas.user);的成员,最后你只需将它添加到成员member.addRole("Role Id") .

    【讨论】:

    • 您可能需要确保message.guild.member(...) 是真实的,因为如果用户不在公会中,它将是undefined。从任何被拒绝的 Promise 中捕获错误也很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 2017-07-07
    • 2022-08-22
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    相关资源
    最近更新 更多