disrb 0.1.0 → 0.1.1

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.
data/lib/disrb/guild.rb CHANGED
@@ -3,9 +3,9 @@
3
3
  # DiscordApi
4
4
  # The class that contains everything that interacts with the Discord API.
5
5
  class DiscordApi
6
- def create_guild(name, region = nil, icon = nil, verification_level = nil, default_message_notifications = nil,
7
- explicit_content_filter = nil, roles = nil, channels = nil, afk_channel_id = nil, afk_timeout = nil,
8
- system_channel_id = nil, system_channel_flags = nil)
6
+ def create_guild(name, region: nil, icon: nil, verification_level: nil, default_message_notifications: nil,
7
+ explicit_content_filter: nil, roles: nil, channels: nil, afk_channel_id: nil, afk_timeout: nil,
8
+ system_channel_id: nil, system_channel_flags: nil)
9
9
  output = {}
10
10
  output[:name] = name
11
11
  unless region.nil?
@@ -22,11 +22,11 @@ class DiscordApi
22
22
  output[:afk_timeout] = afk_timeout unless afk_timeout.nil?
23
23
  output[:system_channel_id] = system_channel_id unless system_channel_id.nil?
24
24
  output[:system_channel_flags] = system_channel_flags unless system_channel_flags.nil?
25
- url = URI("#{@base_url}/guilds")
25
+ url = "#{@base_url}/guilds"
26
26
  data = JSON.generate(output)
27
27
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
28
- response = Net::HTTP.post(url, data, headers)
29
- return response unless response.code != '200'
28
+ response = DiscordApi.post(url, data, headers)
29
+ return response unless response.status != 200
30
30
 
31
31
  @logger.error("Could not create guild. Response: #{response.body}")
32
32
  response
@@ -49,19 +49,19 @@ class DiscordApi
49
49
  def get_guild_preview(guild_id)
50
50
  url = URI("#{@base_url}/guilds/#{guild_id}/preview")
51
51
  headers = { 'Authorization': @authorization_header }
52
- response = Net::HTTP.get(url, headers)
53
- return response unless response.code != '200'
52
+ response = DiscordApi.get(url, headers)
53
+ return response unless response.status != 200
54
54
 
55
55
  @logger.error("Could not get guild preview with Guild ID #{guild_id}. Response: #{response.body}")
56
56
  response
57
57
  end
58
58
 
59
- def modify_guild(guild_id, name = nil, region = nil, verification_level = nil, default_message_notifications = nil,
60
- explicit_content_filter = nil, afk_channel_id = nil, afk_timeout = nil, icon = nil, owner_id = nil,
61
- splash = nil, discovery_splash = nil, banner = nil, system_channel_id = nil,
62
- system_channel_flags = nil, rules_channel_id = nil, public_updates_channel_id = nil,
63
- preferred_locale = nil, features = nil, description = nil, premium_progress_bar_enabled = nil,
64
- safety_alerts_channel_id = nil, audit_reason = nil)
59
+ def modify_guild(guild_id, name: nil, region: nil, verification_level: nil, default_message_notifications: nil,
60
+ explicit_content_filter: nil, afk_channel_id: nil, afk_timeout: nil, icon: nil, owner_id: nil,
61
+ splash: nil, discovery_splash: nil, banner: nil, system_channel_id: nil,
62
+ system_channel_flags: nil, rules_channel_id: nil, public_updates_channel_id: nil,
63
+ preferred_locale: nil, features: nil, description: nil, premium_progress_bar_enabled: nil,
64
+ safety_alerts_channel_id: nil, audit_reason: nil)
65
65
  output = {}
66
66
  output[:name] = name unless name.nil?
67
67
  unless region.nil?
@@ -85,44 +85,44 @@ class DiscordApi
85
85
  output[:preferred_locale] = preferred_locale unless preferred_locale.nil?
86
86
  output[:features] = features unless features.nil?
87
87
  output[:description] = description unless description.nil?
88
- output[:premium_progress_bar_enabled] = !premium_progress_bar_enabled.nil?
88
+ output[:premium_progress_bar_enabled] = premium_progress_bar_enabled unless premium_progress_bar_enabled.nil?
89
89
  output[:safety_alerts_channel_id] = safety_alerts_channel_id unless safety_alerts_channel_id.nil?
90
- url = URI("#{@base_url}/guilds/#{guild_id}")
90
+ url = "#{@base_url}/guilds/#{guild_id}"
91
91
  data = JSON.generate(output)
92
92
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
93
93
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
94
- response = Net::HTTP.patch(url, headers, data)
95
- return response unless response.code != '200'
94
+ response = DiscordApi.patch(url, headers, data)
95
+ return response unless response.status != 200
96
96
 
97
97
  @logger.error("Could not modify guild with Guild ID #{guild_id}. Response: #{response.body}")
98
98
  response
99
99
  end
100
100
 
101
101
  def delete_guild(guild_id)
102
- url = URI("#{@base_url}/guilds/#{guild_id}")
102
+ url = "#{@base_url}/guilds/#{guild_id}"
103
103
  headers = { 'Authorization': @authorization_header }
104
- response = Net::HTTP.delete(url, headers)
105
- return response unless response.code != '204'
104
+ response = DiscordApi.delete(url, headers)
105
+ return response unless response.status != 204
106
106
 
107
107
  @logger.error("Could not delete guild with Guild ID #{guild_id}. Response: #{response.body}")
108
108
  response
109
109
  end
110
110
 
111
111
  def get_guild_channels(guild_id)
