slacky 0.1 → 0.1.1
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.
- data/Gemfile.lock +5 -5
- data/lib/slacky/bot.rb +6 -5
- data/lib/slacky/cli.rb +2 -3
- data/lib/slacky/config.rb +7 -4
- data/lib/slacky/daemon.rb +9 -7
- data/lib/slacky/user.rb +17 -10
- data/lib/slacky/version.rb +1 -1
- metadata +3 -3
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
slacky (0.1)
|
|
4
|
+
slacky (0.1.1)
|
|
5
5
|
dotenv
|
|
6
6
|
em-cron
|
|
7
7
|
eventmachine
|
|
@@ -31,10 +31,10 @@ GEM
|
|
|
31
31
|
multipart-post (>= 1.2, < 3)
|
|
32
32
|
faraday_middleware (0.10.0)
|
|
33
33
|
faraday (>= 0.7.4, < 0.10)
|
|
34
|
-
faye-websocket (0.10.
|
|
34
|
+
faye-websocket (0.10.4)
|
|
35
35
|
eventmachine (>= 0.12.0)
|
|
36
36
|
websocket-driver (>= 0.5.1)
|
|
37
|
-
gli (2.
|
|
37
|
+
gli (2.14.0)
|
|
38
38
|
hashie (3.4.4)
|
|
39
39
|
i18n (0.7.0)
|
|
40
40
|
json (1.8.3)
|
|
@@ -43,7 +43,7 @@ GEM
|
|
|
43
43
|
parse-cron (0.1.4)
|
|
44
44
|
pg (0.18.4)
|
|
45
45
|
rake (11.1.2)
|
|
46
|
-
slack-ruby-client (0.7.
|
|
46
|
+
slack-ruby-client (0.7.3)
|
|
47
47
|
activesupport
|
|
48
48
|
faraday
|
|
49
49
|
faraday_middleware
|
|
@@ -56,7 +56,7 @@ GEM
|
|
|
56
56
|
thread_safe (~> 0.1)
|
|
57
57
|
tzinfo-data (1.2016.4)
|
|
58
58
|
tzinfo (>= 1.0.0)
|
|
59
|
-
websocket-driver (0.6.
|
|
59
|
+
websocket-driver (0.6.4)
|
|
60
60
|
websocket-extensions (>= 0.1.0)
|
|
61
61
|
websocket-extensions (0.1.2)
|
|
62
62
|
|
data/lib/slacky/bot.rb
CHANGED
|
@@ -8,8 +8,6 @@ module Slacky
|
|
|
8
8
|
attr_reader :client, :config, :slack_id
|
|
9
9
|
|
|
10
10
|
def initialize(config)
|
|
11
|
-
puts "#{config.name} is starting up..."
|
|
12
|
-
|
|
13
11
|
@config = config
|
|
14
12
|
@restarts = []
|
|
15
13
|
@command_handlers = []
|
|
@@ -42,9 +40,6 @@ module Slacky
|
|
|
42
40
|
|
|
43
41
|
Channel.bot = self
|
|
44
42
|
Message.bot = self
|
|
45
|
-
|
|
46
|
-
populate_users
|
|
47
|
-
populate_channels
|
|
48
43
|
end
|
|
49
44
|
|
|
50
45
|
def web_client
|
|
@@ -133,6 +128,12 @@ module Slacky
|
|
|
133
128
|
end
|
|
134
129
|
|
|
135
130
|
def run
|
|
131
|
+
@config.log "#{config.name} is starting up..."
|
|
132
|
+
puts "#{config.name} is starting up..."
|
|
133
|
+
|
|
134
|
+
populate_users
|
|
135
|
+
populate_channels
|
|
136
|
+
|
|
136
137
|
@bookkeeper.keep_the_books
|
|
137
138
|
|
|
138
139
|
@client.on :message do |data|
|
data/lib/slacky/cli.rb
CHANGED
|
@@ -2,12 +2,11 @@ module Slacky
|
|
|
2
2
|
class CLI
|
|
3
3
|
attr_reader :bot
|
|
4
4
|
|
|
5
|
-
def initialize(name, opts)
|
|
5
|
+
def initialize(name, bot_class, opts)
|
|
6
6
|
throw "CLI must be passed a name" unless name
|
|
7
7
|
@options = { :verbose => false }.merge opts
|
|
8
8
|
config = Config.new name
|
|
9
|
-
|
|
10
|
-
daemon = Daemon.new config, bot
|
|
9
|
+
daemon = Daemon.new config, bot_class
|
|
11
10
|
@service = Service.new config, daemon
|
|
12
11
|
end
|
|
13
12
|
|
data/lib/slacky/config.rb
CHANGED
|
@@ -12,11 +12,14 @@ module Slacky
|
|
|
12
12
|
Dotenv.load ".env", "#{config_dir}/.env"
|
|
13
13
|
FileUtils.mkdir config_dir unless File.directory? config_dir
|
|
14
14
|
@pid_file = "#{config_dir}/pid"
|
|
15
|
-
@db = PG.connect(db_connect_params)
|
|
16
|
-
User.db = @db
|
|
17
|
-
User.initialize_table
|
|
18
|
-
|
|
19
15
|
@timestamps = {}
|
|
16
|
+
User.config = self
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def db
|
|
20
|
+
db = PG.connect db_connect_params
|
|
21
|
+
db.exec 'set client_min_messages = warning'
|
|
22
|
+
db
|
|
20
23
|
end
|
|
21
24
|
|
|
22
25
|
def down_name
|
data/lib/slacky/daemon.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
module Slacky
|
|
2
2
|
class Daemon
|
|
3
3
|
|
|
4
|
-
def initialize(config,
|
|
4
|
+
def initialize(config, bot_class)
|
|
5
5
|
@config = config
|
|
6
|
-
@
|
|
6
|
+
@bot_class = bot_class
|
|
7
7
|
@active = true
|
|
8
8
|
@running = false
|
|
9
9
|
end
|
|
@@ -20,8 +20,12 @@ module Slacky
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
begin
|
|
23
|
-
@slackthread = Thread.new
|
|
24
|
-
|
|
23
|
+
@slackthread = Thread.new do
|
|
24
|
+
bot = Bot.new @config
|
|
25
|
+
bot.run
|
|
26
|
+
@bot_class.new bot
|
|
27
|
+
end
|
|
28
|
+
run
|
|
25
29
|
rescue => e
|
|
26
30
|
@config.log "Unexpected error", e
|
|
27
31
|
ensure
|
|
@@ -35,11 +39,9 @@ module Slacky
|
|
|
35
39
|
|
|
36
40
|
private
|
|
37
41
|
|
|
38
|
-
def run
|
|
42
|
+
def run
|
|
39
43
|
@config.log "#{@config.name} is running."
|
|
40
44
|
while active? do
|
|
41
|
-
# TODO: handle timed tasks
|
|
42
|
-
#slackbot.ask_all if time.min % 10 == 0 # every 10 minutes
|
|
43
45
|
sleep 0.5
|
|
44
46
|
end
|
|
45
47
|
@config.log "#{@config.name} got killed"
|
data/lib/slacky/user.rb
CHANGED
|
@@ -5,18 +5,25 @@ module Slacky
|
|
|
5
5
|
attr_accessor :username, :slack_id, :slack_im_id, :first_name, :last_name, :email, :timezone, :presence, :data
|
|
6
6
|
attr_reader :tz
|
|
7
7
|
|
|
8
|
-
@@decorator = @@db = nil
|
|
8
|
+
@@decorator = @@config = @@db = nil
|
|
9
9
|
|
|
10
10
|
def self.decorator=(decorator)
|
|
11
11
|
@@decorator = decorator
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
def self.
|
|
15
|
-
@@
|
|
14
|
+
def self.config=(config)
|
|
15
|
+
@@config = config
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.db
|
|
19
|
+
return @@db if @@db
|
|
20
|
+
@@db = @@config.db
|
|
21
|
+
initialize_table
|
|
22
|
+
@@db
|
|
16
23
|
end
|
|
17
24
|
|
|
18
25
|
def self.initialize_table
|
|
19
|
-
|
|
26
|
+
self.db.exec <<-SQL
|
|
20
27
|
create table if not exists users (
|
|
21
28
|
username varchar(64) not null,
|
|
22
29
|
slack_id varchar(20) not null,
|
|
@@ -33,9 +40,9 @@ SQL
|
|
|
33
40
|
|
|
34
41
|
def self.find(user)
|
|
35
42
|
return user.map { |u| User.find u }.compact if user.is_a? Array
|
|
36
|
-
result =
|
|
43
|
+
result = self.db.exec_params "select * from users where slack_id = $1", [ user ]
|
|
37
44
|
if result.ntuples == 0
|
|
38
|
-
result =
|
|
45
|
+
result = self.db.exec_params "select * from users where username = $1", [ user ]
|
|
39
46
|
end
|
|
40
47
|
return nil if result.ntuples == 0
|
|
41
48
|
|
|
@@ -77,10 +84,10 @@ SQL
|
|
|
77
84
|
end
|
|
78
85
|
|
|
79
86
|
def save
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
87
|
+
User.db.exec_params "delete from users where slack_id = $1", [ @slack_id ]
|
|
88
|
+
User.db.exec_params "insert into users (username, slack_id, slack_im_id, first_name, last_name, email, timezone, presence, data)
|
|
89
|
+
values ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
|
|
90
|
+
[ @username, @slack_id, @slack_im_id, @first_name, @last_name, @email, @timezone, @presence, JSON.dump(@data) ]
|
|
84
91
|
self
|
|
85
92
|
end
|
|
86
93
|
|
data/lib/slacky/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: slacky
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -226,7 +226,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
226
226
|
version: '0'
|
|
227
227
|
segments:
|
|
228
228
|
- 0
|
|
229
|
-
hash:
|
|
229
|
+
hash: 1909049652841046300
|
|
230
230
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
231
231
|
none: false
|
|
232
232
|
requirements:
|
|
@@ -235,7 +235,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
235
235
|
version: '0'
|
|
236
236
|
segments:
|
|
237
237
|
- 0
|
|
238
|
-
hash:
|
|
238
|
+
hash: 1909049652841046300
|
|
239
239
|
requirements: []
|
|
240
240
|
rubyforge_project:
|
|
241
241
|
rubygems_version: 1.8.23
|