mij-discord 1.0.0 → 1.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f1bb367b3fa105f6f685bf536ffc5ed364c2bf1a
4
- data.tar.gz: 69d324ed5ec538deec69e778e725053240bc6faf
3
+ metadata.gz: 48c0f016e36771e9039a514a7a7ffbd2395e0fd2
4
+ data.tar.gz: dbdc6fdff7a9aa2517ab6c52744d4c098e988309
5
5
  SHA512:
6
- metadata.gz: cfae532e6dbad1759046637cc4049a8b2d000ac40c5d4ffc376455c5c000536d78f6d4168d288f8e80eaadfef01dbaacec391debbdd7cbeb4988f4751c3f7c75
7
- data.tar.gz: 9bc6a5388a4f3d5961c1682b011043e3940fc5cc6d4a9a12d6e9f37c51cda80ea2589de5b67754bf642904c77bbf505099d1a7b9b34941c2c0dd23e2c417ae7b
6
+ metadata.gz: 274edf535044862a7ce570f94495f1eee69b2e136e3807068e12c441b58a3174545e824eac4d91245bf2a16b48129fbeedff74fb08a181103866eabad3509243
7
+ data.tar.gz: dd4ece4b29888a70aee6e58c54dfe9e21a344f1894b78f072a478303f76a40488672a54da9e4fff4b515f5b8d098c92520457ea27fb68ac5cfc751a81cebb085
data/.gitignore CHANGED
@@ -7,4 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
- /.idea/
10
+ /.idea/
11
+ /mij-discord-*.gem
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  My Discord bot library that's partially based on Discordrb. Was made because I found Discordrb to be not satisfactory for my purposes.
4
4
 
5
+ TODO: Write goddamn documentation because there's currently none.
6
+
5
7
  ## Installation
6
8
 
7
9
  Add this line to your application's Gemfile:
@@ -187,7 +187,7 @@ module MijDiscord
187
187
  end
188
188
 
189
189
  def application
190
- raise RuntimeError, 'Cannot get OAuth application for non-bot user' if @type != :bot
190
+ raise 'Cannot get OAuth application for non-bot user' if @type != :bot
191
191
 
192
192
  response = MijDiscord::Core::API.oauth_application(@token)
193
193
  MijDiscord::Data::Application.new(JSON.parse(response), self)
@@ -563,7 +563,7 @@ module MijDiscord
563
563
  private
564
564
 
565
565
  def gateway_check
566
- raise RuntimeError, 'A gateway connection is required for this action' unless connected?
566
+ raise 'A gateway connection is required for this action' unless connected?
567
567
  end
568
568
 
569
569
  def notify_ready
@@ -16,7 +16,7 @@ module MijDiscord::Core::API::Channel
16
16
 
17
17
  # Update a channel's data
18
18
  # https://discordapp.com/developers/docs/resources/channel#modify-channel
19
- def update(token, channel_id, name, topic, nsfw, parent_id, position, bitrate, user_limit, reason = nil)
19
+ def update(token, channel_id, name, topic, nsfw, parent_id, position, bitrate, user_limit, overwrites, reason = nil)
20
20
  MijDiscord::Core::API.request(
21
21
  :channels_cid,
22
22
  channel_id,
@@ -25,7 +25,8 @@ module MijDiscord::Core::API::Channel
25
25
  {
26
26
  name: name, topic: topic, nsfw: nsfw,
27
27
  parent_id: parent_id, position: position,
28
- bitrate: bitrate, user_limit: user_limit
28
+ bitrate: bitrate, user_limit: user_limit,
29
+ permission_overwrites: overwrites
29
30
  }.delete_if {|_, v| v.nil? }.to_json,
30
31
  Authorization: token,
31
32
  content_type: :json,
@@ -414,7 +414,7 @@ module MijDiscord::Core
414
414
 
415
415
  def ws_send(data, type)
416
416
  unless @handshake_done && !@ws_closed
417
- raise StandardError, 'Tried to send something to the websocket while not being connected!'
417
+ raise 'Tried to send something to the websocket while not being connected!'
418
418
  end
419
419
 
420
420
  frame = WebSocket::Frame::Outgoing::Client.new(data: data, type: type, version: @handshake.version)
@@ -50,7 +50,7 @@ module MijDiscord::Data
50
50
  when :category
51
51
  ChannelCategory.new(data, bot, server)
52
52
  else
53
- raise RuntimeError, 'Broken channel object!'
53
+ raise 'Broken channel object!'
54
54
  end
55
55
  end
56
56
 
@@ -114,6 +114,8 @@ module MijDiscord::Data
114
114
  @parent_id ? @server.cache.get_channel(@parent_id) : nil
115
115
  end
116
116
 
117
+ alias_method :category, :parent
118
+
117
119
  def member_overwrites
118
120
  @permission_overwrites.values.select {|v| v.type == :member }
119
121
  end
@@ -123,30 +125,47 @@ module MijDiscord::Data
123
125
  end
124
126
 
125
127
  def set_name(name, reason = nil)
126
- return if private?
127
-
128
128
  set_options(reason, name: name)
129
+ nil
129
130
  end
130
131
 
131
132
  alias_method :name=, :set_name
132
133
 
133
134
  def set_position(position, reason = nil)
134
135
  set_options(reason, position: position)
136
+ nil
135
137
  end
136
138
 
137
139
  alias_method :position=, :set_position
138
140
 
139
141
  def set_parent(parent, reason = nil)
140
- set_options(reason, parent: parent)
142
+ channel = @server.cache.get_channel(parent)
143
+ raise ArgumentError, 'Specified channel is not a category' unless channel&.category?
144
+
145
+ set_options(reason, parent: channel)
146
+ nil
141
147
  end
142
148
 
149
+ alias_method :parent=, :set_parent
150
+ alias_method :set_category, :set_parent
151
+ alias_method :category=, :set_parent
152
+
143
153
  def set_options(reason = nil, name: nil, topic: nil, nsfw: nil,
144
- parent: nil, position: nil, bitrate: nil, user_limit: nil)
154
+ parent: nil, position: nil, bitrate: nil, user_limit: nil, overwrites: nil)
145
155
  response = MijDiscord::Core::API::Channel.update(@bot.token, @id,
146
- name, topic, nsfw,parent&.to_id, position, bitrate, user_limit, reason)
156
+ name, topic, nsfw,parent&.to_id, position, bitrate, user_limit, overwrites, reason)
147
157
  @server.cache.put_channel(JSON.parse(response), update: true)