112
- url = URI("#{@base_url}/guilds/#{guild_id}/channels")
112
+ url = "#{@base_url}/guilds/#{guild_id}/channels"
113
113
  headers = { 'Authorization': @authorization_header }
114
- response = Net::HTTP.get(url, headers)
115
- return response unless response.code != '200'
114
+ response = DiscordApi.get(url, headers)
115
+ return response unless response.status != 200
116
116
 
117
117
  @logger.error("Could not get guild channels with Guild ID #{guild_id}. Response: #{response.body}")
118
118
  response
119
119
  end
120
120
 
121
- def create_guild_channel(guild_id, name, type = nil, topic = nil, bitrate = nil, user_limit = nil,
122
- rate_limit_per_user = nil, position = nil, permission_overwrites = nil, parent_id = nil,
123
- nsfw = nil, rtc_region = nil, video_quality_mode = nil, default_auto_archive_duration = nil,
124
- default_reaction_emoji = nil, available_tags = nil, default_sort_order = nil,
125
- default_forum_layout = nil, default_thread_rate_limit_per_user = nil, audit_reason = nil)
121
+ def create_guild_channel(guild_id, name, type: nil, topic: nil, bitrate: nil, user_limit: nil,
122
+ rate_limit_per_user: nil, position: nil, permission_overwrites: nil, parent_id: nil,
123
+ nsfw: nil, rtc_region: nil, video_quality_mode: nil, default_auto_archive_duration: nil,
124
+ default_reaction_emoji: nil, available_tags: nil, default_sort_order: nil,
125
+ default_forum_layout: nil, default_thread_rate_limit_per_user: nil, audit_reason: nil)
126
126
  output = {}
127
127
  output[:name] = name
128
128
  output[:type] = type unless type.nil?
@@ -142,41 +142,40 @@ class DiscordApi
142
142
  output[:default_sort_order] = default_sort_order unless default_sort_order.nil?
143
143
  output[:default_forum_layout] = default_forum_layout unless default_forum_layout.nil?
144
144
  unless default_thread_rate_limit_per_user.nil?
145
- output[:default_thread_rate_limit_per_user] =
146
- default_thread_rate_limit_per_user
145
+ output[:default_thread_rate_limit_per_user] = default_thread_rate_limit_per_user
147
146
  end
148
- url = URI("#{@base_url}/guilds/#{guild_id}/channels")
147
+ url = "#{@base_url}/guilds/#{guild_id}/channels"
149
148
  data = JSON.generate(output)
150
149
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
151
150
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
152
- response = Net::HTTP.post(url, data, headers)
153
- return response unless response.code != '200'
151
+ response = DiscordApi.post(url, data, headers)
152
+ return response unless response.status != 200
154
153
 
155
154
  @logger.error("Could not create guild channel in Guild ID #{guild_id}. Response: #{response.body}")
156
155
  response
157
156
  end
158
157
 
159
- def modify_guild_channel_positions(guild_id, channel_id, position = nil, lock_permissions = nil, parent_id = nil)
158
+ def modify_guild_channel_positions(guild_id, channel_id, position: nil, lock_permissions: nil, parent_id: nil)
160
159
  output = {}
161
160
  output[:id] = channel_id
162
161
  output[:position] = position unless position.nil?
163
162
  output[:lock_permissions] = lock_permissions unless lock_permissions.nil?
164
163
  output[:parent_id] = parent_id unless parent_id.nil?
165
- url = URI("#{@base_url}/guilds/#{guild_id}/channels")
164
+ url = "#{@base_url}/guilds/#{guild_id}/channels"
166
165
  data = JSON.generate(output)
167
166
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
168
- response = Net::HTTP.patch(url, headers, data)
169
- return response unless response.code != '204'
167
+ response = DiscordApi.patch(url, headers, data)
168
+ return response unless response.status != 200
170
169
 
171
170
  @logger.error("Could not modify guild channel positions with Guild ID #{guild_id}. Response: #{response.body}")
172
171
  response
173
172
  end
174
173
 
175
174
  def list_active_guild_threads(guild_id)
176
- url = URI("#{@base_url}/guilds/#{guild_id}/threads/active")
175
+ url = "#{@base_url}/guilds/#{guild_id}/threads/active"
177
176
  headers = { 'Authorization': @authorization_header }
178
- response = Net::HTTP.get(url, headers)
179
- return response unless response.code != '200'
177
+ response = DiscordApi.get(url, headers)
178
+ return response unless response.status != 200
180
179
 
181
180
  @logger.error("Could not list active guild threads with Guild ID #{guild_id}. Response: #{response.body}")
182
181
  response
@@ -193,15 +192,15 @@ class DiscordApi
193
192
  response
194
193
  end
195
194
 
196
- def list_guild_members(guild_id, limit = nil, after = nil)
195
+ def list_guild_members(guild_id, limit: nil, after: nil)
197
196
  query_string_hash = {}
198
- query_string_hash[:limit] = limit
199
- query_string_hash[:after] = after
197
+ query_string_hash[:limit] = limit unless limit.nil?
198
+ query_string_hash[:after] = after unless after.nil?
200
199
  query_string = DiscordApi.handle_query_strings(query_string_hash)
201
- url = URI("#{@base_url}/guilds/#{guild_id}/members#{query_string}")
200
+ url = "#{@base_url}/guilds/#{guild_id}/members#{query_string}"
202
201
  headers = { 'Authorization': @authorization_header }
203
- response = Net::HTTP.get(url, headers)
204
- return response unless response.code != '200'
202
+ response = DiscordApi.get(url, headers)
203
+ return response unless response.status != 200
205
204
 
