You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I noticed that my Bot had problems with ephemeral messages, in particular with unfolding URLs.
How it can be reproduced
bot posts an URL to a channel
slackbot unfolds it
bot posts the same URL to the channel
slackbot sends message: "Pssst! I didn\u2019t unfurl <https:\/\/example.com> because it was already shared in this channel quite recently (within the last hour) and I didn\u2019t want to clutter things up."
my bot responds with a Sorry @slackbot, I don't understand that command!
now slackbot responds that he didn't understand
...there is a pingpong
Possible solution
The message hook should filter out those ephemeral messages. I think it will be something like:
lib/slack-ruby-bot/hooks/message.rb:
moduleSlackRubyBotmoduleHooksclassMessagedefcall(client,data)returnifmessage_to_self_not_allowed? && message_to_self?(client,data)returnifephemeral_message?(data)# this would be newdata.text=data.text.stripifdata.textresult=child_command_classes.detect{ |d| d.invoke(client,data)}result ||= built_in_command_classes.detect{ |d| d.invoke(client,data)}result ||= SlackRubyBot::Commands::Unknown.tap{ |d| d.invoke(client,data)}resultend
...
privatedefephemeral_message?(data)data.is_ephemeral# and you could also check for the data.subtype == 'bot_message'end
I would be willing to contribute this fix if you like the solution.
The text was updated successfully, but these errors were encountered:
That seems consistent with what I saw. Would love a PR with proper README/UPGRADING documentation and an option to override this behavior just like for bot messages.
@dblock that's fine! I have two open questions before i start:
you said override this behavior just like for bot messages., did you mean, just like message_to_self?
i asked myself what the check should include. Should it never respond to ephemeral messages or just not to ephemeral messages from bots? Or should it not reply to bots at all? This could bring some breaking changes. An alternative solution could also be to catch it in SlackRubyBot::Commands::Unknown ... so an unknown-message should never go to a bot.
I noticed that my Bot had problems with ephemeral messages, in particular with unfolding URLs.
How it can be reproduced
"Pssst! I didn\u2019t unfurl <https:\/\/example.com> because it was already shared in this channel quite recently (within the last hour) and I didn\u2019t want to clutter things up."
Sorry @slackbot, I don't understand that command!
Possible solution
The message hook should filter out those ephemeral messages. I think it will be something like:
lib/slack-ruby-bot/hooks/message.rb:
I would be willing to contribute this fix if you like the solution.
The text was updated successfully, but these errors were encountered: