Slack Bot在Node js中回复自己的消息

我试图在nodejs中做一个松散的机器人,它根据用户的input回复用户。 但是到目前为止,机器人不断地回复自己的信息

这是我的机器人的代码

let Bot = require('slackbots'); // create a bot let settings = { token: 'xoxb-10584202949', name: 'BotHelp'}; let bot = new Bot(settings); bot.on('start', function() { bot.postMessageToChannel('general', 'At your service'); }); bot.on('message',function (data) { console.log(data); if (data.username != "BotHelp" && data.subtype != 'bot_message'){ bot.postMessageToChannel('general', 'Yoooo'); } }); 

控制台logging数据 打印

 { type: 'hello' } { text: 'At your service', username: 'BotHelp', bot_id: 'B336WGVSM', type: 'message', subtype: 'bot_message', team: 'T2ZAW44P3', user_team: 'T2ZAW44P3', channel: 'C303W2D4M', ts: '1479877794.000266' } { type: 'presence_change', presence: 'active', user: 'U33QS0VEF' } 

那么为什么我的validation无法检查消息是否已经从机器人本身发送?

感谢您的时间

我遇到过同样的问题。 slackbots中的消息事件触发每个事件,即user_typing,message_marked,desktop_notification。 所有的事件都可以在这里find。 现在我做了什么来确保我的机器人在收到自己的消息后并没有发送消息:

 bot.on('message',function (data) { if (data.user != "Uxxxxxx" && data.message === 'message'){ bot.postMessageToChannel('general', 'Yoooo'); } 

data.user给出一个唯一的id,你可以通过console.log(data)得到这个,并find你的user id。

另外,如果你想指定你想听的消息,说直接的消息。 data channel ID将以D开头。 对于私人频道,频道ID以G开头

希望这可以帮助。 我知道还有很多事情要做,但这是最基本的。 你可以在这个上成长。 我知道我会努力:D

如果我是你,我会检查参数是否真的是用户名和子types 。 如果是的话,我会尝试检查即将到来的对象的types(也许在来自Slack API的对象中有一个强制转换)。 我已经做了一个非常类似于你的小项目 ,使用相同的图书馆slackbots和我自己build立的库nodejslack( https://github.com/marcogbarcellos/nodejslack ),但没有得到这个问题。