206
205
  @logger.error("Could not list members with Guild ID #{guild_id}. Response: #{response.body}")
207
206
  response
@@ -210,7 +209,7 @@ class DiscordApi
210
209
  def search_guild_members(guild_id, query, limit = nil)
211
210
  query_string_hash = {}
212
211
  query_string_hash[:query] = query
213
- query_string_hash[:limit] = limit
212
+ query_string_hash[:limit] = limit unless limit.nil?
214
213
  query_string = DiscordApi.handle_query_strings(query_string_hash)
215
214
  url = "#{@base_url}/guilds/#{guild_id}/members/search#{query_string}"
216
215
  headers = { 'Authorization': @authorization_header }
@@ -221,20 +220,20 @@ class DiscordApi
221
220
  response
222
221
  end
223
222
 
224
- def add_guild_member(guild_id, user_id, access_token, nick = nil, roles = nil, mute = nil, deaf = nil)
223
+ def add_guild_member(guild_id, user_id, access_token, nick: nil, roles: nil, mute: nil, deaf: nil)
225
224
  output = {}
226
225
  output[:access_token] = access_token
227
226
  output[:nick] = nick unless nick.nil?
228
227
  output[:roles] = roles unless roles.nil?
229
228
  output[:mute] = mute unless mute.nil?
230
229
  output[:deaf] = deaf unless deaf.nil?
231
- url = URI("#{@base_url}/guilds/#{guild_id}/members/#{user_id}")
230
+ url = "#{@base_url}/guilds/#{guild_id}/members/#{user_id}"
232
231
  data = JSON.generate(output)
233
232
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
234
- response = Net::HTTP.put(url, data, headers)
235
- if response.code == '204'
233
+ response = DiscordApi.put(url, data, headers)
234
+ if response.status == 204
236
235
  @logger.warn("User with ID #{user_id} is already a member of the guild with ID #{guild_id}.")
237
- elsif response.code == '201'
236
+ elsif response.status == 201
238
237
  @logger.info("Added user with ID #{user_id} to guild with ID #{guild_id}.")
239
238
  else
240
239
  @logger.error("Could not add user with ID #{user_id} to guild with ID #{guild_id}. Response: #{response.body}")
@@ -242,63 +241,63 @@ class DiscordApi
242
241
  response
243
242
  end
244
243
 
245
- def modify_guild_member(guild_id, user_id, nick = nil, roles = nil, mute = nil, deaf = nil, channel_id = nil,
246
- communication_disabled_until = nil, flags = nil, audit_reason = nil)
244
+ def modify_guild_member(guild_id, user_id, nick: nil, roles: nil, mute: nil, deaf: nil, channel_id: nil,
245
+ communication_disabled_until: nil, flags: nil, audit_reason: nil)
247
246
  output = {}
248
247
  output[:nick] = nick unless nick.nil?
249
248
  output[:roles] = roles unless roles.nil?
250
249
  output[:mute] = mute unless mute.nil?
251
250
  output[:deaf] = deaf unless deaf.nil?
252
251
  output[:channel_id] = channel_id unless channel_id.nil?
253
- output[:communication_disabled_until] = communication_disabled_until
252
+ output[:communication_disabled_until] = communication_disabled_until unless communication_disabled_until.nil?
254
253
  output[:flags] = flags unless flags.nil?
255
- url = URI("#{@base_url}/guilds/#{guild_id}/members/#{user_id}")
254
+ url = "#{@base_url}/guilds/#{guild_id}/members/#{user_id}"
256
255
  data = JSON.generate(output)
257
256
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
258
257
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
259
- response = Net::HTTP.patch(url, data, headers)
260
- return response unless response.code != '200'
258
+ response = DiscordApi.patch(url, data, headers)
259
+ return response unless response.status != 200
261
260
 
262
261
  @logger.error("Could not modify guild member with Guild ID #{guild_id} and User ID #{user_id}. " \
263
262
  "Response: #{response.body}")
264
263
  response
265
264
  end
266
265
 
267
- def modify_current_member(guild_id, nick = nil, audit_reason = nil)
266
+ def modify_current_member(guild_id, nick: nil, audit_reason: nil)
268
267
  output = {}
269
268
  output[:nick] = nick unless nick.nil?
270
- url = URI("#{@base_url}/guilds/#{guild_id}/members/@me")
269
+ url = "#{@base_url}/guilds/#{guild_id}/members/@me"
271
270
  data = JSON.generate(output)
272
271
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
273
272
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
274
- response = Net::HTTP.patch(url, data, headers)
275
- return response unless response.code != '200'
273
+ response = DiscordApi.patch(url, data, headers)
274
+ return response unless response.status != 200
276
275
 
277
276
  @logger.error("Could not modify current member in guild with Guild ID #{guild_id}. Response: #{response.body}")
278
277
  response
279
278
  end
280
279
 
281
- def modify_current_user_nick(guild_id, nick = nil, audit_reason = nil)
280
+ def modify_current_user_nick(guild_id, nick: nil, audit_reason: nil)
282
281
  @logger.warn('The "Modify Current User Nick" endpoint has been deprecated and should not be used!')
283
282
  output = {}
284
283
  output[:nick] = nick unless nick.nil?
285
- url = URI("#{@base_url}/guilds/#{guild_id}/users/@me/nick")
284
+ url = "#{@base_url}/guilds/#{guild_id}/users/@me/nick"
286
285
  data = JSON.generate(output)
287
286
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
288
287
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
289
- response = Net::HTTP.patch(url, data, headers)
290
- return response unless response.code != '200'
288
+ response = DiscordApi.patch(url, data, headers)
289
+ return response unless response.status != 200
291
290
 
