因此,由于某种原因,消息对象的变量未正确返回,具体而言,我想获取消息的时间戳,但每次使用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);
});
答案 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
将以您尝试的方式访问。