Discord消息对象变量未正确返回

时间:2018-04-10 02:13:32

标签: discord discord.io

因此,由于某种原因,消息对象的变量未正确返回,具体而言,我想获取消息的时间戳,但每次使用messageObj.timestamp时,它都会返回未定义的消息。尽管使用logger.info(messageObj)返回一个数组,其中时间戳是其中一个变量,并且它具有正确的时间戳。

以下是我的代码,以及显示我的问题的结果:

    var BigD = require('discord.io');
var logger = require('winston');
var auth = require('./auth.json');



// Configure Logger

logger.remove(logger.transports.Console);
logger.add(logger.transports.Console, {
    colorize: true
});
logger.level = 'debug';

// Init bot

var bot = new BigD.Client({
    token: auth.token,
    autorun: true
});

bot.on('ready', function (evt) {
    logger.info('Burners are heated up and ready sir!');
    logger.info('Currently, my name is: ');
    logger.info(bot.username + ' - (' + bot.id + ')');
});

bot.on('message', (userName, userID, channelID, messageContent, messageObj) => {
    logger.info(messageObj);
    logger.info(messageObj.t);
    logger.info(messageObj.s);
    logger.info(messageObj.op);
    logger.info(messageObj.type);
    logger.info(messageObj.tts);
    logger.info(messageObj.timestamp);
    logger.info(messageObj.pinned);
    logger.info(messageObj.nonce);
    logger.info(messageObj.mentions);
    logger.info(messageObj.mention_roles);
    logger.info(messageObj.mention_everyone);
    logger.info(messageObj.id);
    logger.info(messageObj.embeds);
    logger.info(messageObj.edited_timestamp);
    logger.info(messageObj.content);
    logger.info(messageObj.channel_id);
    logger.info(messageObj.username);
    logger.info(messageObj.id); //'id' is twice, but it doesn't have the same value in the full printed version, could this be an indication of a separate container variable/method?
    logger.info(messageObj.discriminator);
    logger.info(messageObj.avatar);
    logger.info(messageObj.attachments);
});

这是CMD中返回的内容: Image

1 个答案:

答案 0 :(得分:0)

如果你打印出messageObj,你会得到一个看起来像这样的javascript对象

{ t: 'MESSAGE_CREATE',
  s: 4,
  op: 0,
  d:
   { type: 0,
     tts: false,
     timestamp: '2018-05-18T17:26:28.177000+00:00',
     pinned: false,
     nonce: '447087599983525888',
     mentions: [],
     mention_roles: [],
  ...

所以你可以像

那样访问它
messageObj.d.timestamp

现在,至于您遇到此问题的原因,您对Client#on的最后一个参数感到困惑。你将它命名为messageObj并将其称为"消息",这在某种意义上可能是正确的,因为它仍然是发送给不和谐的消息,但它是{{1对象而不是Event对象。

Message对象看起来像这样

Message

将以您尝试的方式访问。