292
291
  @logger.error("Could not modify current user nick in guild with ID #{guild_id}. Response: #{response.body}")
293
292
  response
294
293
  end
295
294
 
296
295
  def add_guild_member_role(guild_id, user_id, role_id, audit_reason = nil)
297
- url = URI("#{@base_url}/guilds/#{guild_id}/members/#{user_id}/roles/#{role_id}")
296
+ url = "#{@base_url}/guilds/#{guild_id}/members/#{user_id}/roles/#{role_id}"
298
297
  headers = { 'Authorization': @authorization_header }
299
298
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
300
- response = Net::HTTP.put(url, nil, headers)
301
- return response unless response.code != '204'
299
+ response = DiscordApi.put(url, nil, headers)
300
+ return response unless response.status != 204
302
301
 
303
302
  @logger.error("Could not add role with ID #{role_id}, to user with ID #{user_id} in guild with ID #{guild_id}." \
304
303
  " Response: #{response.body}")
@@ -306,20 +305,18 @@ class DiscordApi
306
305
  end
307
306
 
308
307
  def remove_guild_member_role(guild_id, user_id, role_id, audit_reason = nil)
309
- url = URI("#{@base_url}/guilds/#{guild_id}/members/#{user_id}/roles/#{role_id}")
308
+ url = "#{@base_url}/guilds/#{guild_id}/members/#{user_id}/roles/#{role_id}"
310
309
  headers = { 'Authorization': @authorization_header }