148
158
  end
149
159
 
160
+ def set_overwrites(overwrites, reason = nil)
161
+ set_options(reason, overwrites: overwrites)
162
+ nil
163
+ end
164
+
165
+ alias_method :overwrites=, :set_overwrites
166
+ alias_method :set_permission_overwrites, :set_overwrites
167
+ alias_method :permission_overwrites=, :set_overwrites
168
+
150
169
  def define_overwrite(object, reason = nil, allow: 0, deny: 0)
151
170
  unless object.is_a?(Overwrite)
152
171
  allow_bits = allow.respond_to?(:bits) ? allow.bits : allow
@@ -160,6 +179,10 @@ module MijDiscord::Data
160
179
  nil
161
180
  end
162
181
 
182
+ alias_method :add_overwrite, :define_overwrite
183
+ alias_method :define_permission_overwrite, :define_overwrite
184
+ alias_method :add_permission_overwrite, :define_overwrite
185
+
163
186
  def delete_overwrite(object, reason = nil)
164
187
  raise ArgumentError, 'Invalid overwrite target' unless object.respond_to?(:to_id)
165
188
  MijDiscord::Core::API::Channel.delete_permission(@bot.token, @id,
@@ -167,6 +190,16 @@ module MijDiscord::Data
167
190
  nil
168
191
  end
169
192
 
193
+ alias_method :delete_permission_overwrite, :delete_overwrite
194
+
195
+ def sync_overwrites(reason = nil)
196
+ raise 'Cannot sync overwrites on a channel with no category set' unless @parent_id
197
+ set_overwrites(parent.overwrites, reason)
198
+ nil
199
+ end
200
+
201
+ alias_method :sync_permission_overwrites, :sync_overwrites
202
+
170
203
  def delete(reason = nil)
171
204
  MijDiscord::Core::API::Channel.delete(@bot.token, @id, reason)
172
205
  @server.cache.remove_channel(@id)
@@ -239,6 +272,7 @@ module MijDiscord::Data
239
272
  return unless text?
240
273
 
241
274
  set_options(reason, topic: topic)
275
+ nil
242
276
  end
243
277
 
244
278
  alias_method :topic=, :set_topic
@@ -247,6 +281,7 @@ module MijDiscord::Data
247
281
  return unless text?
248
282
 
249
283
  set_options(reason, nsfw: nsfw)
284
+ nil
250
285
  end
251
286
 
252
287
  alias_method :nsfw=, :set_nsfw
@@ -297,6 +332,7 @@ module MijDiscord::Data
297
332
 
298
333
  MijDiscord::Core::API::Channel.bulk_delete_messages(@bot.token, @id, ids)
299
334
  ids.each {|m| @cache.remove_message(m) }
335
+ nil
300
336
  end
301
337
 
302
338
  def invites
@@ -362,8 +398,6 @@ module MijDiscord::Data
362
398
 
363
399
  def initialize(data, bot, server)
364
400
  super(data, bot, server)
365
-
366
-
367
401
  end
368
402
 
369
403
  def update_data(data)
@@ -375,12 +409,14 @@ module MijDiscord::Data
375
409
 
376
410
  def set_bitrate(rate, reason = nil)
377
411
  set_options(reason, bitrate: rate)
412
+ nil
378
413
  end
379
414
 
380
415
  alias_method :bitrate=, :set_bitrate
381
416
 
382
417
  def set_user_limit(limit, reason = nil)
383
418
  set_options(reason, user_limit: limit)
419
+ nil
384
420
  end
385
421
 
386
422
  alias_method :user_limit=, :set_user_limit
@@ -400,5 +436,7 @@ module MijDiscord::Data
400
436
  def channels
401
437
  @server.channels.select! {|x| x.parent_id == @id }
402
438
  end
439
+
440
+ alias_method :children, :channels
403
441
  end
404
442
  end
@@ -58,24 +58,28 @@ module MijDiscord::Data
58
58
 
59
59
  def set_name(name)
60
60
  set_options(name: name)
61
+ nil
61
62
  end
62
63
 
63
64
  alias_method :name=, :set_name
64
65
 
65
66
  def set_hoist(flag)
66
67
  set_options(hoist: flag)
68
+ nil
67
69
  end
68
70
 
69
71
  alias_method :hoist=, :set_hoist
70
72
 
71
73
  def set_mentionable(flag)
72
74
  set_options(mentionable: flag)
75
+ nil
73
76
  end
74
77
 
75
78
  alias_method :mentionable=, :set_mentionable
76
79
 
77
80
  def set_color(color)
78
81
  set_options(color: color)
82
+ nil
79
83
  end
80
84
 
81
85
  alias_method :color=, :set_color
@@ -21,6 +21,12 @@ module MijDiscord::Data
21
21
  1 => :mentions,
22
22
  }.freeze
