qwtf_discord_bot 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0989489e22f9720bb4d8e94a84a931f51127dd610b6abf9c6ed93b32353f93cb'
4
- data.tar.gz: 5791e08db5e473dc20aaaf47f26c426d5201f83d7e389f680bb85c75f74cc60b
3
+ metadata.gz: 62157a5a72751b294e2ee10e08455e2ae86b617f4f04ab4654c4e85a0bc57391
4
+ data.tar.gz: 815994275f732832081c1d9ed36f75ca1063eda17d16875d6823756f306aecca
5
5
  SHA512:
6
- metadata.gz: 70d31f2b3fc3da34587b57bfe3241963f1d4b4f77a0e53dc244f044f3b323d343bd86ef89b326fd161e0d1311a55b9dac6abc7afd04364a3991bd8691fa319f6
7
- data.tar.gz: 1dcfe209e62ab29c3fcb812751d5664c54aaad1540fe89506d705e3b4e19befc1b195b18b00ede875e47bee4caa6bb36ae6faee592a95202298dcda17135014e
6
+ metadata.gz: 933a0d807334cceafa97c3f9f48e00554483c04057c042c4fd74b7e2a676778340e8349ff2959a0a3a5641adf9329ccea0aa382e22737b31a119a71ce2a9c55c
7
+ data.tar.gz: 9f6a616d96d8e5173e2f896ec0de689315ac468e08a8c82a5fc85b202ed619325aa267b3b5212a6bde48b1a357004014e2ad0a798c8e407ef5eac92da15f9039
data/Gemfile CHANGED
@@ -1,6 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
-
5
- # Specify your gem's dependencies in qwtf_discord_bot.gemspec
6
3
  gemspec
4
+
5
+ gem 'bundler'
6
+ gem 'discordrb'
7
+ gem 'thor'
data/Gemfile.lock CHANGED
@@ -1,14 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- qwtf_discord_bot (0.3.3)
5
- discordrb
6
- thor (~> 0)
4
+ qwtf_discord_bot (0.4.0)
7
5
 
8
6
  GEM
9
7
  remote: https://rubygems.org/
10
8
  specs:
11
- diff-lcs (1.3)
12
9
  discordrb (3.2.1)
13
10
  discordrb-webhooks (~> 3.2.0.1)
14
11
  opus-ruby
@@ -29,26 +26,12 @@ GEM
29
26
  netrc (0.11.0)
30
27
  opus-ruby (1.0.1)
31
28
  ffi
32
- rake (10.5.0)
33
29
  rbnacl (3.4.0)
34
30
  ffi
35
31
  rest-client (2.0.2)
36
32
  http-cookie (>= 1.0.2, < 2.0)
37
33
  mime-types (>= 1.16, < 4.0)
38
34
  netrc (~> 0.8)
39
- rspec (3.7.0)
40
- rspec-core (~> 3.7.0)
41
- rspec-expectations (~> 3.7.0)
42
- rspec-mocks (~> 3.7.0)
43
- rspec-core (3.7.1)
44
- rspec-support (~> 3.7.0)
45
- rspec-expectations (3.7.0)
46
- diff-lcs (>= 1.2.0, < 2.0)
47
- rspec-support (~> 3.7.0)
48
- rspec-mocks (3.7.0)
49
- diff-lcs (>= 1.2.0, < 2.0)
50
- rspec-support (~> 3.7.0)
51
- rspec-support (3.7.1)
52
35
  thor (0.20.0)
53
36
  unf (0.1.4)
54
37
  unf_ext
@@ -62,10 +45,10 @@ PLATFORMS
62
45
  ruby
63
46
 
64
47
  DEPENDENCIES
65
- bundler (~> 1.16)
48
+ bundler
49
+ discordrb
66
50
  qwtf_discord_bot!
67
- rake (~> 10.0)
68
- rspec (~> 3.0)
51
+ thor
69
52
 
70
53
  BUNDLED WITH
71
54
  1.16.2
data/README.md CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  A Discord bot for checking the status of QuakeWorld Team Fortress servers
4
4
 
5
- ![screenshot of bot](screenshot.png)
6
-
7
5
 
8
6
  ## Dependencies
9
7
 
@@ -35,9 +33,9 @@ There are two features:
35
33
  ### Server
36
34
 
37
35
  This responds to `!server` messages by providing information about your game
38
- server. E.G.
36
+ server.
39
37
 
40
- $ bundle exec exe/qwtf-discord-bot server --hostname fortressone.ga --port 27501
38
+ ![screenshot of bot responding to !server command](server_screenshot.png)
41
39
 
42
40
  ```
43
41
  Usage:
@@ -50,14 +48,18 @@ Options:
50
48
  # Default: 27500
51
49
  ```
52
50
 
51
+ E.G.
52
+
53
+ $ bundle exec exe/qwtf-discord-bot server --hostname fortressone.ga --port 27501
54
+
53
55
 
