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]
      <<~MARKDOWN
        ```
        #{message[:body]}
        ```
      MARKDOWN
    else
      slackify.call(message[:body].to_s)
    end

  slack_client.chat_postMessage(
    channel: message[:to],
    attachments: [],
    markdown_text: text,
    thread_ts: message.dig(:original, :thread_ts)
  )
end

#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