Slack Bot在Node js中回复自己的消息
问题描述:
我正在尝试在nodejs中创建一个基于其输入回复用户的松散bot。但就目前机器人不断回复自己的邮件Slack Bot在Node js中回复自己的消息
这是我的机器人
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' }
那么为什么代码我的验证无法检查消息是否已从机器人本身发送?
谢谢您的时间
答
我有同样的问题。消息事件slackbots触发每个事件,即user_typing,message_marked,desktop_notification。所有活动都可以在here找到。 我做现在什么来确保我的机器人接收自己的后未发送的信息是:
bot.on('message',function (data) {
if (data.user != "Uxxxxxx" && data.message === 'message'){
bot.postMessageToChannel('general', 'Yoooo');
}
的data.user赋予一个唯一的ID,您可以通过console.log(data)
得到这个,找到你的user
ID。
此外,如果您想指定您想要听的消息,请说直接消息。 channel
内部编号data
将以D开头。对于私人频道,频道ID以开头G
希望这会有所帮助。我知道这里还有很多事情要做,但这是最基本的。你可以在这个上成长。我知道我会试图:D
答
如果我是你,我会检查,如果参数是真的USER_NAME和亚型。如果它是正确的,我会尝试检查即将到来的对象的类型(也许在来自Slack API的对象中有一个强制转换)。我做了一个small project非常类似于你的,使用相同的图书馆slackbots和我自己建立的库nodejslack(https://github.com/marcogbarcellos/nodejslack),但没有得到这个问题。
什么让你觉得验证失败? –
@MathewJibin,因为它在我的一般聊天室中不断发帖Yooo在无限循环中 – Alexander
你确定'data.username'和'data.subtype'是否如预期的那样?发送消息中发送它们或在控制台中打印它们。 –