twitch-bot 4.1.1 → 5.0.0

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: b95458f55a188c3e08f200675f0147561f9316aea8eeac3f570eb5a1f984e755
4
- data.tar.gz: b63b75edbe1b0f2fa6f31e8e0ca1064e8a6c6b0cf9defd9f91f13646ca48fdc6
3
+ metadata.gz: 62d03f6a524a016a3c7472f473699677c203961d5c0db80d8345da5a2e48397d
4
+ data.tar.gz: c9a11d3c030bf1a9debf6bb66b06a18b80d814347b123dc41f070d4cd5670064
5
5
  SHA512:
6
- metadata.gz: 9b1be2870429a4748980a9490749181275a0d59ac9cae46be6538e7a93e98dcbd6fbdf6614b9a6701e508156e35d5db77c98685ea44dcae8263461a3dc8f58e9
7
- data.tar.gz: a6be65d6a5369df67ec3243c7c17313a45fb7df135ea862c0b04e92b2d5ac6953c18993277e33772f373dfbdc6d46154edfc36e287788c6f388e5829a80104a7
6
+ metadata.gz: 34fe79b2b493e373bf79665dd001bda15e6c4bc87e6c70ba2a6bb0a34a6190b1800450ffcdfa850f167c29e8ec25a5a1bee2837116a9d1b93313f213b170475e
7
+ data.tar.gz: 9cdf0dde5c84e3fac9f5e1a37d8aaddddd284086e900390dac97f384c364a11a138cbad0bd098a96eaf5020a99b749a38149111890c9f798d169b46f77f895f1
File without changes
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog Twitch::Bot
2
2
 
3
+ ## v5.0.0
4
+
5
+ - [BREAKING] Complex values like arrays and hashes get serialized as JSON before
6
+ being stored in Redis.
7
+
3
8
  ## v4.1.1
4
9
 
5
10
  - [NEW] `CommandHandler` by default responds to `:user_message` events.
@@ -11,7 +11,7 @@ module Twitch
11
11
  # Represent the event triggered when quitting the client loop.
12
12
  class StopEvent < Twitch::Bot::Event
13
13
  def initialize
14
- @type = :stop
14
+ super(type: :stop)
15
15
  end
16
16
  end
17
17
 
@@ -22,7 +22,7 @@ module Twitch
22
22
  attr_reader :channel, :config, :memory
23
23
 
24
24
  def initialize(
25
- channel: nil, config:, &block
25
+ config:, channel: nil, &block
26
26
  )
27
27
  @config = config
28
28
  @channel = Twitch::Bot::Channel.new(channel) if channel
@@ -16,7 +16,7 @@ module Twitch
16
16
  end
17
17
 
18
18
  def self.logger
19
- @logger ||= ::Logger.new(STDOUT)
19
+ @logger ||= ::Logger.new($stdout)
20
20
  end
21
21
  end
22
22
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "redis"
4
+ require "json"
4
5
 
5
6
  module Twitch
6
7
  module Bot
@@ -13,11 +14,12 @@ module Twitch
13
14
  end
14
15
 
15
16
  def store(key, value)
16
- redis.set(key, value)
17
+ redis.set(key, value.to_json)
17
18
  end
18
19
 
19
20
  def retrieve(key)
20
- redis.get(key)
21
+ value = redis.get(key)
22
+ JSON.parse(value)
21
23
  end
22
24
 
23
25
  private
@@ -31,11 +33,9 @@ module Twitch
31
33
 
32
34
  def redis_config_url
33
35
  config = client.config
34
- if config.setting("redis_host")
35
- host = config.setting("redis_host") || "localhost"
36
- port = config.setting("redis_port") || 6379
37
- "redis://#{host}:#{port}"
38
- end
36
+ host = config.setting("redis_host") || "localhost"
37
+ port = config.setting("redis_port") || 6379
38
+ "redis://#{host}:#{port}"
39
39
  end
40
40
  end
41
41
  end
@@ -10,7 +10,7 @@ module Twitch
10
10
  def initialize(text:, user:)
11
11
  @text = text
12
12
  @user = user
13
- @type = :user_message
13
+ super(type: :user_message)
14
14
  end
15
15
 
16
16
  def command_name?(check_command)
@@ -5,8 +5,8 @@ module Twitch
5
5
  module Message
6
6
  # This class is the abstract base class for IRC events.
7
7
  class Base < Twitch::Bot::Event
8
- def initialize(_message)
9
- @type = :unknown
8
+ def initialize(type: :unknown)
9
+ super(type: type)
10
10
  end
11
11
  end
12
12
 
@@ -16,7 +16,7 @@ module Twitch
16
16
 
17
17
  def initialize(message)
18
18
  @message = message
19
- @type = :not_supported
19
+ super(type: :not_supported)
20
20
  end
21
21
  end
22
22
 
@@ -26,7 +26,7 @@ module Twitch
26
26
 
27
27
  def initialize(hostname:)
28
28
  @hostname = hostname
29
- @type = :ping
29
+ super(type: :ping)
30
30
  end
31
31
  end
32
32
 
@@ -37,21 +37,21 @@ module Twitch
37
37
  def initialize(user:, mode:)
38
38
  @user = user
39
39
  @mode = mode
40
- @type = :mode
40
+ super(type: :mode)
41
41
  end
42
42
  end
43
43
 
44
44
  # This class stores the details of an Authenticated event.
45
45
  class Authenticated < Base
46
46
  def initialize
47
- @type = :authenticated
47
+ super(type: :authenticated)
48
48
  end
