簡體   English   中英

如何向用戶添加角色,而無需他先發送任何消息?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM