javascript - Discord.js 仅使用 id 管理角色

标签 javascript node.js discord discord.js

我正在尝试编写一个discord.js 机器人。现在我正在开发一个 tempmute 系统,但似乎无法找到一种仅使用以下命令即可从用户中删除 Angular 色的方法 他们的 id 可以一起工作!我在互联网上搜索过,但似乎找不到任何对我有帮助的东西。
前任。 Discord.js docsAn idiots guide

我的代码:

exports.run = (client, message, args, config) => { if(!message.member.roles.some(r=>[config.BotMaster].includes(r.name))) return message.reply("Du behöver en högre rank!");
const mysql = require('mysql');
const con = mysql.createConnection({
    host: config.host,
    user: config.user,
    password: config.password,
    database: config.database
});

    let role = message.guild.roles.find("name", config.Muted);
    let member = message.mentions.members.first();
    let sql = "SELECT * FROM TempMute WHERE Time<=" + Date.now() + ' AND Unmuted!="True"'
    con.query(sql, function (err, rows) {
        if (err) return console.log(err);
        for (var i = 0; i < rows.length; i++) {
            var row = rows[i];
            var sql2 = "UPDATE TempMute SET Unmuted = 'True' WHERE Id = " + row.Id + ";";
            con.query(sql2, function (err, result) {
                if (err) return console.log(err);
                var Id = row.Name
                var unmute = client.fetchUser(Id)
                unmute.removeRole(role).catch(console.error);
            });
        };
    });
};

错误:

/home/pi/Documents/PinkBot/node_modules/mysql/lib/protocol/Parser.js:80
    throw err; // Rethrow non-MySQL errors
    ^

TypeError: unmute.removeRole is not a function
at Query._callback (/home/pi/Documents/PinkBot/commands/rm.js:22:24)
at Query.Sequence.end (/home/pi/Documents/PinkBot/node_modules/mysql/lib/protocol/sequences/Sequence.js:88:24)
at Query._handleFinalResultPacket (/home/pi/Documents/PinkBot/node_modules/mysql/lib/protocol/sequences/Query.js:139:8)
at Query.OkPacket (/home/pi/Documents/PinkBot/node_modules/mysql/lib/protocol/sequences/Query.js:72:10)
at Protocol._parsePacket (/home/pi/Documents/PinkBot/node_modules/mysql/lib/protocol/Protocol.js:279:23)
at Parser.write (/home/pi/Documents/PinkBot/node_modules/mysql/lib/protocol/Parser.js:76:12)
at Protocol.write (/home/pi/Documents/PinkBot/node_modules/mysql/lib/protocol/Protocol.js:39:16)
at Socket.<anonymous> (/home/pi/Documents/PinkBot/node_modules/mysql/lib/Connection.js:103:28)
at Socket.emit (events.js:160:13)
at addChunk (_stream_readable.js:269:12)

最佳答案

client.fetchUser(id) 返回一个 promise ,从该 promise 中您将获得一个用户。 您无法删除用户的 Angular 色。您需要一个 GuildMember 才能删除 Angular 色。
您需要这样的内容,而不是:var unmute = client.fetchUser(Id):

message.guild.fetchMember(Id).then(guildMember => {
    guildMember.removeRole(role).catch(console.error);
})

关于javascript - Discord.js 仅使用 id 管理角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49265032/

相关文章:

json - 使用 XHR 请求将 Discord 嵌入发送到 Webhook

javascript - 如何仅将参数传递给需要它的中间件?

javascript - Express 找不到 webpack 包

javascript - 如何在不捆绑的情况下将为 AMD 编写的代码重写/重新打包为 CommonJs?

Node.js 数据库按顺序查询

javascript - 如何检查 DiscordJS V13 中是否有人在语音 channel 中?

javascript - 如果 <a></a> 具有特定的 jQuery 或 JS anchor ,则将元素附加到 <a></a>

javascript - CSS 隐藏和可见属性一直在变化

打印 Javascript 而不是 ASP(经典)输出

python - Discord.py 我想在服务器名称旁边添加服务器图标