Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ignore Slack edits in a Room but not directly to the bot

I have a bot running using botkit. I want to give a warning message that edited messages are ignored just when you're talking directly to the bot so I'm doing:

controller.on('message_changed', function(bot, message) {
    bot.reply(message, ":warning: Your edit was ignored.");
});

The bot is in a room with many people so that those people can have "access" to the bot privately.

Problem: When someone edits a message in the room, the bot sends the warning. What's the best way to avoid this?

I'm hoping to avoid hard-coding the room ID into the room that the bot shouldn't reply to since we might have the bot in other rooms.

like image 972
Justin Harris Avatar asked Aug 19 '16 16:08

Justin Harris


1 Answers

You can check the message channel to figure out if it's a "direct_message" or not by seeing if the channel starts with a D . If it starts with a D, it was a direct message that's being edited. Something like this should work.

controller.on('message_changed', function(bot, message) {
    if (message.channel.match(/^D/)) {
        bot.reply(message, ":warning: Your edit was ignored.");
    }
});

Additionally, if you want this to work in chat rooms where the user directly messages the bot, you can do check the message text to see if it starts with an @yourBotsName

like image 96
Mac Adada Avatar answered Oct 16 '22 04:10

Mac Adada