discordrb 1.1.3 → 1.2.0

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.

@@ -1,16 +1,16 @@
1
- module Discordrb::Endpoints
2
- BASE = "https://discordapp.com/"
3
- APIBASE = BASE + "api"
4
-
5
- #WEBSOCKET_HUB = "wss://discordapp.com/hub"
6
- GATEWAY = APIBASE + "/gateway"
7
-
8
- LOGIN = APIBASE + "/auth/login"
9
- LOGOUT = APIBASE + "/auth/logout"
10
-
11
- SERVERS = APIBASE + "/guilds"
12
-
13
- CHANNELS = APIBASE + "/channels"
14
-
15
- USERS = APIBASE + "/users"
16
- end
1
+ module Discordrb::Endpoints
2
+ BASE = "https://discordapp.com/"
3
+ APIBASE = BASE + "api"
4
+
5
+ #WEBSOCKET_HUB = "wss://discordapp.com/hub"
6
+ GATEWAY = APIBASE + "/gateway"
7
+
8
+ LOGIN = APIBASE + "/auth/login"
9
+ LOGOUT = APIBASE + "/auth/logout"
10
+
11
+ SERVERS = APIBASE + "/guilds"
12
+
13
+ CHANNELS = APIBASE + "/channels"
14
+
15
+ USERS = APIBASE + "/users"
16
+ end
@@ -0,0 +1,48 @@
1
+ require 'discordrb/events/generic'
2
+ require 'discordrb/data'
3
+
4
+ module Discordrb::Events
5
+ class ChannelCreateEvent
6
+ attr_reader :type
7
+ attr_reader :topic
8
+ attr_reader :position
9
+ attr_reader :name
10
+ attr_reader :is_private
11
+ attr_reader :id
12
+ attr_reader :server
13
+
14
+ def initialize(data, bot)
15
+ @type = data['type']
16
+ @topic = data['topic']
17
+ @position = data['position']
18
+ @name = data['name']
19
+ @is_private = data['is_private']
20
+ @id = data['id']
21
+ @server = bot.server(data['guild_id'].to_i)
22
+ end
23
+ end
24
+
25
+ class ChannelCreateEventHandler < EventHandler
26
+ def matches?(event)
27
+ # Check for the proper event type
28
+ return false unless event.is_a? ChannelCreateEvent
29
+
30
+ return [
31
+ matches_all(@attributes[:type], event.type) do |a,e|
32
+ if a.is_a? String
33
+ a == e.name
34
+ else
35
+ a == e
36
+ end
37
+ end,
38
+ matches_all(@attributes[:name], event.name) do |a,e|
39
+ if a.is_a? String
40
+ a == e.to_s
41
+ else
42
+ a == e
43
+ end
44
+ end
45
+ ].reduce(true, &:&)
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,48 @@
1
+ require 'discordrb/events/generic'
2
+ require 'discordrb/data'
3
+
4
+ module Discordrb::Events
5
+ class ChannelDeleteEvent
6
+ attr_reader :type
7
+ attr_reader :topic
8
+ attr_reader :position
9
+ attr_reader :name
10
+ attr_reader :is_private
11
+ attr_reader :id
12
+ attr_reader :server
13
+
14
+ def initialize(data, bot)
15
+ @type = data['type']
16
+ @topic = data['topic']
17
+ @position = data['position']
18
+ @name = data['name']
19
+ @is_private = data['is_private']
20
+ @id = data['id'].to_i
21
+ @server = bot.server(data['guild_id'].to_i)
22
+ end
23
+ end
24
+
25
+ class ChannelDeleteEventHandler < EventHandler
26
+ def matches?(event)
27
+ # Check for the proper event type
28
+ return false unless event.is_a? ChannelDeleteEvent
29
+
30
+ return [
31
+ matches_all(@attributes[:type], event.type) do |a,e|
32
+ if a.is_a? String
33
+ a == e.name
34
+ else
35
+ a == e
36
+ end
37
+ end,
38
+ matches_all(@attributes[:name], event.name) do |a,e|
39
+ if a.is_a? String
40
+ a == e.to_s
41
+ else
42
+ a == e
43
+ end
44
+ end
45
+ ].reduce(true, &:&)
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,49 @@
1
+ require 'discordrb/events/generic'
2
+ require 'discordrb/data'
3
+
4
+ module Discordrb::Events
5
+ class ChannelUpdateEvent
6
+ attr_reader :type
7
+ attr_reader :topic
8
+ attr_reader :position
9
+ attr_reader :name
10
+ attr_reader :is_private
11
+ attr_reader :channel
12
+ attr_reader :server
13
+
14
+ def initialize(data, bot)
15
+ @type = data['type']
16
+ @topic = data['topic']
17
+ @position = data['position']
18
+ @name = data['name']
19
+ @is_private = data['is_private']
20
+ @server = bot.server(data['guild_id'].to_i)
21
+ return if !@server
22
+ @channel = bot.channel(data['id'].to_i)
23
+ end
24
+ end
25
+
26
+ class ChannelUpdateEventHandler < EventHandler
27
+ def matches?(event)
28
+ # Check for the proper event type
29
+ return false unless event.is_a? ChannelUpdateEvent
30
+
31
+ return [
32
+ matches_all(@attributes[:type], event.type) do |a,e|
33
+ if a.is_a? String
34
+ a == e.name
35
+ else
36
+ a == e
37
+ end
38
+ end,
39
+ matches_all(@attributes[:name], event.name) do |a,e|
40
+ if a.is_a? String
41
+ a == e.to_s
42
+ else
43
+ a == e
44
+ end
45
+ end
46
+ ].reduce(true, &:&)
47
+ end
48
+ end
49
+ end
@@ -1,59 +1,59 @@
1
- require 'active_support/core_ext/module'
2
-
3
- module Discordrb::Events
4
- class Negated
5
- attr_reader :object
6
- def initialize(object); @object = object; end
7
- end
8
-
9
- def self.matches_all(attributes, to_check, &block)
10
- # "Zeroth" case: attributes is nil
11
- return true unless attributes
12
-
13
- # First case: there's a single negated attribute
14
- if attributes.is_a? Negated
15
- # The contained object might also be an array, so recursively call matches_all (and negate the result)
16
- return !matches_all(attributes.object, to_check, &block)
17
- end
18
-
19
- # Second case: there's a single, not-negated attribute
20
- unless attributes.is_a? Array
21
- return yield(attributes, to_check)
22
- end
23
-
24
- # Third case: it's an array of attributes
25
- attributes.reduce(false) do |result, element|
26
- result || yield(element, to_check)
27
- end
28
- end
29
-
30
- class EventHandler
31
- def initialize(attributes, block)
32
- @attributes = attributes
33
- @block = block
34
- end
35
-
36
- def matches?(event)
37
- raise "Attempted to call matches?() from a generic EventHandler"
38
- end
39
-
40
- def match(event)
41
- @block.call(event) if matches? event
42
- end
43
-
44
- def matches_all(attributes, to_check, &block)
45
- Discordrb::Events.matches_all(attributes, to_check, &block)
46
- end
47
- end
48
-
49
- # Event handler that matches all events
50
- class TrueEventHandler < EventHandler
51
- def matches?(event)
52
- true
53
- end
54
- end
55
- end
56
-
57
- def not!(object)
58
- Discordrb::Events::Negated.new(object)
59
- end
1
+ require 'active_support/core_ext/module'
2
+
3
+ module Discordrb::Events
4
+ class Negated
5
+ attr_reader :object
6
+ def initialize(object); @object = object; end
7
+ end
8
+
9
+ def self.matches_all(attributes, to_check, &block)
10
+ # "Zeroth" case: attributes is nil
11
+ return true unless attributes
12
+
13
+ # First case: there's a single negated attribute
14
+ if attributes.is_a? Negated
15
+ # The contained object might also be an array, so recursively call matches_all (and negate the result)
16
+ return !matches_all(attributes.object, to_check, &block)
17
+ end
18
+
19
+ # Second case: there's a single, not-negated attribute
20
+ unless attributes.is_a? Array
21
+ return yield(attributes, to_check)
22
+ end
23
+
24
+ # Third case: it's an array of attributes
25
+ attributes.reduce(false) do |result, element|
26
+ result || yield(element, to_check)
27
+ end
28
+ end
29
+
30
+ class EventHandler
31
+ def initialize(attributes, block)
32
+ @attributes = attributes
33
+ @block = block
34
+ end
35
+
36
+ def matches?(event)
37
+ raise "Attempted to call matches?() from a generic EventHandler"
38
+ end
39
+
40
+ def match(event)
41
+ @block.call(event) if matches? event
42
+ end
43
+
44
+ def matches_all(attributes, to_check, &block)
45
+ Discordrb::Events.matches_all(attributes, to_check, &block)
46
+ end
47
+ end
48
+
49
+ # Event handler that matches all events
50
+ class TrueEventHandler < EventHandler
51
+ def matches?(event)
52
+ true
53
+ end
54
+ end
55
+ end
56
+
57
+ def not!(object)
58
+ Discordrb::Events::Negated.new(object)
59
+ end
@@ -0,0 +1,40 @@
1
+ require 'discordrb/events/generic'
2
+ require 'discordrb/data'
3
+
4
+ module Discordrb::Events
5
+ class GuildMemberUpdateEvent
6
+ attr_reader :user
7
+ attr_reader :roles
8
+ attr_reader :server
9
+
10
+ def initialize(data, bot)
11
+ @server = bot.server(data['guild_id'].to_i)
12
+ return if !@server
13
+
14
+ user_id = data['user']['id'].to_i
15
+ @user = @server.members.find {|u| u.id == user_id}
16
+ @roles = []
17
+ data['roles'].each do |element|
18
+ role_id = element.to_i
19
+ @roles << @server.roles.find {|r| r.id == role_id}
20
+ end
21
+ end
22
+ end
23
+
24
+ class GuildMemberUpdateHandler < EventHandler
25
+ def matches?(event)
26
+ # Check for the proper event type
27
+ return false unless event.is_a? GuildMemberUpdateEvent
28
+
29
+ return [
30
+ matches_all(@attributes[:name], event.name) do |a,e|
31
+ if a.is_a? String
32
+ a == e.to_s
33
+ else
34
+ a == e
35
+ end
36
+ end
37
+ ].reduce(true, &:&)
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,34 @@
1
+ require 'discordrb/events/generic'
2
+ require 'discordrb/data'
3
+
4
+ module Discordrb::Events
5
+ class GuildRoleCreateEvent
6
+ attr_reader :role
7
+ attr_reader :server
8
+
9
+ def initialize(data, bot)
10
+ @server = bot.server(data['guild_id'].to_i)
11
+ return if !@server
12
+
13
+ role_id = data['role']['id'].to_i
14
+ @role = @server.roles.find {|r| r.id == role_id}
15
+ end
16
+ end
17
+
18
+ class GuildRoleCreateEventHandler < EventHandler
19
+ def matches?(event)
20
+ # Check for the proper event type
21
+ return false unless event.is_a? GuildRoleCreateEvent
22
+
23
+ return [
24
+ matches_all(@attributes[:name], event.name) do |a,e|
25
+ if a.is_a? String
26
+ a == e.to_s
27
+ else
28
+ a == e
29
+ end
30
+ end
31
+ ].reduce(true, &:&)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,35 @@
1
+ require 'discordrb/events/generic'
2
+ require 'discordrb/data'
3
+
4
+ module Discordrb::Events
5
+ class GuildRoleDeleteEvent
6
+ attr_reader :id
7
+ attr_reader :server
8
+
9
+ def initialize(data, bot)
10
+ # The role should already be deleted from the server's list
11
+ # by the time we create this event, so we'll create a temporary
12
+ # role object for event consumers to use.
13
+ @id = data['role_id'].to_i
14
+ server_id = data['guild_id'].to_i
15
+ @server = bot.server(server_id)
16
+ end
17
+ end
18
+
19
+ class GuildRoleDeleteEventHandler < EventHandler
20
+ def matches?(event)
21
+ # Check for the proper event type
22
+ return false unless event.is_a? GuildRoleDeleteEvent
23
+
24
+ return [
25
+ matches_all(@attributes[:name], event.name) do |a,e|
26
+ if a.is_a? String
27
+ a == e.to_s
28
+ else
29
+ a == e
30
+ end
31
+ end
32
+ ].reduce(true, &:&)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,34 @@
1
+ require 'discordrb/events/generic'
2
+ require 'discordrb/data'
3
+
4
+ module Discordrb::Events
5
+ class GuildRoleUpdateEvent
6
+ attr_reader :role
7
+ attr_reader :server
8
+
9
+ def initialize(data, bot)
10
+ @server = bot.server(data['guild_id'].to_i)
11
+ return if !@server
12
+
13
+ role_id = data['role']['id'].to_i
14
+ @role = @server.roles.find {|r| r.id == role_id}
15
+ end
16
+ end
17
+
18
+ class GuildRoleUpdateEventHandler < EventHandler
19
+ def matches?(event)
20
+ # Check for the proper event type
21
+ return false unless event.is_a? GuildRoleUpdateEvent
22
+
23
+ return [
24
+ matches_all(@attributes[:name], event.name) do |a,e|
25
+ if a.is_a? String
26
+ a == e.to_s
27
+ else
28
+ a == e
29
+ end
30
+ end
31
+ ].reduce(true, &:&)
32
+ end
33
+ end
34
+ end