energon-notify 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 897c422987699d96e089a54ef4cdfa951f66bcbcee3f4bebc4628b755f98ba15
4
+ data.tar.gz: 82a2727d743281860f738e8d480381ab30531148075d22360f0b9a74db495b72
5
+ SHA512:
6
+ metadata.gz: 347655b117abe5f2742ec26793d5bc5133af0a03d11e5d051e062358522dbf4652c9577c30a5e3bdae714881c36283d7dd5178f43e2092bc5e27d35b5702671d
7
+ data.tar.gz: 00e1f604e6d752ef9c7b8d7a5b7b6adf80576eb36bf3c36cf31e657b25c9f22cc210217c16ef67538d5c88a4420722d1372e2fcf2e4230b5a1ed60e5d1a2538e
@@ -0,0 +1,10 @@
1
+
2
+ class Credentials
3
+ def set_credentials
4
+ @bot_token = ENV['SLACK_TOKEN']
5
+ @bot_name = ENV['SLACK_NAME']
6
+ @bot_icon = ENV['SLACK_ICON']
7
+ @bot_channel = ENV['SLACK_DEFAULT_CHANNEL']
8
+ @bot_default_output = ENV['SLACK_DEFAULT_OUTPUT']
9
+ end
10
+ end
@@ -0,0 +1,28 @@
1
+ require 'slack-ruby-client'
2
+ require_relative "modules/search_slack"
3
+ require_relative "modules/message_slack"
4
+ require_relative "modules/message_discord"
5
+ require_relative "credentials"
6
+
7
+ # Slack Set Up
8
+ class EnergonNotify < Credentials
9
+ include MessageSlack
10
+ include SearchOnSlack
11
+ include MessageDiscord
12
+
13
+ def initialize(name: '', image: '', token: nil, as_user: false)
14
+ set_credentials
15
+
16
+ Slack.configure do |config|
17
+ config.token = token.nil? ? @bot_token : token
18
+ config.raise 'Missing token' unless config.token
19
+ end
20
+
21
+ @bot_name = name unless name.empty?
22
+ @bot_icon = image unless image.empty?
23
+ @bot_user = as_user
24
+
25
+ @time_client ||= Slack::RealTime::Client.new
26
+ @web_client ||= Slack::Web::Client.new
27
+ end
28
+ end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'search_slack'
4
+
5
+ # Module for message interactions on Slack
6
+ module MessageSlack
7
+ include SearchOnSlack
8
+
9
+ def discern_end(data, ts = nil)
10
+ @thread = if data.respond_to? :thread_ts
11
+ data.ts
12
+ else
13
+ ts unless ts.nil?
14
+ end
15
+ @channel = if data.respond_to? :channel
16
+ data.channel
17
+ else
18
+ data
19
+ end
20
+ end
21
+
22
+ def attach_format(data, title, color = '#e93d94')
23
+ text = ''
24
+ data.each { |v| text << "#{v}\n" }
25
+ [{
26
+ "pretext": title,
27
+ "color": color,
28
+ "text": text
29
+ }]
30
+ end
31
+
32
+ def send_message(text, data, ts = nil)
33
+ discern_end(data, ts)
34
+ @web_client.chat_postMessage channel: @channel,
35
+ text: text,
36
+ icon_url: @bot_icon,
37
+ username: @bot_name,
38
+ thread_ts: @thread,
39
+ as_user: @bot_user
40
+ rescue Slack::Web::Api::Errors::SlackError => e
41
+ print e.message
42
+ false
43
+ end
44
+
45
+ def send_direct_message(text, channel)
46
+ dm = get_user_id(channel)
47
+ dm == false ? false : send_message(text, dm)
48
+ end
49
+
50
+ def send_attachment(attachment, data, ts = nil)
51
+ discern_end(data, ts)
52
+ @web_client.chat_postMessage channel: @channel,
53
+ attachments: attachment,
54
+ icon_url: @bot_icon,
55
+ username: @bot_name,
56
+ thread_ts: @thread,
57
+ as_user: @bot_user
58
+ end
59
+
60
+ def send_file(path, data, ts = nil)
61
+ file = path
62
+ discern_end(data, ts)
63
+ @web_client.files_upload channels: @channel,
64
+ icon_url: @bot_icon,
65
+ username: @bot_name,
66
+ thread_ts: @thread,
67
+ as_user: @bot_user,
68
+ file: Faraday::UploadIO.new(file, 'text'),
69
+ title: File.basename(file),
70
+ filename: File.basename(file)
71
+ rescue Slack::Web::Api::Errors::SlackError => e
72
+ print e.message
73
+ false
74
+ end
75
+
76
+ def add_reaction(icon, channel, thread)
77
+ @web_client.reactions_add channel: channel,
78
+ name: icon,
79
+ timestamp: thread,
80
+ icon_url: @bot_icon,
81
+ username: @bot_name
82
+ rescue Slack::Web::Api::Errors::SlackError => e
83
+ print e.message
84
+ false
85
+ end
86
+ end
@@ -0,0 +1,74 @@
1
+ # Module for searching content on Slack
2
+ module SearchOnSlack
3
+ def get_user_id(channel = @channel_id)
4
+ dm = @web_client.conversations_open users: channel
5
+ dm.channel.id
6
+ rescue Slack::Web::Api::Errors::SlackError => e
7
+ print e.message
8
+ false
9
+ end
10
+
11
+ def get_user_info(user)
12
+ c = @web_client.users_info user: user
13
+ c.user
14
+ rescue Slack::Web::Api::Errors::SlackError => e
15
+ print e.message
16
+ false
17
+ end
18
+
19
+ def get_user_list
20
+ @web_client.users_list
21
+ rescue Slack::Web::Api::Errors::SlackError => e
22
+ print e.message
23
+ false
24
+ end
25
+
26
+ def verify_type
27
+ properties = {
28
+ 'channel' => @properties.is_channel,
29
+ 'group' => @properties.is_group,
30
+ 'im' => @properties.is_im
31
+ }
32
+ check = ''
33
+ properties.each { |k, v| check = k if v == true }
34
+ check
35
+ end
36
+
37
+ def conversation_type(channel = @channel_id)
38
+ @channel_id = channel if @channel_id.nil?
39
+ result = conversation_info
40
+ if result == false
41
+ print 'Check if IM'
42
+ @channel_id = get_user_id
43
+ conversation_info == false ? false : verify_type
44
+ else
45
+ verify_type
46
+ end
47
+ rescue Slack::Web::Api::Errors::SlackError => e
48
+ print e.message
49
+ false
50
+ end
51
+
52
+ def conversation_info(channel = @channel_id)
53
+ info = @web_client.conversations_info channel: channel
54
+ @properties = info.channel
55
+ rescue Slack::Web::Api::Errors::SlackError => e
56
+ print e.message
57
+ false
58
+ end
59
+
60
+ def conversation_list
61
+ @web_client.conversations_list.channels
62
+ rescue Slack::Web::Api::Errors::SlackError => e
63
+ print e.message
64
+ false
65
+ end
66
+
67
+ def search_messages_on(channel, quantity = 5)
68
+ # type = conversation_type(channel)
69
+ @web_client.conversations_history channel: channel, count: quantity
70
+ rescue Slack::Web::Api::Errors::SlackError => e
71
+ print e.message
72
+ "Channel not found #{channel}"
73
+ end
74
+ end
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: energon-notify
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Luciano Adonis
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-08-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: slack-ruby-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.14.5
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.14.5
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.2'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.2'
41
+ description: Post message methods from Slack, Twitter, and Discord.
42
+ email: luciano.adonisv@gmail.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/credentials.rb
48
+ - lib/energon_notify.rb
49
+ - lib/modules/message_slack.rb
50
+ - lib/modules/search_slack.rb
51
+ homepage: https://rubygems.org/gems/core_slack
52
+ licenses:
53
+ - MIT
54
+ metadata: {}
55
+ post_install_message:
56
+ rdoc_options: []
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ requirements: []
70
+ rubygems_version: 3.0.3
71
+ signing_key:
72
+ specification_version: 4
73
+ summary: Spam messages to our clients
74
+ test_files: []