54
56
  ### Watcher
55
57
 
56
58
  This watches the game server and announces if anyone has joined the server. It
57
59
  polls the server once every 30 seconds and will only report a player joining if
58
- they haven't been connected for more than ten minutes. E.G.
60
+ they haven't been connected for more than ten minutes.
59
61
 
60
- $ bundle exec exe/qwtf-discord-bot watcher --hostname fortressone.ga --port 27501
62
+ ![screenshot of bot reporting player joining server](watcher_screenshot.png)
61
63
 
62
64
  ```
63
65
  Usage:
@@ -70,6 +72,11 @@ Options:
70
72
  # Default: 27500
71
73
  ```
72
74
 
75
+ E.G.
76
+
77
+ $ bundle exec exe/qwtf-discord-bot watcher --hostname fortressone.ga --port 27501
78
+
79
+
73
80
  ## License
74
81
 
75
82
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/exe/qwtf_discord_bot CHANGED
@@ -14,7 +14,7 @@ class QwtfDiscordBotExe < Thor
14
14
  def server
15
15
  hostname = options['hostname']
16
16
  port = options['port']
17
- server_bot = QwtfDiscordBot::Server.new(hostname: hostname, port: port)
17
+ server_bot = QwtfDiscordBotServer.new(hostname: hostname, port: port)
18
18
  server_bot.run
19
19
  end
20
20
 
@@ -24,7 +24,7 @@ class QwtfDiscordBotExe < Thor
24
24
  def watcher
25
25
  hostname = options['hostname']
26
26
  port = options['port']
27
- watcher_bot = QwtfDiscordBot::Watcher.new(hostname: hostname, port: port)
27
+ watcher_bot = QwtfDiscordBotWatcher.new(hostname: hostname, port: port)
28
28
  watcher_bot.run
29
29
  end
30
30
  end
data/lib/emoji.rb CHANGED
@@ -24,17 +24,7 @@ class Emoji
24
24
  }
25
25
  }.freeze
26
26
 
27
- def initialize(player)
28
- @player = player
29
- end
30
-
31
- def to_s
32
- id || ''
33
- end
34
-
35
- private
36
-
37
- def id
38
- @id ||= LOOKUP[@player.team.to_s] && LOOKUP[@player.team.to_s][@player.player_class]
27
+ def self.for(team:, player_class:)
28
+ LOOKUP[team] && LOOKUP[team][player_class]
39
29
  end
40
30
  end
data/lib/player.rb CHANGED
@@ -34,7 +34,7 @@ class Player
34
34
  private
35
35
 
36
36
  def emoji
37
- Emoji.new(self).to_s
37
+ Emoji.for(team: team.to_s, player_class: player_class)
38
38
  end
39
39
 
40
40
  def short_class
@@ -1,3 +1,3 @@
1
1
  class QwtfDiscordBot
2
- VERSION = '0.4.0'.freeze
2
+ VERSION = '0.4.1'.freeze
3
3
  end
@@ -11,101 +11,84 @@ class QwtfDiscordBot
11
11
  CLIENT_ID = ENV['QWTF_DISCORD_BOT_CLIENT_ID'].strip
12
12
  CHANNEL_ID = ENV['QWTF_DISCORD_BOT_CHANNEL_ID'].strip
13
13
 
14
- class Server
15
- def initialize(hostname:, port:)
16
- @hostname = hostname
17
- @port = port
18
- end
14
+ def initialize(hostname:, port:)
15
+ @hostname = hostname
16
+ @port = port
17
+ end
19
18
 
20
- def run
21
- bot = Discordrb::Commands::CommandBot.new(
22
- token: TOKEN,
23
- client_id: CLIENT_ID,
24
- prefix: '!'
25
- )
19
+ def endpoint
20
+ return @hostname if @port == 27500
21
+ [@hostname, @port].join(':')
22
+ end
23
+ end
26
24
 
27
- bot.command :server do |_event|
28
- QstatRequest.new(endpoint).output
29
- end
25
+ class QwtfDiscordBotServer < QwtfDiscordBot
26
+ def run
27
+ bot = Discordrb::Commands::CommandBot.new(
28
+ token: TOKEN,
29
+ client_id: CLIENT_ID,
30
+ prefix: '!'
31
+ )
30
32
 
31
- bot.run
33
+ bot.command :server do |_event|
34
+ QstatRequest.new(endpoint).output
32
35
  end
33
36
 
34
- private
35
-
36
- def endpoint
37
- @endpoint ||= if @port == 27500
38
- @hostname
39
- else
40
- "#{@hostname}:#{@port}"
41
- end
42
- end
37
+ bot.run
43
38
  end
39
+ end
44
40
 
