如何访问User对象?

时间:2017-07-29 02:24:40

标签: javascript node.js discord

我正在使用discord.js作为我的机器人,我想使用the User object从中获取ID。但是,文档对如何使用它并不是非常具体。你如何获得特定用户的对象?

<小时/> 另外,我也是node.js的新手,所以也许在node.js中我只有一些巨大的相似之处,我并不喜欢它。

我的代码:

const Discord = require("discord.js");
const client = new Discord.Client();
var kingdoms = [];
var ids = [];
const Kingdom = function(name, id){
    this.name = name;
    this.aa = 1;
    this.da = 1; 
    this.attackDate = 0;
    this.exhausaa = 0;
    ids.push(id);
};
client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);
  client.user.setGame("k^help");
});

client.on('message', msg => {
  console.log(msg);
  console.log(msg.content.trim().indexOf('k^addkingdom'));
  if (msg.content.trim() == 'k^help') {
    msg.channel.send({embed:
        {
            description: 'Note: All things in brackets must be replaced and are parameters.',
            fields: [{
                name: "k^help",
                value: "Displays this message."
            },
            {
                name: "k^addkingdom [name]",
                value: "Adds a kingdom to the database named [name]. One per person only."
            }]
        }
    });
  }
  if (msg.content.trim().indexOf('k^addkingdom ') == 0) {
    //if(ids.contains(msg.GuildMember.id)){
    //  msg.reply("You already have a kingdom!");
    //}
    var content = msg.content;
    content = content.replace('k^addkingdom ', '');
    content.trim();
    msg.reply("Kingdom " + content + " added!");
    kingdoms.push(new Kingdom(content/*, msg.GuildMember.id*/));
  }
});

client.login('Hidden for privacy');

3 个答案:

答案 0 :(得分:1)

好吧,如果您正在响应消息,那么可以通过msg.author获取用户对象。和用户ID msg.author.id。 但是,如果要搜索的是从其ID中获取用户对象,例如将其保存在数据库中时。然后,通过client.users.get(id);进行操作,其中client是不和谐的client对象。 例如,如果您想以PM(专用模式)向用户发送消息,则采用这种方式

let user = client.users.get(id);
user.send("You need to wake up my friend!");

另一个响应消息的示例:

client.on('message', (msg) => {
   if(msg.content === '!test') {
       let userId = msg.author.id;
       msg.author.send('hello i\'m here ! Your user Id is ' + userId);
       // let user = msg.author; user.send(...
   }
});

另一个在第一次到达新服务器成员时向其发送消息的示例:

client.on("serverNewMember", (server, user) => {
     user.send("Welcome to: " + server.name);
});

同一示例,但使用sendMessage(奖励^ ^):

client.on("serverNewMember", (server, user) => {
     client.sendMessage(user, "Welcome to: " + server.name);
});

答案 1 :(得分:-2)

要获取机器人帐户的特定用户,请使用client.fetchUser(id)。这将返回Discord用户对象。 否则(如在自动机器人上)和通道上使用channel object.member(userResolvable)。

答案 2 :(得分:-3)

我不熟悉不和谐,但是如果你有一个用户对象,那么阅读你链接的api,只是为了得到用户的id

user.id