qwtf_discord_bot 4.0.3 → 4.1.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +34 -7
- data/docker-compose.yml +2 -2
- data/lib/emoji.rb +2 -26
- data/lib/{config.rb → endpoint.rb} +0 -20
- data/lib/qwtf_discord_bot.rb +4 -7
- data/lib/qwtf_discord_bot/config.rb +25 -0
- data/lib/qwtf_discord_bot/qwtf_discord_bot_server.rb +5 -5
- data/lib/qwtf_discord_bot/qwtf_discord_bot_watcher.rb +5 -3
- data/lib/qwtf_discord_bot/version.rb +2 -2
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a70ca5bf16d72a2a0ccfc6127011016b1c1e18c3a4212d202dcf5a071b69e194
|
4
|
+
data.tar.gz: 055defe76720adc62871dd2c43d342a1161f6698a429c8b6f4ebdd47e9dfc42e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 754aedabdd94d65c98a224201aff9794cffcd68fb2ad4f8f22346475a09e68e371ee957c338bbbf6a775af744ce73d1fd0b7cd7bcf06e46178dcde3a3c6b8e9c
|
7
|
+
data.tar.gz: a414d546bdf7523df42ce3bd3d7a184050a2c2d80143743d23aed52f17298d54acad363d1791a63818df5d696879ad8ec2c691dec0ee400a07d58156ffbe81b7
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -16,8 +16,9 @@ A Discord bot for checking the status of QuakeWorld Team Fortress servers
|
|
16
16
|
|
17
17
|
## Usage
|
18
18
|
|
19
|
-
- Create a bot on discord
|
20
|
-
- Create a
|
19
|
+
- Create a bot on discord
|
20
|
+
- Create a `~/.config/qwtf_discord_bot/config.yaml` file containing your bots
|
21
|
+
credentials and server endpoints
|
21
22
|
|
22
23
|
```yaml
|
23
24
|
---
|
@@ -34,17 +35,37 @@ endpoints:
|
|
34
35
|
- "dallas.fortressone.org":
|
35
36
|
- channel_ids:
|
36
37
|
- 480928490328409328
|
38
|
+
emojis:
|
39
|
+
red:
|
40
|
+
scout: "<:scout_red:424097703127941130>"
|
41
|
+
sniper: "<:sniper_red:424097704076115978>"
|
42
|
+
soldier: "<:soldier_red:424097704197619712>"
|
43
|
+
demoman: "<:demoman_red:424097687739301919>"
|
44
|
+
medic: "<:medic_red:424097695418941451>"
|
45
|
+
pyro: "<:pyro_red:424097704403271691>"
|
46
|
+
hwguy: "<:hwguy_red:424097694030757889>"
|
47
|
+
spy: "<:spy_red:424097704138899466>"
|
48
|
+
engineer: "<:engineer_red:424097694680612864>"
|
49
|
+
blue:
|
50
|
+
scout: "<:scout_blue:456062063983460353>"
|
51
|
+
sniper: "<:sniper_blue:456062061953417216>"
|
52
|
+
soldier: "<:soldier_blue:456062062997536801>"
|
53
|
+
demoman: "<:demoman_blue:456061938636554240>"
|
54
|
+
medic: "<:medic_blue:456062056710537217>"
|
55
|
+
pyro: "<:pyro_blue:456062062460928010>"
|
56
|
+
hwguy: "<:hwguy_blue:456062063190736926>"
|
57
|
+
spy: "<:spy_blue:456062062032846849>"
|
58
|
+
engineer: "<:engineer_blue:456062031125020683>"
|
37
59
|
```
|
38
60
|
|
39
|
-
-
|
40
|
-
|
61
|
+
- Use the `QWTF_DISCORD_BOT_CONFIG_FILE` environment variable or default to
|
62
|
+
specify an alternative file
|
41
63
|
|
42
64
|
```sh
|
43
65
|
$ export QWTF_DISCORD_BOT_CONFIG_FILE="config.yaml"
|
44
66
|
```
|
45
67
|
|
46
68
|
|
47
|
-
|
48
69
|
### Commands
|
49
70
|
|
50
71
|
There are two modules:
|
@@ -95,13 +116,19 @@ Assuming a `./config.yaml` file exists:
|
|
95
116
|
Server:
|
96
117
|
|
97
118
|
```sh
|
98
|
-
docker run -it
|
119
|
+
docker run -it \
|
120
|
+
--env QWTF_DISCORD_BOT_CONFIG_FILE=config.yaml \
|
121
|
+
--mount type=bind,source="$(pwd)"/config.yaml,target=/discord-bot/config.yaml \
|
122
|
+
discord-bot server
|
99
123
|
```
|
100
124
|
|
101
125
|
Watcher:
|
102
126
|
|
103
127
|
```sh
|
104
|
-
docker run -it
|
128
|
+
docker run -it \
|
129
|
+
--env QWTF_DISCORD_BOT_CONFIG_FILE=config.yaml \
|
130
|
+
--mount type=bind,source="$(pwd)"/config.yaml,target=/discord-bot/config.yaml \
|
131
|
+
discord-bot watcher
|
105
132
|
```
|
106
133
|
|
107
134
|
Both:
|
data/docker-compose.yml
CHANGED
@@ -7,7 +7,7 @@ services:
|
|
7
7
|
restart: always
|
8
8
|
volumes:
|
9
9
|
- type: bind
|
10
|
-
source:
|
10
|
+
source: /home/ubuntu/.config/qwtf_discord_bot/config.yaml
|
11
11
|
target: /discord-bot/config.yaml
|
12
12
|
discord-watcher-bot:
|
13
13
|
image: fortressone/discord-bot:latest
|
@@ -15,5 +15,5 @@ services:
|
|
15
15
|
restart: always
|
16
16
|
volumes:
|
17
17
|
- type: bind
|
18
|
-
source:
|
18
|
+
source: /home/ubuntu/.config/qwtf_discord_bot/config.yaml
|
19
19
|
target: /discord-bot/config.yaml
|
data/lib/emoji.rb
CHANGED
@@ -1,30 +1,6 @@
|
|
1
1
|
class Emoji
|
2
|
-
LOOKUP = {
|
3
|
-
'red' => {
|
4
|
-
'scout' => '<:scout_red:424097703127941130>',
|
5
|
-
'sniper' => '<:sniper_red:424097704076115978>',
|
6
|
-
'soldier' => '<:soldier_red:424097704197619712>',
|
7
|
-
'demoman' => '<:demoman_red:424097687739301919>',
|
8
|
-
'medic' => '<:medic_red:424097695418941451>',
|
9
|
-
'pyro' => '<:pyro_red:424097704403271691>',
|
10
|
-
'hwguy' => '<:hwguy_red:424097694030757889>',
|
11
|
-
'spy' => '<:spy_red:424097704138899466>',
|
12
|
-
'engineer' => '<:engineer_red:424097694680612864>'
|
13
|
-
},
|
14
|
-
'blue' => {
|
15
|
-
'scout' => '<:scout_blue:456062063983460353>',
|
16
|
-
'sniper' => '<:sniper_blue:456062061953417216>',
|
17
|
-
'soldier' => '<:soldier_blue:456062062997536801>',
|
18
|
-
'demoman' => '<:demoman_blue:456061938636554240>',
|
19
|
-
'medic' => '<:medic_blue:456062056710537217>',
|
20
|
-
'pyro' => '<:pyro_blue:456062062460928010>',
|
21
|
-
'hwguy' => '<:hwguy_blue:456062063190736926>',
|
22
|
-
'spy' => '<:spy_blue:456062062032846849>',
|
23
|
-
'engineer' => '<:engineer_blue:456062031125020683>'
|
24
|
-
}
|
25
|
-
}.freeze
|
26
|
-
|
27
2
|
def self.for(team:, player_class:)
|
28
|
-
|
3
|
+
emojis = QwtfDiscordBot.config.emojis
|
4
|
+
emojis[team] && emojis[team][player_class]
|
29
5
|
end
|
30
6
|
end
|
@@ -1,23 +1,3 @@
|
|
1
|
-
class Config
|
2
|
-
def initialize(config)
|
3
|
-
@config = YAML.load_file(config)
|
4
|
-
end
|
5
|
-
|
6
|
-
def token
|
7
|
-
@token ||= @config["token"]
|
8
|
-
end
|
9
|
-
|
10
|
-
def client_id
|
11
|
-
@client_id ||= @config["client_id"]
|
12
|
-
end
|
13
|
-
|
14
|
-
def endpoints
|
15
|
-
@endpoints ||= @config["endpoints"].map do |endpoint|
|
16
|
-
Endpoint.new(endpoint)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
1
|
class Endpoint
|
22
2
|
def initialize(config)
|
23
3
|
@config = config
|
data/lib/qwtf_discord_bot.rb
CHANGED
@@ -1,23 +1,20 @@
|
|
1
1
|
require 'qwtf_discord_bot/version'
|
2
2
|
require 'qwtf_discord_bot/qwtf_discord_bot_server'
|
3
3
|
require 'qwtf_discord_bot/qwtf_discord_bot_watcher'
|
4
|
+
require 'qwtf_discord_bot/config'
|
4
5
|
require 'discordrb'
|
5
6
|
require 'yaml'
|
6
7
|
|
7
|
-
require 'config'
|
8
8
|
require 'qstat_request'
|
9
9
|
require 'player'
|
10
10
|
require 'team'
|
11
11
|
require 'emoji'
|
12
12
|
require 'roster'
|
13
13
|
|
14
|
-
|
14
|
+
module QwtfDiscordBot # :nodoc:
|
15
15
|
CONFIG_FILE = ENV['QWTF_DISCORD_BOT_CONFIG_FILE'] || "#{Dir.pwd}/config.yaml"
|
16
16
|
|
17
|
-
def
|
18
|
-
@config
|
19
|
-
@token = @config.token
|
20
|
-
@client_id = @config.client_id
|
21
|
-
@endpoints = @config.endpoints
|
17
|
+
def self.config
|
18
|
+
@config ||= Config.new(CONFIG_FILE)
|
22
19
|
end
|
23
20
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'endpoint'
|
2
|
+
|
3
|
+
class Config
|
4
|
+
def initialize(config)
|
5
|
+
@config = YAML.load_file(config)
|
6
|
+
end
|
7
|
+
|
8
|
+
def token
|
9
|
+
@token ||= @config["token"]
|
10
|
+
end
|
11
|
+
|
12
|
+
def client_id
|
13
|
+
@client_id ||= @config["client_id"]
|
14
|
+
end
|
15
|
+
|
16
|
+
def endpoints
|
17
|
+
@endpoints ||= @config["endpoints"].map do |endpoint|
|
18
|
+
Endpoint.new(endpoint)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def emojis
|
23
|
+
@emojis ||= @config["emojis"]
|
24
|
+
end
|
25
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
class QwtfDiscordBotServer
|
1
|
+
class QwtfDiscordBotServer
|
2
2
|
def run
|
3
3
|
bot = Discordrb::Commands::CommandBot.new(
|
4
|
-
token:
|
5
|
-
client_id:
|
4
|
+
token: QwtfDiscordBot.config.token,
|
5
|
+
client_id: QwtfDiscordBot.config.client_id,
|
6
6
|
prefix: '!'
|
7
7
|
)
|
8
8
|
|
@@ -27,7 +27,7 @@ class QwtfDiscordBotServer < QwtfDiscordBot # :nodoc:
|
|
27
27
|
end
|
28
28
|
|
29
29
|
bot.command :all do |event|
|
30
|
-
endpoints_for_this_channel =
|
30
|
+
endpoints_for_this_channel = QwtfDiscordBot.config.endpoints.select do |endpoint|
|
31
31
|
endpoint.channel_ids.any? do |channel_id|
|
32
32
|
event.channel.id == channel_id
|
33
33
|
end
|
@@ -55,7 +55,7 @@ class QwtfDiscordBotServer < QwtfDiscordBot # :nodoc:
|
|
55
55
|
end
|
56
56
|
|
57
57
|
bot.command :active do |event|
|
58
|
-
endpoints_for_this_channel =
|
58
|
+
endpoints_for_this_channel = QwtfDiscordBot.config.endpoints.select do |endpoint|
|
59
59
|
endpoint.channel_ids.any? do |channel_id|
|
60
60
|
event.channel.id == channel_id
|
61
61
|
end
|
@@ -1,10 +1,12 @@
|
|
1
|
-
class QwtfDiscordBotWatcher
|
1
|
+
class QwtfDiscordBotWatcher
|
2
|
+
include QwtfDiscordBot
|
3
|
+
|
2
4
|
THIRTY_SECONDS = 30
|
3
5
|
TEN_MINUTES = 10 * 60
|
4
6
|
|
5
7
|
def run
|
6
8
|
every(THIRTY_SECONDS) do
|
7
|
-
|
9
|
+
QwtfDiscordBot.config.endpoints.each do |endpoint|
|
8
10
|
address = endpoint.address
|
9
11
|
request = QstatRequest.new(address)
|
10
12
|
next if request.is_empty?
|
@@ -43,7 +45,7 @@ class QwtfDiscordBotWatcher < QwtfDiscordBot
|
|
43
45
|
|
44
46
|
def report_joined(name:, channel_id:, server_summary:)
|
45
47
|
Discordrb::API::Channel.create_message(
|
46
|
-
"Bot #{
|
48
|
+
"Bot #{QwtfDiscordBot.config.token}",
|
47
49
|
channel_id,
|
48
50
|
"#{name} has joined #{server_summary}"
|
49
51
|
)
|
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
VERSION = '4.0
|
1
|
+
module QwtfDiscordBot
|
2
|
+
VERSION = '4.1.0'.freeze
|
3
3
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qwtf_discord_bot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sheldon Johnson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-07-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: discordrb
|
@@ -86,11 +86,12 @@ files:
|
|
86
86
|
- emoji/red_soldier.png
|
87
87
|
- emoji/red_spy.png
|
88
88
|
- exe/qwtf_discord_bot
|
89
|
-
- lib/config.rb
|
90
89
|
- lib/emoji.rb
|
90
|
+
- lib/endpoint.rb
|
91
91
|
- lib/player.rb
|
92
92
|
- lib/qstat_request.rb
|
93
93
|
- lib/qwtf_discord_bot.rb
|
94
|
+
- lib/qwtf_discord_bot/config.rb
|
94
95
|
- lib/qwtf_discord_bot/qwtf_discord_bot_server.rb
|
95
96
|
- lib/qwtf_discord_bot/qwtf_discord_bot_watcher.rb
|
96
97
|
- lib/qwtf_discord_bot/version.rb
|