Class: Ruboty::Adapters::SlackEvents

Inherits:
Base
  • Object
show all
Defined in:
lib/ruboty/adapters/slack_events.rb,
lib/ruboty/adapters/slack_events/slack_events_handler.rb

Defined Under Namespace

Classes: SlackEventsHandler

Instance Method Summary collapse

Instance Method Details

#ignore_bot_message?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/ruboty/adapters/slack_events.rb', line 73

def ignore_bot_message?
  [nil, "", "false"].none?(ENV.fetch("SLACK_IGNORE_BOT_MESSAGE", nil))
end

#resolversObject

: ::Ruboty::SlackEvents::UserRepository



61
62
63
# File 'lib/ruboty/adapters/slack_events.rb', line 61

def resolvers #: ::Ruboty::SlackEvents::UserRepository
  @resolvers ||= ::Ruboty::SlackEvents::Resolvers.new(slack_client:)
end

#rubotifyObject

: ::Ruboty::SlackEvents::Filter::Rubotify



69
70
71
# File 'lib/ruboty/adapters/slack_events.rb', line 69

def rubotify #: ::Ruboty::SlackEvents::Filter::Rubotify
  @rubotify ||= ::Ruboty::SlackEvents::Filter::Rubotify.new(resolvers:)
end

#runObject

@rbs!

type robotMessage = {
  body: String,
  from: String,
  to: String,
  original: receivedMessage?,
  code: boolish?,
}
type receivedMessage = {
  body: String,
  from: String,
  from_name: String,
  to: String,
  thread_ts: String?,
}


29
30
31
32
# File 'lib/ruboty/adapters/slack_events.rb', line 29

def run
  init
  connect
end

#say(message) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/ruboty/adapters/slack_events.rb', line 35

def say(message)
  Ruboty::SlackEvents::Logger.debug("say") { message.to_json }

  text =
    if message[:code]
      "        ```\n        \#{message[:body]}\n        ```\n      MARKDOWN\n    else\n      slackify.call(message[:body].to_s)\n    end\n\n  slack_client.chat_postMessage(\n    channel: message[:to],\n    attachments: [],\n    markdown_text: text,\n    thread_ts: message.dig(:original, :thread_ts)\n  )\nend\n"

#slack_clientObject

: Slack::Web::Client



57
58
59
# File 'lib/ruboty/adapters/slack_events.rb', line 57

def slack_client #: Slack::Web::Client
  @slack_client ||= ::Slack::Web::Client.new(token: ENV.fetch("SLACK_TOKEN", nil))
end

#slackifyObject

: ::Ruboty::SlackEvents::Filter::Slackify



65
66
67
# File 'lib/ruboty/adapters/slack_events.rb', line 65

def slackify #: ::Ruboty::SlackEvents::Filter::Slackify
  @slackify ||= ::Ruboty::SlackEvents::Filter::Slackify.new(resolvers:)
end