discordrb 1.3.4 → 1.3.5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of discordrb might be problematic. Click here for more details.

@@ -2,6 +2,7 @@ require 'discordrb/events/generic'
2
2
  require 'discordrb/data'
3
3
 
4
4
  module Discordrb::Events
5
+ # Raised when a channel is deleted
5
6
  class ChannelDeleteEvent
6
7
  attr_reader :type
7
8
  attr_reader :topic
@@ -22,20 +23,21 @@ module Discordrb::Events
22
23
  end
23
24
  end
24
25
 
26
+ # Event handler for ChannelDeleteEvent
25
27
  class ChannelDeleteEventHandler < EventHandler
26
28
  def matches?(event)
27
29
  # Check for the proper event type
28
30
  return false unless event.is_a? ChannelDeleteEvent
29
31
 
30
- return [
31
- matches_all(@attributes[:type], event.type) do |a,e|
32
+ [
33
+ matches_all(@attributes[:type], event.type) do |a, e|
32
34
  if a.is_a? String
33
35
  a == e.name
34
36
  else
35
37
  a == e
36
38
  end
37
39
  end,
38
- matches_all(@attributes[:name], event.name) do |a,e|
40
+ matches_all(@attributes[:name], event.name) do |a, e|
39
41
  if a.is_a? String
40
42
  a == e.to_s
41
43
  else
@@ -2,6 +2,7 @@ require 'discordrb/events/generic'
2
2
  require 'discordrb/data'
3
3
 
4
4
  module Discordrb::Events
5
+ # Raised when a channel is updated (e.g. topic changes)
5
6
  class ChannelUpdateEvent
6
7
  attr_reader :type
7
8
  attr_reader :topic
@@ -18,25 +19,27 @@ module Discordrb::Events
18
19
  @name = data['name']
19
20
  @is_private = data['is_private']
20
21
  @server = bot.server(data['guild_id'].to_i)
21
- return if !@server
22
+ return unless @server
23
+
22
24
  @channel = bot.channel(data['id'].to_i)
23
25
  end
24
26
  end
25
27
 
28
+ # Event handler for ChannelUpdateEvent
26
29
  class ChannelUpdateEventHandler < EventHandler
27
30
  def matches?(event)
28
31
  # Check for the proper event type
29
32
  return false unless event.is_a? ChannelUpdateEvent
30
33
 
31
- return [
32
- matches_all(@attributes[:type], event.type) do |a,e|
34
+ [
35
+ matches_all(@attributes[:type], event.type) do |a, e|
33
36
  if a.is_a? String
34
37
  a == e.name
35
38
  else
36
39
  a == e
37
40
  end
38
41
  end,
39
- matches_all(@attributes[:name], event.name) do |a,e|
42
+ matches_all(@attributes[:name], event.name) do |a, e|
40
43
  if a.is_a? String
41
44
  a == e.to_s
42
45
  else
@@ -1,9 +1,14 @@
1
1
  require 'active_support/core_ext/module'
2
2
 
3
+ # Events used by discordrb
3
4
  module Discordrb::Events
5
+ # A negated object, used to not match something in event parameters
4
6
  class Negated
5
7
  attr_reader :object
6
- def initialize(object); @object = object; end
8
+
9
+ def initialize(object)
10
+ @object = object
11
+ end
7
12
  end
8
13
 
9
14
  def self.matches_all(attributes, to_check, &block)
@@ -17,9 +22,7 @@ module Discordrb::Events
17
22
  end
18
23
 
19
24
  # Second case: there's a single, not-negated attribute
20
- unless attributes.is_a? Array
21
- return yield(attributes, to_check)
22
- end
25
+ return yield(attributes, to_check) unless attributes.is_a? Array
23
26
 
24
27
  # Third case: it's an array of attributes
25
28
  attributes.reduce(false) do |result, element|
@@ -27,14 +30,15 @@ module Discordrb::Events
27
30
  end
28
31
  end
29
32
 
33
+ # Generic event handler that can be extended
30
34
  class EventHandler
31
35
  def initialize(attributes, block)
32
36
  @attributes = attributes
33
37
  @block = block
34
38
  end
35
39
 
36
- def matches?(event)
37
- raise "Attempted to call matches?() from a generic EventHandler"
40
+ def matches?(_)
41
+ fail 'Attempted to call matches?() from a generic EventHandler'
38
42
  end
39
43
 
40
44
  def match(event)
@@ -48,7 +52,7 @@ module Discordrb::Events
48
52
 
49
53
  # Event handler that matches all events
50
54
  class TrueEventHandler < EventHandler
51
- def matches?(event)
55
+ def matches?(_)
52
56
  true
53
57
  end
54
58
  end
@@ -2,6 +2,7 @@ require 'discordrb/events/generic'
2
2
  require 'discordrb/data'
3
3
 
4
4
  module Discordrb::Events
5
+ # Raised when a user updates on a server (e.g. new name)
5
6
  class GuildMemberUpdateEvent
6
7
  attr_reader :user
7
8
  attr_reader :roles
@@ -9,25 +10,26 @@ module Discordrb::Events
9
10
 
10
11
  def initialize(data, bot)
11
12
  @server = bot.server(data['guild_id'].to_i)
12
- return if !@server
13
-
13
+ return unless @server
14
+
14
15
  user_id = data['user']['id'].to_i
15
- @user = @server.members.find {|u| u.id == user_id}
16
+ @user = @server.members.find { |u| u.id == user_id }
16
17
  @roles = []
17
18
  data['roles'].each do |element|
18
19
  role_id = element.to_i
19
- @roles << @server.roles.find {|r| r.id == role_id}
20
+ @roles << @server.roles.find { |r| r.id == role_id }
20
21
  end
21
22
  end
22
23
  end
23
24
 
25
+ # Event handler for GuildMemberUpdateEvent
24
26
  class GuildMemberUpdateHandler < EventHandler
25
27
  def matches?(event)
26
28
  # Check for the proper event type
27
29
  return false unless event.is_a? GuildMemberUpdateEvent
28
30
 
29
- return [
30
- matches_all(@attributes[:name], event.name) do |a,e|
31
+ [
32
+ matches_all(@attributes[:name], event.name) do |a, e|
31
33
  if a.is_a? String
32
34
  a == e.to_s
33
35
  else
@@ -2,26 +2,28 @@ require 'discordrb/events/generic'
2
2
  require 'discordrb/data'
3
3
 
4
4
  module Discordrb::Events
5
+ # Raised when a role is created on a server
5
6
  class GuildRoleCreateEvent
6
7
  attr_reader :role
7
8
  attr_reader :server
8
9
 
9
10
  def initialize(data, bot)
10
11
  @server = bot.server(data['guild_id'].to_i)
11
- return if !@server
12
-
12
+ return unless @server
13
+
13
14
  role_id = data['role']['id'].to_i
14
- @role = @server.roles.find {|r| r.id == role_id}
15
+ @role = @server.roles.find { |r| r.id == role_id }
15
16
  end
16
17
  end
17
18
 
19
+ # Event handler for GuildRoleCreateEvent
18
20
  class GuildRoleCreateEventHandler < EventHandler
19
21
  def matches?(event)
20
22
  # Check for the proper event type
21
23
  return false unless event.is_a? GuildRoleCreateEvent
22
24
 
23
- return [
24
- matches_all(@attributes[:name], event.name) do |a,e|
25
+ [
26
+ matches_all(@attributes[:name], event.name) do |a, e|
25
27
  if a.is_a? String
26
28
  a == e.to_s
27
29
  else
@@ -2,6 +2,7 @@ require 'discordrb/events/generic'
2
2
  require 'discordrb/data'
3
3
 
4
4
  module Discordrb::Events
5
+ # Raised when a role is deleted from a server
5
6
  class GuildRoleDeleteEvent
6
7
  attr_reader :id
7
8
  attr_reader :server
@@ -16,13 +17,14 @@ module Discordrb::Events
16
17
  end
17
18
  end
18
19
 
20
+ # EventHandler for GuildRoleDeleteEvent
19
21
  class GuildRoleDeleteEventHandler < EventHandler
20
22
  def matches?(event)
21
23
  # Check for the proper event type
22
24
  return false unless event.is_a? GuildRoleDeleteEvent
23
25
 
24
- return [
25
- matches_all(@attributes[:name], event.name) do |a,e|
26
+ [
27
+ matches_all(@attributes[:name], event.name) do |a, e|
26
28
  if a.is_a? String
27
29
  a == e.to_s
28
30
  else
@@ -2,26 +2,28 @@ require 'discordrb/events/generic'
2
2
  require 'discordrb/data'
3
3
 
4
4
  module Discordrb::Events
5
+ # Event raised when a role updates on a server
5
6
  class GuildRoleUpdateEvent
6
7
  attr_reader :role
7
8
  attr_reader :server
8
9
 
9
10
  def initialize(data, bot)
10
11
  @server = bot.server(data['guild_id'].to_i)
11
- return if !@server
12
-
12
+ return unless @server
13
+
13
14
  role_id = data['role']['id'].to_i
14
- @role = @server.roles.find {|r| r.id == role_id}
15
+ @role = @server.roles.find { |r| r.id == role_id }
15
16
  end
16
17
  end
17
18
 
19
+ # Event handler for GuildRoleUpdateEvent
18
20
  class GuildRoleUpdateEventHandler < EventHandler
19
21
  def matches?(event)
20
22
  # Check for the proper event type
21
23
  return false unless event.is_a? GuildRoleUpdateEvent
22
24
 
23
- return [
24
- matches_all(@attributes[:name], event.name) do |a,e|
25
+ [
26
+ matches_all(@attributes[:name], event.name) do |a, e|
25
27
  if a.is_a? String
26
28
  a == e.to_s
27
29
  else
@@ -1,6 +1,7 @@
1
1
  require 'discordrb/events/generic'
2
2
 
3
3
  module Discordrb::Events
4
+ # Event raised when a text message is sent to a channel
4
5
  class MessageEvent
5
6
  attr_reader :message
6
7
 
@@ -12,7 +13,9 @@ module Discordrb::Events
12
13
  @message = message
13
14
  end
14
15
 
15
- def send_message(content); @message.channel.send_message(content); end
16
+ def send_message(content)
17
+ @message.channel.send_message(content)
18
+ end
16
19
 
17
20
  alias_method :user, :author
18
21
  alias_method :text, :content
@@ -20,26 +23,27 @@ module Discordrb::Events
20
23
  alias_method :respond, :send_message
21
24
  end
22
25
 
26
+ # Event handler for MessageEvent
23
27
  class MessageEventHandler < EventHandler
24
28
  def matches?(event)
25
29
  # Check for the proper event type
26
30
  return false unless event.is_a? MessageEvent
27
31
 
28
- return [
29
- matches_all(@attributes[:starting_with], event.content) { |a,e| e.start_with? a },
30
- matches_all(@attributes[:ending_with], event.content) { |a,e| e.end_with? a },
31
- matches_all(@attributes[:containing], event.content) { |a,e| e.include? a },
32
- matches_all(@attributes[:in], event.channel) do |a,e|
32
+ [
33
+ matches_all(@attributes[:starting_with], event.content) { |a, e| e.start_with? a },
34
+ matches_all(@attributes[:ending_with], event.content) { |a, e| e.end_with? a },
35
+ matches_all(@attributes[:containing], event.content) { |a, e| e.include? a },
36
+ matches_all(@attributes[:in], event.channel) do |a, e|
33
37
  if a.is_a? String
34
38
  # Make sure to remove the "#" from channel names in case it was specified
35
- a.gsub('#', '') == e.name
39
+ a.delete('#') == e.name
36
40
  elsif a.is_a? Fixnum
37
41
  a == e.id
38
42
  else
39
43
  a == e
40
44
  end
41
45
  end,
42
- matches_all(@attributes[:from], event.author) do |a,e|
46
+ matches_all(@attributes[:from], event.author) do |a, e|
43
47
  if a.is_a? String
44
48
  a == e.name
45
49
  elsif a.is_a? Fixnum
@@ -48,9 +52,9 @@ module Discordrb::Events
48
52
  a == e
49
53
  end
50
54
  end,
51
- matches_all(@attributes[:with_text], event.content) { |a,e| e == a },
52
- matches_all(@attributes[:after], event.timestamp) { |a,e| a > e },
53
- matches_all(@attributes[:before], event.timestamp) { |a,e| a < e }
55
+ matches_all(@attributes[:with_text], event.content) { |a, e| e == a },
56
+ matches_all(@attributes[:after], event.timestamp) { |a, e| a > e },
57
+ matches_all(@attributes[:before], event.timestamp) { |a, e| a < e }
54
58
  ].reduce(true, &:&)
55
59
  end
56
60
  end
@@ -2,6 +2,7 @@ require 'discordrb/events/generic'
2
2
  require 'discordrb/data'
3
3
 
4
4
  module Discordrb::Events
5
+ # Event raised when a user's presence state updates (playing game, idle or back online)
5
6
  class PresenceEvent
6
7
  attr_reader :server, :user, :status
7
8
 
@@ -12,13 +13,14 @@ module Discordrb::Events
12
13
  end
13
14
  end
14
15
 
16
+ # Event handler for PresenceEvent
15
17
  class PresenceEventHandler < EventHandler
16
18
  def matches?(event)
17
19
  # Check for the proper event type
18
20
  return false unless event.is_a? PresenceEvent
19
21
 
20
- return [
21
- matches_all(@attributes[:from], event.user) do |a,e|
22
+ [
23
+ matches_all(@attributes[:from], event.user) do |a, e|
22
24
  if a.is_a? String
23
25
  a == e.name
24
26
  elsif a.is_a? Fixnum
@@ -27,7 +29,7 @@ module Discordrb::Events
27
29
  a == e
28
30
  end
29
31
  end,
30
- matches_all(@attributes[:status], event.status) do |a,e|
32
+ matches_all(@attributes[:status], event.status) do |a, e|
31
33
  if a.is_a? String
32
34
  a == e.to_s
33
35
  else
@@ -1,6 +1,7 @@
1
1
  require 'discordrb/events/generic'
2
2
 
3
3
  module Discordrb::Events
4
+ # Event raised when a user starts typing
4
5
  class TypingEvent
5
6
  attr_reader :channel, :user, :timestamp
6
7
 
@@ -13,22 +14,23 @@ module Discordrb::Events
13
14
  end
14
15
  end
15
16
 
17
+ # Event handler for TypingEvent
16
18
  class TypingEventHandler < EventHandler
17
19
  def matches?(event)
18
20
  # Check for the proper event type
19
21
  return false unless event.is_a? TypingEvent
20
22
 
21
- return [
22
- matches_all(@attributes[:in], event.channel) do |a,e|
23
+ [
24
+ matches_all(@attributes[:in], event.channel) do |a, e|
23
25
  if a.is_a? String
24
- a.gsub('#', '') == e.name
26
+ a.delete('#') == e.name
25
27
  elsif a.is_a? Fixnum
26
28
  a == e.id
27
29
  else
28
30
  a == e
29
31
  end
30
32
  end,
31
- matches_all(@attributes[:from], event.user) do |a,e|
33
+ matches_all(@attributes[:from], event.user) do |a, e|
32
34
  if a.is_a? String
33
35
  a == e.name
34
36
  elsif a.is_a? Fixnum
@@ -37,8 +39,8 @@ module Discordrb::Events
37
39
  a == e
38
40
  end
39
41
  end,
40
- matches_all(@attributes[:after], event.timestamp) { |a,e| a > e },
41
- matches_all(@attributes[:before], event.timestamp) { |a,e| a < e }
42
+ matches_all(@attributes[:after], event.timestamp) { |a, e| a > e },
43
+ matches_all(@attributes[:before], event.timestamp) { |a, e| a < e }
42
44
  ].reduce(true, &:&)
43
45
  end
44
46
  end
@@ -2,6 +2,7 @@ require 'discordrb/events/generic'
2
2
  require 'discordrb/data'
3
3
 
4
4
  module Discordrb::Events
5
+ # Event raised when a user's voice state updates
5
6
  class VoiceStateUpdateEvent
6
7
  attr_reader :user
7
8
  attr_reader :token
@@ -23,21 +24,21 @@ module Discordrb::Events
23
24
  @mute = data['mute']
24
25
  @deaf = data['deaf']
25
26
  @server = bot.server(data['guild_id'].to_i)
26
- return if !@server
27
- if data['channel_id']
28
- @channel = bot.channel(data['channel_id'].to_i)
29
- end
27
+ return unless @server
28
+
29
+ @channel = bot.channel(data['channel_id'].to_i) if data['channel_id']
30
30
  @user = bot.user(data['user_id'].to_i)
31
31
  end
32
32
  end
33
33
 
34
+ # Event handler for VoiceStateUpdateEvent
34
35
  class VoiceStateUpdateEventHandler < EventHandler
35
36
  def matches?(event)
36
37
  # Check for the proper event type
37
38
  return false unless event.is_a? VoiceStateUpdateEvent
38
39
 
39
- return [
40
- matches_all(@attributes[:from], event.user) do |a,e|
40
+ [
41
+ matches_all(@attributes[:from], event.user) do |a, e|
41
42
  if a.is_a? String
42
43
  a == e.name
43
44
  elsif a.is_a? Fixnum
@@ -46,35 +47,35 @@ module Discordrb::Events
46
47
  a == e
47
48
  end
48
49
  end,
49
- matches_all(@attributes[:mute], event.mute) do |a,e|
50
+ matches_all(@attributes[:mute], event.mute) do |a, e|
50
51
  if a.is_a? Boolean
51
52
  a == e.to_s
52
53
  else
53
54
  a == e
54
55
  end
55
56
  end,
56
- matches_all(@attributes[:deaf], event.deaf) do |a,e|
57
+ matches_all(@attributes[:deaf], event.deaf) do |a, e|
57
58
  if a.is_a? Boolean
58
59
  a == e.to_s
59
60
  else
60
61
  a == e
61
- end
62
+ end
62
63
  end,
63
- matches_all(@attributes[:self_mute], event.self_mute) do |a,e|
64
+ matches_all(@attributes[:self_mute], event.self_mute) do |a, e|
64
65
  if a.is_a? Boolean
65
66
  a == e.to_s
66
67
  else
67
68
  a == e
68
69
  end
69
70
  end,
70
- matches_all(@attributes[:self_deaf], event.self_deaf) do |a,e|
71
+ matches_all(@attributes[:self_deaf], event.self_deaf) do |a, e|
71
72
  if a.is_a? Boolean
72
73
  a == e.to_s
73
74
  else
74
75
  a == e
75
- end
76
+ end
76
77
  end,
77
- matches_all(@attributes[:channel], event.channel) do |a,e|
78
+ matches_all(@attributes[:channel], event.channel) do |a, e|
78
79
  if a.is_a? String
79
80
  a == e.name
80
81
  elsif a.is_a? Fixnum