45
- class Watcher
46
- THIRTY_SECONDS = 30
47
- TEN_MINUTES = 10 * 60
48
-
49
- def initialize(hostname:, port:)
50
- @hostname = hostname
51
- @port = port
52
- @history = {}
53
- end
54
-
55
- def run
56
- every(THIRTY_SECONDS) do
57
- request = QstatRequest.new(endpoint)
58
- numplayers = request.numplayers
59
- maxplayers = request.maxplayers
60
- map = request.map
61
-
62
- if request.players
63
- player_names = request.players.map(&:name)
64
-
65
- player_names.each do |name|
66
- unless seen_recently?(name)
67
- report_joined(name: name,
68
- map: map,
69
- numplayers: numplayers,
70
- maxplayers: maxplayers)
71
- end
72
-
73
- @history[name] = Time.now
41
+ class QwtfDiscordBotWatcher < QwtfDiscordBot
42
+ THIRTY_SECONDS = 30
43
+ TEN_MINUTES = 10 * 60
44
+
45
+ def run
46
+ every(THIRTY_SECONDS) do
47
+ request = QstatRequest.new(endpoint)
48
+ numplayers = request.numplayers
49
+ maxplayers = request.maxplayers
50
+ map = request.map
51
+
52
+ if request.players
53
+ player_names = request.players.map(&:name)
54
+
55
+ player_names.each do |name|
56
+ unless seen_recently?(name)
57
+ report_joined(name: name,
58
+ map: map,
59
+ numplayers: numplayers,
60
+ maxplayers: maxplayers)
74
61
  end
62
+
63
+ history[name] = Time.now
75
64
  end
76
65
  end
77
66
  end
67
+ end
78
68
 
79
- private
80
-
81
- def endpoint
82
- @endpoint ||= if @port == 27500
83
- @hostname
84
- else
85
- "#{@hostname}:#{@port}"
86
- end
69
+ def every(n_seconds)
70
+ loop do
71
+ before = Time.now
72
+ yield
73
+ interval = n_seconds - (Time.now - before)
74
+ sleep(interval) if interval > 0
87
75
  end
76
+ end
88
77
 
89
- def report_joined(name:, map:, numplayers:, maxplayers:)
90
- Discordrb::API::Channel.create_message(
91
- "Bot #{TOKEN}",
92
- CHANNEL_ID,
93
- "**#{name}** has joined **#{endpoint} | #{map} | #{numplayers}/#{maxplayers}**"
94
- )
95
- end
78
+ def seen_recently?(name)
79
+ last_seen = history[name]
80
+ last_seen && (Time.now - last_seen < TEN_MINUTES)
81
+ end
96
82
 
97
- def seen_recently?(name)
98
- last_seen = @history[name]
99
- last_seen && (Time.now - last_seen < TEN_MINUTES)
100
- end
83
+ def report_joined(name:, map:, numplayers:, maxplayers:)
84
+ Discordrb::API::Channel.create_message(
85
+ "Bot #{TOKEN}",
86
+ CHANNEL_ID,
87
+ "**#{name}** has joined **#{endpoint} | #{map} | #{numplayers}/#{maxplayers}**"
88
+ )
89
+ end
101
90
 
102
- def every(n_seconds)
103
- loop do
104
- before = Time.now
105
- yield
106
- interval = n_seconds - (Time.now - before)
107
- sleep(interval) if interval > 0
108
- end
109
- end
91
+ def history
92
+ @history ||= {}
110
93
  end
111
94
  end
@@ -26,11 +26,4 @@ Gem::Specification.new do |spec|
26
26
  spec.bindir = 'exe'
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ['lib']
29
-
30
- spec.add_dependency 'discordrb'
31
- spec.add_dependency 'thor', '~> 0'
32
-
33
- spec.add_development_dependency 'bundler', '~> 1.16'
34
- spec.add_development_dependency 'rake', '~> 10.0'
35
- spec.add_development_dependency 'rspec', '~> 3.0'
36
29
  end
Binary file
Binary file
metadata CHANGED
@@ -1,85 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qwtf_discord_bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sheldon Johnson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-09 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: discordrb
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: thor
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: bundler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1.16'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1.16'
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '10.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '10.0'
69
- - !ruby/object:Gem::Dependency
70
- name: rspec
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '3.0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '3.0'
11
+ date: 2018-08-11 00:00:00.000000000 Z
12
+ dependencies: []
83
13
  description: A Discord bot for reporting on QuakeWorld Team Fortress game servers
84
14
  email:
85
15
  - shayolden@hotmail.com
@@ -125,7 +55,8 @@ files:
125
55
  - lib/qwtf_discord_bot/version.rb
126
56
  - lib/team.rb
127
57
  - qwtf_discord_bot.gemspec
128
- - screenshot.png
58
+ - server_screenshot.png
59
+ - watcher_screenshot.png
129
60
  homepage: https://github.com/drzel/qwtf_discord_bot.git
130
61
  licenses:
131
62
  - MIT
data/screenshot.png DELETED
Binary file