我已经搜索了答案,但只找到了如何将服务器角色分配给发送消息或调用命令的人。
如何在服务器上找到特定用户并为其分配角色,而无需他们发送任何消息或做任何事情?
我尝试了一些无效的方法:
// the server bot is in
const server = client.guilds.cache.get("my server id here");
// trying to find specific user on the server
let myusr = server.members.cache.get("id", "user id here");
任何建议/解决方案?
编辑:这是我到目前为止的代码:
const { Client } = require('discord.js');
const client = new Client();
client.on('ready', () => {
console.log(client.user.tag);
// grabbing the server
const guild = client.guilds.cache.get("my server's id");
// calling a function and passing my server to it
setUsrRole(guild);
});
function setUsrRole(server) {
// grabbing my user
let myusr = server.members.fetch("My user id");
// finding my role by name
let myRole = server.roles.cache.find(myRole => myRole.name === "role name");
// trying to add the role to my user
myusr.roles.add(myRole);
// I also tried myusr.addRole(myRole);
};
// Bot login
client.login('my bot token');
答案 0 :(得分:0)
有多种方法,但我将向您展示两种方法。
client.on('guildMemberAdd', member => {
member.roles.add('someRole');
})
这种方式是,如果您想添加成员加入,但您需要确保在您的不和谐开发者门户中,当您邀请您的机器人时,“机器人”部分中的“服务器成员意图”框被选中。另一种可能基于不同事件的方法在这里:
await client.guilds.fetch(); //cache guilds
const guild = client.guilds.cache.get('someGuild');
await guild.members.fetch(); //should cache users automatically
const member = guild.members.cache.get('someMember');
member.roles.add('someRole');
//MAKE SURE ITS ASYNC
如果这些都不起作用,请发表评论,并告诉我你得到了什么错误。