23
23
 
24
+ CHANNEL_TYPES = {
25
+ :text => 0,
26
+ :voice => 2,
27
+ :category => 4,
28
+ }.freeze
29
+
24
30
  include IDObject
25
31
 
26
32
  attr_reader :bot
@@ -237,10 +243,12 @@ module MijDiscord::Data
237
243
  channels.select!(&:voice?)
238
244
  end
239
245
 
240
- def create_channel(name, reason = nil, voice: false, bitrate: nil, user_limit: nil, permissions: [], nsfw: false)
246
+ def create_channel(name, reason = nil, type: :text, bitrate: nil, user_limit: nil, permissions: [], nsfw: false)
247
+ raise ArgumentError, 'Invalid channel type specified' unless CHANNEL_TYPES.has_key?(type)
248
+
241
249
  permissions = permissions.map {|x| x.is_a(Overwrite) ? x.to_hash : x }
242
250
  response = MijDiscord::Core::API::Server.create_channel(@bot.token, @id,
243
- name, voice ? 2 : 0, bitrate, user_limit, permissions, nsfw, reason)
251
+ name, CHANNEL_TYPES[type], bitrate, user_limit, permissions, nsfw, reason)
244
252
  @cache.put_channel(JSON.parse(response))
245
253
  end
246
254
 
@@ -294,6 +302,7 @@ module MijDiscord::Data
294
302
 
295
303
  def set_name(name, reason = nil)
296
304
  set_options(reason, name: name)
305
+ nil
297
306
  end
298
307
 
299
308
  alias_method :name=, :set_name
@@ -314,6 +323,7 @@ module MijDiscord::Data
314
323
  raise ArgumentError, 'Invalid region' unless available_regions.find {|x| x.id == region }
315
324
 
316
325
  set_options(reason, region: region)
326
+ nil
317
327
  end
318
328
 
319
329
  alias_method :region=, :set_region
@@ -326,18 +336,21 @@ module MijDiscord::Data
326
336
  else
327
337
  set_options(reason, icon: icon.to_s)
328
338
  end
339
+ nil
329
340
  end
330
341
 
331
342
  alias_method :icon=, :set_icon
332
343
 
333
344
  def set_afk_channel(channel, reason = nil)
334
345
  set_options(reason, afk_channel: channel.to_id)
346
+ nil
335
347
  end
336
348
 
337
349
  alias_method :afk_channel=, :set_afk_channel
338
350
 
339
351
  def set_afk_timeout(timeout, reason = nil)
340
352
  set_options(reason, afk_timeout: timeout)
353
+ nil
341
354
  end
342
355
 
343
356
  alias_method :afk_timeout=, :set_afk_timeout
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MijDiscord
4
- VERSION = '1.0.0'
4
+ VERSION = '1.0.2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mij-discord
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mijyuoon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-09-24 00:00:00.000000000 Z
11
+ date: 2017-09-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client