311
310
  headers['x-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
312
- response = Net::HTTP.delete(url, headers)
313
- return response unless response.code != '204'
311
+ response = DiscordApi.delete(url, headers)
312
+ return response unless response.status != 204
314
313
 
315
314
  @logger.error("Could not remove role with ID #{role_id}, from user with ID #{user_id}" \
316
315
  " in guild with ID #{guild_id}. Response: #{response.body}")
317
316
  response
318
317
  end
319
318
 
320
- # For some reason when i use Net::HTTP in this function it doesn't work, but when i use Faraday it does.
321
- # I should probably migrate to Faraday everywhere, but for now just a temporary fix.
322
- def remove_guild_member(guild_id, user_id, audit_reason: nil)
319
+ def remove_guild_member(guild_id, user_id, audit_reason = nil)
323
320
  url = "#{@base_url}/guilds/#{guild_id}/members/#{user_id}"
324
321
  headers = { 'Authorization' => @authorization_header }
325
322
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
@@ -330,7 +327,7 @@ class DiscordApi
330
327
  response
331
328
  end
332
329
 
333
- def get_guild_bans(guild_id, limit = nil, before = nil, after = nil)
330
+ def get_guild_bans(guild_id, limit: nil, before: nil, after: nil)
334
331
  query_string_hash = {}
335
332
  query_string_hash[:limit] = limit unless limit.nil?
336
333
  query_string_hash[:before] = before unless before.nil?
@@ -339,7 +336,7 @@ class DiscordApi
339
336
  url = "#{@base_url}/guilds/#{guild_id}/bans#{query_string}"
340
337
  headers = { 'Authorization' => @authorization_header }
341
338
  response = DiscordApi.get(url, headers)
342
- return response unless response.status != '200'
339
+ return response unless response.status != 200
343
340
 
344
341
  @logger.error("Could not get guild bans with Guild ID #{guild_id}. Response: #{response.body}")
345
342
  response
@@ -367,12 +364,12 @@ class DiscordApi
367
364
  output[:delete_message_days] = delete_message_days
368
365
  end
369
366
  output[:delete_message_seconds] = delete_message_seconds unless delete_message_seconds.nil?
370
- url = URI("#{@base_url}/guilds/#{guild_id}/bans/#{user_id}")
367
+ url = "#{@base_url}/guilds/#{guild_id}/bans/#{user_id}"
371
368
  data = JSON.generate(output)
372
369
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
373
370
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
374
- response = Net::HTTP.put(url, data, headers)
375
- return response unless response.code != '204'
371
+ response = DiscordApi.put(url, data, headers)
372
+ return response unless response.status != 204
376
373
 
377
374
  @logger.error("Could not create guild ban for user with ID #{user_id} in guild with ID #{guild_id}." \
378
375
  " Response: #{response.body}")
@@ -380,29 +377,29 @@ class DiscordApi
380
377
  end
381
378
 
382
379
  def remove_guild_ban(guild_id, user_id, audit_reason = nil)
383
- url = URI("#{@base_url}/guilds/#{guild_id}/bans/#{user_id}")
380
+ url = "#{@base_url}/guilds/#{guild_id}/bans/#{user_id}"
384
381
  headers = { 'Authorization': @authorization_header }
385
382
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
386
- response = Net::HTTP.delete(url, headers)
387
- return response unless response.code != '204'
383
+ response = DiscordApi.delete(url, headers)
384
+ return response unless response.status != 204
388
385
 
389
386
  @logger.error("Could not remove guild ban for user with ID #{user_id} in guild with ID #{guild_id}" \
390
387
  " Response: #{response.body}")
391
388
  response
392
389
  end
393
390
 
394
- def bulk_guild_ban(guild_id, user_ids, delete_message_seconds = nil, audit_reason = nil)
391
+ def bulk_guild_ban(guild_id, user_ids, delete_message_seconds: nil, audit_reason: nil)
395
392
  output = {}
396
393
  output[:user_ids] = user_ids unless user_ids.nil?
397
394
  output[:delete_message_seconds] = delete_message_seconds unless delete_message_seconds.nil?
398
- url = URI("#{@base_url}/guilds/#{guild_id}/bulk-ban")
395
+ url = "#{@base_url}/guilds/#{guild_id}/bulk-ban"
399
396
  data = JSON.generate(output)
400
397
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
401
398
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
402
- response = Net::HTTP.post(url, data, headers)
403
- return response unless response.code != '200'
399
+ response = DiscordApi.post(url, data, headers)
400
+ return response unless response.status != 200
404
401
 
405
- if response.code == '500000'
402
+ if response.status == 500_000
406
403
  @logger.error("No users were banned in bulk ban in guild with ID #{guild_id}. Response: #{response.body}")
407
404
  else
408
405
  @logger.error("Could not bulk ban users in guild with ID #{guild_id}. Response: #{response.body}")
@@ -411,63 +408,67 @@ class DiscordApi
411
408
  end
412
409
 
413
410
  def get_guild_roles(guild_id)
414
- url = URI("#{@base_url}/guilds/#{guild_id}/roles")
411
+ url = "#{@base_url}/guilds/#{guild_id}/roles"
415
412
  headers = { 'Authorization': @authorization_header }
416
- response = Net::HTTP.get(url, headers)
417
- return response unless response.code != '200'
413
+ response = DiscordApi.get(url, headers)
414
+ return response unless response.status != 200
418
415
 
419
416
  @logger.error("Could not get guild roles with Guild ID #{guild_id}. Response: #{response.body}")
420
417
  response
421
418
  end
422
419
 
423
420
  def get_guild_role(guild_id, role_id)
424
- url = URI("#{@base_url}/guilds/#{guild_id}/roles/#{role_id}")
421
+ url = "#{@base_url}/guilds/#{guild_id}/roles/#{role_id}"
425
422
  headers = { 'Authorization': @authorization_header }
426
- response = Net::HTTP.get(url, headers)
427
- return response unless response.code != '200'
423
+ response = DiscordApi.get(url, headers)
424
+ return response unless response.status != 200
428
425
 
429
426
  @logger.error("Could not get role with ID #{role_id} in guild with ID #{guild_id}. Response: #{response.body}")
430
427
  response
431
428
  end
432
429
 
433
- def create_guild_role(guild_id, name = nil, permissions = nil, color = nil, hoist = nil, icon = nil,
434
- unicode_emoji = nil, mentionable = nil, audit_reason = nil)
430
+ def create_guild_role(guild_id, name: nil, permissions: nil, color: nil, colors: nil, hoist: nil, icon: nil,
431
+ unicode_emoji: nil, mentionable: nil, audit_reason: nil)
435
432
  output = {}
436
433
  output[:name] = name unless name.nil?
437
434
  output[:permissions] = permissions unless permissions.nil?
438
- output[:color] = color unless color.nil?
435
+ unless color.nil?
436
+ @logger.warn('The "color" parameter has been deprecated and should not be used!')
437
+ output[:color] = color
438
+ end
439
+ output[:colors] = colors unless colors.nil?
439
440
  output[:hoist] = hoist unless hoist.nil?
440
441
  output[:icon] = icon unless icon.nil?
441
442
  output[:unicode_emoji] = unicode_emoji unless unicode_emoji.nil?
442
443
  output[:mentionable] = mentionable unless mentionable.nil?
443
- url = URI("#{@base_url}/guilds/#{guild_id}/roles")
444
+ url = "#{@base_url}/guilds/#{guild_id}/roles"
444
445
  data = JSON.generate(output)
445
446
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
446
447
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
447
- response = Net::HTTP.post(url, data, headers)
448
- return response unless response.code != '200'
448
+ response = DiscordApi.post(url, data, headers)
449
+ return response unless response.status != 200
449
450
 
450
451
  @logger.error("Could not create guild role in guild with ID #{guild_id}. Response: #{response.body}")
451
452
  response
452
453
  end
453
454
 
454
- def modify_guild_role_positions(guild_id, id, position = nil, audit_reason = nil)
455
+ def modify_guild_role_positions(guild_id, id, position: nil, audit_reason: nil)
455
456
  output = {}
456
457
  output[:id] = id
457
458
  output[:position] = position unless position.nil?
458
- url = URI("#{@base_url}/guilds/#{guild_id}/roles")
459
+ url = "#{@base_url}/guilds/#{guild_id}/roles"
459
460
  data = JSON.generate(output)
460
461
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
461
462
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
462
- response = Net::HTTP.patch(url, data, headers)
463
- return response unless response.code != '200'
463
+ response = DiscordApi.patch(url, data, headers)
464
+ return response unless response.status != 200
464
465
 
465
466
  @logger.error("Could not modify guild role positions in guild with ID #{guild_id}. Response: #{response.body}")
466
467
  response
467
468
  end
468
469
 
469
- def modify_guild_role(guild_id, role_id, name = nil, permissions = nil, color = nil, hoist = nil, icon = nil,
470
- unicode_emoji = nil, mentionable = nil, audit_reason = nil)
470
+ def modify_guild_role(guild_id, role_id, name: nil, permissions: nil, color: nil, hoist: nil, icon: nil,
471
+ unicode_emoji: nil, mentionable: nil, audit_reason: nil)
471
472
  output = {}
472
473
  output[:name] = name unless name.nil?
473
474
  output[:permissions] = permissions unless permissions.nil?
@@ -476,12 +477,12 @@ class DiscordApi
476
477
  output[:icon] = icon unless icon.nil?
477
478
  output[:unicode_emoji] = unicode_emoji unless unicode_emoji.nil?
478
479
  output[:mentionable] = mentionable unless mentionable.nil?
479
- url = URI("#{@base_url}/guilds/#{guild_id}/roles/#{role_id}")
480
+ url = "#{@base_url}/guilds/#{guild_id}/roles/#{role_id}"
480
481
  data = JSON.generate(output)
481
482
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
482
483
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
483
- response = Net::HTTP.patch(url, data, headers)
484
- return response unless response.code != '200'
484
+ response = DiscordApi.patch(url, data, headers)
485
+ return response unless response.status != 200
485
486
 
486
487
  @logger.error("Could not modify guild role with ID #{role_id} in guild with ID #{guild_id}." \
487
488
  " Response: #{response.body}")
@@ -490,45 +491,45 @@ class DiscordApi
490
491
 
491
492
  def modify_guild_mfa_level(guild_id, level, audit_reason = nil)
492
493
  output = {}
493
- output[:level] = level unless level.nil?
494
- url = URI("#{@base_url}/guilds/#{guild_id}/mfa")
494
+ output[:level] = level
495
+ url = "#{@base_url}/guilds/#{guild_id}/mfa"
495
496
  data = JSON.generate(output)
496
497
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
497
498
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
498
- response = Net::HTTP.post(url, data, headers)
499
- return unless response != JSON.generate({ level: level }) # might not be the correct way to check for success
499
+ response = DiscordApi.post(url, data, headers)
500
+ return unless response.status != 200
500
501
 
501
502
  @logger.error("Failed to modify guild MFA level. Response: #{response.body}")
502
503
  response
503
504
  end
504
505
 
505
506
  def delete_guild_role(guild_id, role_id, audit_reason = nil)
506
- url = URI("#{@base_url}/guilds/#{guild_id}/roles/#{role_id}")
507
+ url = "#{@base_url}/guilds/#{guild_id}/roles/#{role_id}"
507
508
  headers = { 'Authorization': @authorization_header }
508
509
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
509
- response = Net::HTTP.delete(url, headers)
510
- return response unless response.code != '204'
510
+ response = DiscordApi.delete(url, headers)
511
+ return response unless response.status != 204
511
512
 
512
513
  @logger.error("Failed to delete guild role. Response: #{response.body}")
513
514
  response
514
515
  end
515
516
 
516
- def get_guild_prune_count(guild_id, days = nil, include_roles = nil)
517
+ def get_guild_prune_count(guild_id, days: nil, include_roles: nil)
517
518
  query_string_hash = {}
518
519
  query_string_hash[:days] = days unless days.nil?
519
520
  query_string_hash[:include_roles] = include_roles unless include_roles.nil?
520
521
  query_string = DiscordApi.handle_query_strings(query_string_hash)
521
- url = URI("#{@base_url}/guilds/#{guild_id}/prune#{query_string}")
522
+ url = "#{@base_url}/guilds/#{guild_id}/prune#{query_string}"
522
523
  headers = { 'Authorization': @authorization_header }
523
- response = Net::HTTP.get(url, headers)
524
- return response unless response.code != '200'
524
+ response = DiscordApi.get(url, headers)
525
+ return response unless response.status != 200
525
526
 
526
527
  @logger.error("Failed to get guild prune count. Response: #{response.body}")
527
528
  response
528
529
  end
529
530
 
530
- def begin_guild_prune(guild_id, days = 7, include_roles = 'none', reason = nil, audit_reason = nil,
531
- compute_prune_count: true)
531
+ def begin_guild_prune(guild_id, days: nil, compute_prune_count: nil, include_roles: nil, reason: nil,
532
+ audit_reason: nil)
532
533
  output = {}
533
534
  output[:days] = days unless days.nil?
534
535
  output[:compute_prune_count] = compute_prune_count unless compute_prune_count.nil?
@@ -537,46 +538,46 @@ class DiscordApi
537
538
  @logger.warn('The "reason" parameter has been deprecated and should not be used!')
538
539
  output[:reason] = reason
539
540
  end
540
- url = URI("#{@base_url}/guilds/#{guild_id}/prune")
541
+ url = "#{@base_url}/guilds/#{guild_id}/prune"
541
542
  data = JSON.generate(output)
542
543
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
543
544
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
544
- response = Net::HTTP.post(url, data, headers)
545
- return response unless response.code != '200'
545
+ response = DiscordApi.post(url, data, headers)
546
+ return response unless response.status != 200
546
547
 
547
548
  @logger.error("Failed to begin guild prune. Response: #{response.body}")
548
549
  response
549
550
  end
550
551
 
551
552
  def get_guild_voice_regions(guild_id)
552
- url = URI("#{@base_url}/guilds/#{guild_id}/regions")
553
+ url = "#{@base_url}/guilds/#{guild_id}/regions"
553
554
  headers = { 'Authorization': @authorization_header }
554
- response = Net::HTTP.get(url, headers)
555
- return response unless response.code != '200'
555
+ response = DiscordApi.get(url, headers)
556
+ return response unless response.status != 200
556
557
 
557
558
  @logger.error("Failed to get guild voice regions. Response: #{response.body}")
558
559
  response
559
560
  end
560
561
 
561
562
  def get_guild_invites(guild_id)
562
- url = URI("#{@base_url}/guilds/#{guild_id}/invites")
563
+ url = "#{@base_url}/guilds/#{guild_id}/invites"
563
564
  headers = { 'Authorization': @authorization_header }
564
- response = Net::HTTP.get(url, headers)
565
- return response unless response.code != '200'
565
+ response = DiscordApi.get(url, headers)
566
+ return response unless response.status != 200
566
567
 
567
568
  @logger.error("Failed to get guild invites. Response: #{response.body}")
568
569
  response
569
570
  end
570
571
 
571
572
  def get_guild_integrations(guild_id)
572
- url = URI("#{@base_url}/guilds/#{guild_id}/integrations")
573
+ url = "#{@base_url}/guilds/#{guild_id}/integrations"
573
574
  headers = { 'Authorization': @authorization_header }
574
- response = Net::HTTP.get(url, headers)
575
- unless response.code != '200'
575
+ response = DiscordApi.get(url, headers)
576
+ if response.status == 200
576
577
  if JSON.parse(response.body).length == 50
577
578
  @logger.warn('The endpoint returned 50 integrations, which means there could be more integrations not shown.')
578
579
  end
579
- response
580
+ return response
580
581
  end
581
582
 
582
583
  @logger.error("Failed to get guild integrations. Response: #{response.body}")
@@ -584,59 +585,58 @@ class DiscordApi
584
585
  end
585
586
 
586
587
  def delete_guild_integration(guild_id, integration_id, audit_reason = nil)
587
- url = URI("#{@base_url}/guilds/#{guild_id}/integrations/#{integration_id}")
588
+ url = "#{@base_url}/guilds/#{guild_id}/integrations/#{integration_id}"
588
589
  headers = { 'Authorization': @authorization_header }
589
590
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
590
- response = Net::HTTP.delete(url, headers)
591
- return response unless response.code != '204'
591
+ response = DiscordApi.delete(url, headers)
592
+ return response unless response.status != 204
592
593
 
593
594
  @logger.error("Failed to delete guild integration. Response: #{response.body}")
594
595
  response
595
596
  end
596
597
 
597
598
  def get_guild_widget_settings(guild_id)
598
- url = URI("#{@base_url}/guilds/#{guild_id}/widget")
599
+ url = "#{@base_url}/guilds/#{guild_id}/widget"
599
600
  headers = { 'Authorization': @authorization_header }
600
- response = Net::HTTP.get(url, headers)
601
- return response unless response.code != '200'
601
+ response = DiscordApi.get(url, headers)
602
+ return response unless response.status != 200
602
603
 
603
604
  @logger.error("Failed to get guild widget settings. Response: #{response.body}")
604
605
  response
605
606
  end
606
607
 
607
- def modify_guild_widget(guild_id, enabled, channel_id = nil, audit_reason = nil)
608
+ def modify_guild_widget(guild_id, enabled, channel_id, audit_reason: nil)
608
609
  output = {}
609
610
  output[:enabled] = enabled
610
- output[:channel_id] = channel_id unless channel_id.nil?
611
- url = URI("#{@base_url}/guilds/#{guild_id}/widget")
611
+ output[:channel_id] = channel_id
612
+ url = "#{@base_url}/guilds/#{guild_id}/widget"
612
613
  data = JSON.generate(output)
613
614
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
614
615
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
615
- response = Net::HTTP.patch(url, data, headers)
616
- return response unless response.code != '200'
616
+ response = DiscordApi.patch(url, data, headers)
617
+ return response unless response.status != 200
617
618
 
618
619
  @logger.error("Failed to modify guild widget. Response: #{response.body}")
619
620
  response
620
621
  end
621
622
 
622
623
  def get_guild_wiget(guild_id)
623
- url = URI("#{@base_url}/guilds/#{guild_id}/widget.json")
624
+ url = "#{@base_url}/guilds/#{guild_id}/widget.json"
624
625
  headers = { 'Authorization': @authorization_header }
625
- response = Net::HTTP.get(url, headers)
626
- return response unless response.code != '200'
626
+ response = DiscordApi.get(url, headers)
627
+ return response unless response.status != 200
627
628
 
628
629
  @logger.error("Failed to get guild widget. Response: #{response.body}")
629
630
  response
630
631
  end
631
632
 
632
633
  def get_guild_vanity_url(guild_id)
633
- url = URI("#{@base_url}/guilds/#{guild_id}/vanity-url")
634
+ url = "#{@base_url}/guilds/#{guild_id}/vanity-url"
634
635
  headers = { 'Authorization': @authorization_header }
635
- response = Net::HTTP.get(url, headers)
636
- return response unless response.code != '200'
636
+ response = DiscordApi.get(url, headers)
637
+ return response unless response.status != 200
637
638
 
638
- @logger.error('Failed to get guild vanity URL, perhaps you do not have the MANAGE_GUILD permission. ' \
639
- "If you only want to get the Vanity URL, use the get_guild endpoint. Response: #{response.body}")
639
+ @logger.error("Failed to get guild vanity URL. Response: #{response.body}")
640
640
  response
641
641
  end
642
642
 
@@ -649,93 +649,94 @@ class DiscordApi
649
649
  nil
650
650
  elsif true_keys.size == 1
651
651
  style = true_keys.first.to_s
652
+ else
653
+ style = nil
652
654
  end
653
655
 
654
656
  query_string_hash = {}
655
657
  query_string_hash[:style] = style unless style.nil?
656
658
  query_string = DiscordApi.handle_query_strings(query_string_hash)
657
659
 
658
- url = URI("#{@base_url}/guilds/#{guild_id}/widget.png#{query_string}")
659
- response = Net::HTTP.get(url)
660
- return unless response.code != '200'
660
+ url = "#{@base_url}/guilds/#{guild_id}/widget.png#{query_string}"
661
+ response = DiscordApi.get(url)
662
+ return unless response.status != 200
661
663
 
662
664
  @logger.error("Failed to get guild widget image. Response: #{response.body}")
663
665
  response
664
666
  end
665
667
 
666
668
  def get_guild_welcome_screen(guild_id)
667
- url = URI("#{@base_url}/guilds/#{guild_id}/welcome-screen")
669
+ url = "#{@base_url}/guilds/#{guild_id}/welcome-screen"
668
670
  headers = { 'Authorization': @authorization_header }
669
- response = Net::HTTP.get(url, headers)
670
- return response unless response.code != '200'
671
+ response = DiscordApi.get(url, headers)
672
+ return response unless response.status != 200
671
673
 
672
674
  @logger.error("Failed to get guild welcome screen. Response: #{response.body}")
673
675
  response
674
676
  end
675
677
 
676
- def modify_guild_welcome_screen(guild_id, enabled = nil, welcome_channels = nil, description = nil,
677
- audit_reason = nil)
678
+ def modify_guild_welcome_screen(guild_id, enabled: nil, welcome_channels: nil, description: nil,
679
+ audit_reason: nil)
678
680
  output = {}
679
681
  output[:enabled] = enabled unless enabled.nil?
680
682
  output[:welcome_channels] = welcome_channels unless welcome_channels.nil?
681
683
  output[:description] = description unless description.nil?
682
- url = URI("#{@base_url}/guilds/#{guild_id}/welcome-screen")
684
+ url = "#{@base_url}/guilds/#{guild_id}/welcome-screen"
683
685
  data = JSON.generate(output)
684
686
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
685
687
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
686
- response = Net::HTTP.patch(url, data, headers)
687
- return response unless response.code != '200'
688
+ response = DiscordApi.patch(url, data, headers)
689
+ return response unless response.status != 200
688
690
 
689
691
  @logger.error("Failed to modify guild welcome screen. Response: #{response.body}")
690
692
  response
691
693
  end
692
694
 
693
695
  def get_guild_onboarding(guild_id)
694
- url = URI("#{@base_url}/guilds/#{guild_id}/onboarding")
696
+ url = "#{@base_url}/guilds/#{guild_id}/onboarding"
695
697
  headers = { 'Authorization': @authorization_header }
696
- response = Net::HTTP.get(url, headers)
697
- return response unless response.code != '200'
698
+ response = DiscordApi.get(url, headers)
699
+ return response unless response.status != 200
698
700
 
699
701
  @logger.error("Failed to get guild onboarding. Response: #{response.body}")
700
702
  response
701
703
  end
702
704
 
703
- def modify_guild_onboarding(guild_id, prompts, default_channel_ids, enabled, mode, audit_reason = nil)
705
+ def modify_guild_onboarding(guild_id, prompts: nil, default_channel_ids: nil, enabled: nil, mode: nil,
706
+ audit_reason: nil)
704
707
  output = {}
705
- output[:prompts] = prompts
706
- output[:default_channel_ids] = default_channel_ids
707
- output[:enabled] = enabled
708
- output[:mode] = mode
709
- url = URI("#{@base_url}/guilds/#{guild_id}/onboarding")
708
+ output[:prompts] = prompts unless prompts.nil?
709
+ output[:default_channel_ids] = default_channel_ids unless default_channel_ids.nil?
710
+ output[:enabled] = enabled unless enabled.nil?
711
+ output[:mode] = mode unless mode.nil?
712
+ url = "#{@base_url}/guilds/#{guild_id}/onboarding"
710
713
  data = JSON.generate(output)
711
714
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
712
715
  headers['X-Audit-Log-Reason'] = audit_reason unless audit_reason.nil?
713
- response = Net::HTTP.put(url, data, headers)
714
- return response unless response.code != '200'
716
+ response = DiscordApi.put(url, data, headers)
717
+ return response unless response.status != 200
715
718
 
716
719
  @logger.error("Failed to modify guild onboarding. Response: #{response.body}")
717
720
  response
718
721
  end
719
722
 
720
- def modify_guild_incident_actions(guild_id, invites_disabled_until = nil, dms_disabled_until = nil)
723
+ def modify_guild_incident_actions(guild_id, invites_disabled_until: nil, dms_disabled_until: nil)
721
724
  output = {}
722
- # if only discord wouldn't of have required to set a variable to null for some functionality
723
725
  if invites_disabled_until == false
724
726
  output[:invites_disabled_until] = nil
725
- elsif !invites_disabled_until.nil? && invites_disabled_until != false
727
+ elsif !invites_disabled_until.nil?
726
728
  output[:invites_disabled_until] = invites_disabled_until
727
729
  end
728
730
  if dms_disabled_until == false
729
731
  output[:dms_disabled_until] = nil
730
- elsif !dms_disabled_until.nil? && dms_disabled_until != false
732
+ elsif !dms_disabled_until.nil?
731
733
  output[:dms_disabled_until] = dms_disabled_until
732
734
  end
733
- url = URI("#{@base_url}/guilds/#{guild_id}/incident-actions")
735
+ url = "#{@base_url}/guilds/#{guild_id}/incident-actions"
734
736
  data = JSON.generate(output)
735
737
  headers = { 'Authorization': @authorization_header, 'Content-Type': 'application/json' }
736
- response = Net::HTTP.put(url, data, headers)
737
- # same problem with as above
738
- return response unless response.code != '200'
738
+ response = DiscordApi.put(url, data, headers)
739
+ return response unless response.status != 200
739
740
 
740
741
  @logger.error("Failed to modify guild incident actions. Response: #{response.body}")
741
742
  response