49
49
  end
50
50
 
51
51
  # This class stores the details of a Join event.
52
52
  class Join < Base
53
53
  def initialize
54
- @type = :join
54
+ super(type: :join)
55
55
  end
56
56
  end
57
57
 
@@ -61,7 +61,7 @@ module Twitch
61
61
 
62
62
  def initialize(user:)
63
63
  @user = user
64
- @type = :subscription
64
+ super(type: :subscription)
65
65
  end
66
66
  end
67
67
 
@@ -71,7 +71,7 @@ module Twitch
71
71
 
72
72
  def initialize(user:)
73
73
  @user = user
74
- @type = :login_failed
74
+ super(type: :login_failed)
75
75
  end
76
76
  end
77
77
 
@@ -82,7 +82,7 @@ module Twitch
82
82
  def initialize(status:, channel:)
83
83
  @status = status
84
84
  @channel = channel
85
- @type = :slow_mode
85
+ super(type: :slow_mode)
86
86
  end
87
87
 
88
88
  def enabled?
@@ -96,7 +96,7 @@ module Twitch
96
96
 
97
97
  def initialize(status:)
98
98
  @status = status
99
- @type = :followers_only_mode
99
+ super(type: :followers_only_mode)
100
100
  end
101
101
  end
102
102
 
@@ -107,7 +107,7 @@ module Twitch
107
107
  def initialize(status:, channel:)
108
108
  @status = status
109
109
  @channel = channel
110
- @type = :subs_only_mode
110
+ super(type: :subs_only_mode)
111
111
  end
112
112
  end
113
113
 
@@ -118,7 +118,7 @@ module Twitch
118
118
  def initialize(status:, channel:)
119
119
  @status = status
120
120
  @channel = channel
121
- @type = :r9k_mode
121
+ super(type: :r9k_mode)
122
122
  end
123
123
  end
124
124
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Twitch
4
4
  module Bot
5
- VERSION = "4.1.1"
5
+ VERSION = "5.0.0"
6
6
  end
7
7
  end
@@ -9,5 +9,26 @@ RSpec.describe Twitch::Bot::Memory::Hash do
9
9
 
10
10
  expect(mem.retrieve("foo")).to eq "bar"
11
11
  end
12
+
13
+ it "persists an Array" do
14
+ mem = described_class.new(client: nil)
15
+
16
+ mem.store("foo", [1, 2])
17
+
18
+ result = mem.retrieve("foo")
19
+ expect(result).to be_an Array
20
+ expect(result[0]).to eq 1
21
+ expect(result[1]).to eq 2
22
+ end
23
+
24
+ it "persists a Hash" do
25
+ mem = described_class.new(client: nil)
26
+
27
+ mem.store("foo", { "bar" => "baz" })
28
+
29
+ result = mem.retrieve("foo")
30
+ expect(result).to be_a Hash
31
+ expect(result["bar"]).to eq "baz"
32
+ end
12
33
  end
13
34
  end
@@ -40,5 +40,44 @@ RSpec.describe Twitch::Bot::Memory::Redis do
40
40
 
41
41
  expect(mem.retrieve("foo")).to eq "bar"
42
42
  end
43
+
44
+ it "persists an Array" do
45
+ config = Twitch::Bot::Config.new(
46
+ settings: {
47
+ bot_user: "testuser",
48
+ },
49
+ )
50
+ client = Twitch::Bot::Client.new(
51
+ config: config,
52
+ channel: "testchannel",
53
+ )
54
+ mem = described_class.new(client: client)
55
+
56
+ mem.store("foo", [1, 2])
57
+
58
+ result = mem.retrieve("foo")
59
+ expect(result).to be_an Array
60
+ expect(result[0]).to eq 1
61
+ expect(result[1]).to eq 2
62
+ end
63
+
64
+ it "persists a Hash" do
65
+ config = Twitch::Bot::Config.new(
66
+ settings: {
67
+ bot_user: "testuser",
68
+ },
69
+ )
70
+ client = Twitch::Bot::Client.new(
71
+ config: config,
72
+ channel: "testchannel",
73
+ )
74
+ mem = described_class.new(client: client)
75
+
76
+ mem.store("foo", { "bar" => "baz" })
77
+
78
+ result = mem.retrieve("foo")
79
+ expect(result).to be_a Hash
80
+ expect(result["bar"]).to eq "baz"
81
+ end
43
82
  end
44
83
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twitch-bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.1
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jochen Lillich
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-05 00:00:00.000000000 Z
11
+ date: 2022-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -174,7 +174,7 @@ extensions: []
174
174
  extra_rdoc_files: []
175
175
  files:
176
176
  - ".editorconfig"
177
- - ".env.dist"
177
+ - ".env.sample"
178
178
  - ".github/workflows/main.yml"
179
179
  - ".gitignore"
180
180
  - ".rspec"
@@ -221,7 +221,7 @@ homepage: https://github.com/geewiz/twitch-bot
221
221
  licenses:
222
222
  - MIT
223
223
  metadata: {}
224
- post_install_message:
224
+ post_install_message:
225
225
  rdoc_options: []
226
226
  require_paths:
227
227
  - lib
@@ -237,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
237
237
  version: '0'
238
238
  requirements: []
239
239
  rubygems_version: 3.0.3
240
- signing_key:
240
+ signing_key:
241
241
  specification_version: 4
242
242
  summary: twitch-bot is a Twitch chat client that uses Twitch IRC that can be used
243
243
  as a Twitch chat bot engine.