通过命令将DM发送给数据库中的特定人员discord.js-commando

时间:2018-02-01 11:19:55

标签: node.js discord.js

所以,我有一个问题就是在没有作者标签的情况下向特定的人发送DM,并且没有提及该人。我试着复制提到的数组:

/*jshint esversion: 6*/
const commando = require('discord.js-commando');

class Msgowner extends commando.Command {
  constructor(client) {
    super(client, {
      name: 'msgowner',
      group: 'info',
      memberName: 'msgowner',
      description: 'Gives rules on mock or legit duels.',
      examples: ['ladderrules type'],
    });
  }

  async run(message) {
    var user = {
      id: '12345',
      username: 'Bloodmorphed',
      discriminator: '12345',
      avatar: 'd510ca3d384a25b55d5ce7f4c259b2d0',
      bot: false,
      lastMessageID: null,
      lastMessage: null,
    };
    user.send('Test');
  }
}

module.exports = Msgowner;

我有必要以这种方式发送DM,但我似乎无法弄清楚如何。 (它现在给出的错误是一个未知函数)。还用通用数字替换id和discriminator,但它们在我的代码中是正确的。

2 个答案:

答案 0 :(得分:1)

尝试这样的事情 - 使用message.channel.members.find()方法获取您正在寻找的会员:

async run(message) {
    // get Collection of members in channel
    let members = message.channel.members;

    // find specific member in collection - enter user's id in place of '<id number>'
    let guildMember = members.find('id', '<id number>');

    // send Direct Message to member
    guildMember.send('test message');
}

修改:看起来也可以通过以下方式找到当前频道以外的用户:

async run(message) {
    // get client from message's channel
    let client = message.channel.client;

    // fetch user via given user id
    let user = client.fetchUser('<id number>')
    .then(user => {
        // once promise returns with user, send user a DM
        user.send('Test message'); 
    });
}

答案 1 :(得分:0)

好的,找到了答案:

  async run(message) {
    var user = {
      id: '12345,
      username: 'Bloodmorphed',
      discriminator: '12345',
      avatar: 'd510ca3d384a25b55d5ce7f4c259b2d0',
      bot: false,
      lastMessageID: null,
      lastMessage: null,
    };
    console.log(user);
    message.member.user.send('Test');
  }
}

module.exports = Msgowner;
编辑:这不是答案,仍在寻找答案。