我想让我的slackbot应用程序在用户提到的频道上回答,而无需在代码中手动编写频道名称。
-example-
问题:我邀请我的漫游器进入频道#hello
,#hi
。我在频道#hello
提到了我的漫游器,写了@mybot hi there
,但是它只回复了频道#hi
我手动在代码中写下了代码。
我希望我的机器人自动找到消息来自哪个频道,并在用户提到的同一频道进行回复。
不像我写的bot.postMessageToChannel('everyone', `Chuck Norris: ${joke}`,params);
代码
这是我使用的模块和代码的链接
https://github.com/mishk0/slack-bot-api
const SlackBot = require('slackbots');
const axios = require('axios');
const bot = new SlackBot({
token : "",
name : ""
});
// Start Handler
bot.on('start', () =>{
const params = {
icon_emoji: ':)'
};
bot.postMessageToChannel('everyone', 'Feeling tired??? Have some fun with @Joker!'
, params);
});
// Error Handler
bot.on('error', (err) => console.log(err));
//Message Handler
bot.on('message', (data) => {
if(data.type !== 'message'){
return;
}
console.log(data);
handleMessage(data.text);
});
// Responding to Data
function handleMessage(message){
if(message.includes('chucknorris')){
chuckJoke();
}
else if(message.includes(' yomama')){
yoMamaJoke();
}
else if(message.includes(' random')){
randomJoke();
}
else if(message.includes(' help')){
runHelp();
}
}
// Tell a Chuck Norris Joke
function chuckJoke(){
axios.get('http://api.icndb.com/jokes/random/')
.then(res =>{
const joke = res.data.value.joke;
const params = {
icon_emoji: ':laughing:'
};
bot.postMessageToChannel('everyone', `Chuck Norris: ${joke}`,params);
});
}
答案 0 :(得分:1)
在here中,您会在message
上找到channel id
的数据对象
然后
您可以使用已使用的API中的postMessage()
postMessage(id,text,params)(返回:Promise)-向频道发布消息|组|用户ID,
bot.on('message', (data) => {
bot.postMessage(data.channel, 'Feeling tired??? Have some fun with @Joker!'
, params);
console.log(data);
handleMessage(data.text);
});