【发布时间】:2017-04-06 23:51:20
【问题描述】:
我正在尝试在 nodejs 中创建一个 slack 机器人,它会根据用户的输入回复用户。但到目前为止,该机器人一直在回复他自己的消息
这是我的机器人的代码
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');
}
});
数据的控制台日志 打印
{ 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' }
那么为什么我的验证无法检查消息是否是从机器人本身发送的?
感谢您的宝贵时间
【问题讨论】:
-
是什么让您认为验证失败?
-
@MathewJibin 因为它一直在我的普通聊天室中无限循环地发布 Yooo
-
您确定
data.username和data.subtype符合预期吗?在消息中发送它们或在控制台中打印。 -
那么,当您说“用于数据打印的控制台日志”时,是指
data的三个单独的控制台日志吗?因为如果是这样的话,其中两个datas 甚至没有username或subtype,使它们未定义和undefined != "BotHelp",因此您的条件检查将通过并发送消息。如果是这种情况,on('message')可能不仅适用于实际的聊天消息,而且通常适用于通过 slack 传递给机器人的任何类型的数据。