Как заставить бот Slack динамически отвечать на одном и том же канале, используя node.js - PullRequest
1 голос
/ 25 марта 2019

Я хочу, чтобы мое приложение 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);
    });
}

1 Ответ

1 голос
/ 25 марта 2019

С здесь вы найдете на message, он возвращает вам объект данных с channel id

, затем вы можете использовать postMessage() из API, который вы использовали

postMessage (id, text, params) (return: обещание) - отправляет сообщение на канал |группа |пользователь по ID,

bot.on('message', (data) => {

    bot.postMessage(data.channel, 'Feeling tired??? Have some fun with @Joker!'
    , params);
    console.log(data);
    handleMessage(data.text);
});
...