discordrb 1.1.2 → 1.1.3
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.
- checksums.yaml +4 -4
- data/lib/discordrb/bot.rb +20 -0
- data/lib/discordrb/data.rb +42 -4
- data/lib/discordrb/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0dcdf2ba14487766e026041d7e00e0e49f565d7
|
4
|
+
data.tar.gz: 2630df655c054d3a00520302bcf8e164f199cddd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6641d9e376c4bacb632a7e9796914974fe3e8225aa9f32604ad9bdd7d84bcc63a8f4dcf5e66b9a1c4af4bebcf4da5b4c7a64f641fc0c6f4793fdc98205de2e24
|
7
|
+
data.tar.gz: f06c2d54af5b4572ebe1a74e108252880e469ecfba206b9e6c5b7dfe55493c9480474b47a0f178ca2e1e537a78e151c877845e66f5229f0bb82b9401ec3a521b
|
data/lib/discordrb/bot.rb
CHANGED
@@ -27,6 +27,8 @@ module Discordrb
|
|
27
27
|
|
28
28
|
@channels = {}
|
29
29
|
@users = {}
|
30
|
+
|
31
|
+
add_default_handlers
|
30
32
|
end
|
31
33
|
|
32
34
|
def run
|
@@ -129,6 +131,24 @@ module Discordrb
|
|
129
131
|
|
130
132
|
private
|
131
133
|
|
134
|
+
# Register any default event handlers that the end user shouldn't
|
135
|
+
# need to worry about implementing
|
136
|
+
def add_default_handlers
|
137
|
+
# Update a user's status
|
138
|
+
presence do |event|
|
139
|
+
user_id = event.user.id
|
140
|
+
cached_user = @users[user_id]
|
141
|
+
if !cached_user
|
142
|
+
# If this is a user we've never seen before, add them
|
143
|
+
@users[user_id] = event.user
|
144
|
+
cached_user = event.user
|
145
|
+
end
|
146
|
+
cached_user.instance_exec(event.status) do |status|
|
147
|
+
@status = status
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
132
152
|
def debug(message)
|
133
153
|
puts "[DEBUG @ #{Time.now.to_s}] #{message}" if @debug
|
134
154
|
end
|
data/lib/discordrb/data.rb
CHANGED
@@ -3,14 +3,21 @@
|
|
3
3
|
module Discordrb
|
4
4
|
class User
|
5
5
|
attr_reader :username, :id, :discriminator, :avatar
|
6
|
+
|
7
|
+
# Is the user online, offline, or away?
|
8
|
+
attr_reader :status
|
9
|
+
|
6
10
|
alias_method :name, :username
|
7
11
|
|
8
12
|
def initialize(data, bot)
|
9
13
|
@bot = bot
|
14
|
+
|
10
15
|
@username = data['username']
|
11
16
|
@id = data['id'].to_i
|
12
17
|
@discriminator = data['discriminator']
|
13
18
|
@avatar = data['avatar']
|
19
|
+
|
20
|
+
@status = :offline
|
14
21
|
end
|
15
22
|
|
16
23
|
# Utility function to mention users in messages
|
@@ -32,16 +39,17 @@ module Discordrb
|
|
32
39
|
end
|
33
40
|
|
34
41
|
class Channel
|
35
|
-
attr_reader :name, :server, :type, :id, :is_private, :recipient
|
42
|
+
attr_reader :name, :server, :type, :id, :is_private, :recipient, :topic
|
36
43
|
|
37
44
|
def initialize(data, bot)
|
38
45
|
@bot = bot
|
39
46
|
|
40
47
|
#data is a sometimes a Hash and othertimes an array of Hashes, you only want the last one if it's an array
|
41
|
-
data = data[-1] if data.is_a?(Array)
|
48
|
+
data = data[-1] if data.is_a?(Array)
|
42
49
|
|
43
|
-
@id = data['id']
|
50
|
+
@id = data['id'].to_i
|
44
51
|
@type = data['type'] || 'text'
|
52
|
+
@topic = data['topic']
|
45
53
|
|
46
54
|
@is_private = data['is_private']
|
47
55
|
if @is_private
|
@@ -85,6 +93,9 @@ module Discordrb
|
|
85
93
|
class Server
|
86
94
|
attr_reader :region, :name, :owner_id, :id, :members
|
87
95
|
|
96
|
+
# Array of channels on the server
|
97
|
+
attr_reader :channels
|
98
|
+
|
88
99
|
def initialize(data, bot)
|
89
100
|
@bot = bot
|
90
101
|
@region = data['region']
|
@@ -93,9 +104,36 @@ module Discordrb
|
|
93
104
|
@id = data['id'].to_i
|
94
105
|
|
95
106
|
@members = []
|
107
|
+
members_by_id = {}
|
96
108
|
|
97
109
|
data['members'].each do |element|
|
98
|
-
|
110
|
+
user = User.new(element['user'], bot)
|
111
|
+
@members << user
|
112
|
+
members_by_id[user.id] = user
|
113
|
+
end
|
114
|
+
|
115
|
+
# Update user statuses with presence info
|
116
|
+
if data['presences']
|
117
|
+
data['presences'].each do |element|
|
118
|
+
if element['user']
|
119
|
+
user = members_by_id[element['user']['id'].to_i]
|
120
|
+
if user && element['status']
|
121
|
+
# I don't want to make User#status writable, so we'll use
|
122
|
+
# instance_exec to open the object and set the status
|
123
|
+
user.instance_exec(element['status']) do |status|
|
124
|
+
@status = status.to_sym
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
@channels = []
|
132
|
+
|
133
|
+
if data['channels']
|
134
|
+
data['channels'].each do |element|
|
135
|
+
@channels << Channel.new(element, bot)
|
136
|
+
end
|
99
137
|
end
|
100
138
|
end
|
101
139
|
end
|
data/lib/discordrb/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: discordrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- meew0
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faye-websocket
|