繁体   English   中英

Discord.js仅使用ID管理角色

[英]Discord.js manage roles with only id

我正在尝试编写一个discord.js机器人。 现在,我正在一个临时系统上工作,但是似乎找不到从具有用户ID的用户中删除角色的方法! 我已经搜索了互联网的周围,但是似乎找不到任何对我有帮助的东西。
例如 Discord.js文档白痴指南

我的代码:

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)返回一个承诺,然后您将从中获得一个用户。 您无法从用户中删除角色。 您需要GuildMember才能删除角色。
而不是: var unmute = client.fetchUser(Id) ,您将需要以下内容:

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

暂无
暂无

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

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