[英]How can I add a role to user, without him sending any message first?
我搜索了答案,但只找到了如何將服務器角色分配給發送消息或調用命令的人。
如何在服務器上找到特定用戶並為其分配角色,而無需他們發送任何消息或做任何事情?
我嘗試了一些不起作用的東西:
// 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');
有多種方法,但我將向您展示兩種方法。
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
如果這些不起作用,請發表評論,並告訴我您遇到了什么錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.