discordrb 3.5.0 → 3.6.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.
- checksums.yaml +4 -4
- data/.devcontainer/Dockerfile +13 -0
- data/.devcontainer/devcontainer.json +29 -0
- data/.devcontainer/postcreate.sh +4 -0
- data/.github/workflows/ci.yml +78 -0
- data/.github/workflows/codeql.yml +3 -3
- data/.github/workflows/deploy.yml +54 -0
- data/.github/workflows/release.yml +51 -0
- data/.rubocop.yml +52 -2
- data/CHANGELOG.md +95 -0
- data/README.md +5 -5
- data/discordrb-webhooks.gemspec +1 -1
- data/discordrb.gemspec +16 -11
- data/lib/discordrb/api/application.rb +84 -8
- data/lib/discordrb/api/channel.rb +51 -13
- data/lib/discordrb/api/interaction.rb +15 -6
- data/lib/discordrb/api/invite.rb +1 -1
- data/lib/discordrb/api/server.rb +96 -60
- data/lib/discordrb/api/user.rb +12 -2
- data/lib/discordrb/api/webhook.rb +20 -5
- data/lib/discordrb/api.rb +16 -20
- data/lib/discordrb/bot.rb +139 -53
- data/lib/discordrb/cache.rb +15 -1
- data/lib/discordrb/commands/command_bot.rb +7 -17
- data/lib/discordrb/commands/parser.rb +7 -7
- data/lib/discordrb/container.rb +46 -0
- data/lib/discordrb/data/activity.rb +1 -1
- data/lib/discordrb/data/application.rb +1 -0
- data/lib/discordrb/data/attachment.rb +23 -3
- data/lib/discordrb/data/avatar_decoration.rb +26 -0
- data/lib/discordrb/data/call.rb +22 -0
- data/lib/discordrb/data/channel.rb +140 -15
- data/lib/discordrb/data/collectibles.rb +45 -0
- data/lib/discordrb/data/embed.rb +10 -3
- data/lib/discordrb/data/emoji.rb +20 -1
- data/lib/discordrb/data/integration.rb +3 -0
- data/lib/discordrb/data/interaction.rb +164 -27
- data/lib/discordrb/data/member.rb +145 -28
- data/lib/discordrb/data/message.rb +198 -51
- data/lib/discordrb/data/overwrite.rb +2 -0
- data/lib/discordrb/data/primary_server.rb +60 -0
- data/lib/discordrb/data/profile.rb +2 -7
- data/lib/discordrb/data/reaction.rb +2 -1
- data/lib/discordrb/data/recipient.rb +1 -1
- data/lib/discordrb/data/role.rb +151 -22
- data/lib/discordrb/data/server.rb +115 -41
- data/lib/discordrb/data/server_preview.rb +68 -0
- data/lib/discordrb/data/snapshot.rb +110 -0
- data/lib/discordrb/data/user.rb +68 -8
- data/lib/discordrb/data/voice_region.rb +1 -0
- data/lib/discordrb/data/webhook.rb +2 -5
- data/lib/discordrb/data.rb +6 -0
- data/lib/discordrb/errors.rb +5 -2
- data/lib/discordrb/events/await.rb +1 -1
- data/lib/discordrb/events/channels.rb +37 -0
- data/lib/discordrb/events/generic.rb +2 -0
- data/lib/discordrb/events/guilds.rb +6 -1
- data/lib/discordrb/events/interactions.rb +135 -42
- data/lib/discordrb/events/invites.rb +2 -0
- data/lib/discordrb/events/members.rb +19 -2
- data/lib/discordrb/events/message.rb +39 -8
- data/lib/discordrb/events/presence.rb +2 -0
- data/lib/discordrb/events/raw.rb +1 -0
- data/lib/discordrb/events/reactions.rb +2 -0
- data/lib/discordrb/events/roles.rb +2 -0
- data/lib/discordrb/events/threads.rb +10 -6
- data/lib/discordrb/events/typing.rb +1 -0
- data/lib/discordrb/events/voice_server_update.rb +1 -0
- data/lib/discordrb/events/voice_state_update.rb +1 -0
- data/lib/discordrb/events/webhooks.rb +1 -0
- data/lib/discordrb/gateway.rb +29 -13
- data/lib/discordrb/paginator.rb +3 -3
- data/lib/discordrb/permissions.rb +54 -43
- data/lib/discordrb/version.rb +1 -1
- data/lib/discordrb/websocket.rb +0 -10
- data/lib/discordrb.rb +17 -1
- metadata +53 -28
- data/.circleci/config.yml +0 -152
data/lib/discordrb/gateway.rb
CHANGED
|
@@ -90,14 +90,22 @@ module Discordrb
|
|
|
90
90
|
# This class stores the data of an active gateway session. Note that this is different from a websocket connection -
|
|
91
91
|
# there may be multiple sessions per connection or one session may persist over multiple connections.
|
|
92
92
|
class Session
|
|
93
|
+
# @return [String] Used to uniquely identify this session. Mostly used when resuming connections.
|
|
93
94
|
attr_reader :session_id
|
|
95
|
+
|
|
96
|
+
# @return [Integer] Incrementing integer used to determine the most recent event reccived from Discord.
|
|
94
97
|
attr_accessor :sequence
|
|
95
98
|
|
|
96
|
-
|
|
99
|
+
# @return [String] Gateway URL used to reconnect to the gateway node that Discord wants this session to use.
|
|
100
|
+
attr_reader :resume_gateway_url
|
|
101
|
+
|
|
102
|
+
# @!visibility private
|
|
103
|
+
def initialize(session_id, resume_gateway_url)
|
|
97
104
|
@session_id = session_id
|
|
98
105
|
@sequence = 0
|
|
99
106
|
@suspended = false
|
|
100
107
|
@invalid = false
|
|
108
|
+
@resume_gateway_url = resume_gateway_url
|
|
101
109
|
end
|
|
102
110
|
|
|
103
111
|
# Flags this session as suspended, so we know not to try and send heartbeats, etc. to the gateway until we've reconnected
|
|
@@ -117,6 +125,7 @@ module Discordrb
|
|
|
117
125
|
# Flags this session as being invalid
|
|
118
126
|
def invalidate
|
|
119
127
|
@invalid = true
|
|
128
|
+
@resume_gateway_url = nil
|
|
120
129
|
end
|
|
121
130
|
|
|
122
131
|
def invalid?
|
|
@@ -136,6 +145,13 @@ module Discordrb
|
|
|
136
145
|
# The version of the gateway that's supposed to be used.
|
|
137
146
|
GATEWAY_VERSION = 9
|
|
138
147
|
|
|
148
|
+
# Close codes that are unrecoverable, after which we should not try to reconnect.
|
|
149
|
+
# - 4003: Not authenticated. How did this happen?
|
|
150
|
+
# - 4004: Authentication failed. Token was wrong, nothing we can do.
|
|
151
|
+
# - 4011: Sharding required. Currently requires developer intervention.
|
|
152
|
+
# - 4014: Use of disabled privileged intents.
|
|
153
|
+
FATAL_CLOSE_CODES = [4003, 4004, 4011, 4014].freeze
|
|
154
|
+
|
|
139
155
|
# Heartbeat ACKs are Discord's way of verifying on the client side whether the connection is still alive. If this is
|
|
140
156
|
# set to true (default value) the gateway client will use that functionality to detect zombie connections and
|
|
141
157
|
# reconnect in such a case; however it may lead to instability if there's some problem with the ACKs. If this occurs
|
|
@@ -452,8 +468,13 @@ module Discordrb
|
|
|
452
468
|
# suspended (e.g. after op7)
|
|
453
469
|
if (@session && !@session.suspended?) || !@session
|
|
454
470
|
sleep @heartbeat_interval
|
|
455
|
-
|
|
456
|
-
|
|
471
|
+
# Check if we're connected here, since we could possibly be waiting for a reconnect to occur.
|
|
472
|
+
if @handshaked && !@closed
|
|
473
|
+
@bot.raise_heartbeat_event
|
|
474
|
+
heartbeat
|
|
475
|
+
else
|
|
476
|
+
LOGGER.debug('Tried to send a heartbeat without being connected! Ignoring, we should be fine.')
|
|
477
|
+
end
|
|
457
478
|
else
|
|
458
479
|
sleep 1
|
|
459
480
|
end
|
|
@@ -538,7 +559,7 @@ module Discordrb
|
|
|
538
559
|
end
|
|
539
560
|
|
|
540
561
|
def process_gateway
|
|
541
|
-
raw_url = find_gateway
|
|
562
|
+
raw_url = @session&.resume_gateway_url || find_gateway
|
|
542
563
|
|
|
543
564
|
# Append a slash in case it's not there (I'm not sure how well WSCS handles it otherwise)
|
|
544
565
|
raw_url += '/' unless raw_url.end_with? '/'
|
|
@@ -656,7 +677,9 @@ module Discordrb
|
|
|
656
677
|
LOGGER.log_exception(e)
|
|
657
678
|
end
|
|
658
679
|
|
|
680
|
+
# rubocop:disable Lint/UselessConstantScoping
|
|
659
681
|
ZLIB_SUFFIX = "\x00\x00\xFF\xFF".b.freeze
|
|
682
|
+
# rubocop:enable Lint/UselessConstantScoping
|
|
660
683
|
|
|
661
684
|
def handle_message(msg)
|
|
662
685
|
case @compress_mode
|
|
@@ -716,9 +739,9 @@ module Discordrb
|
|
|
716
739
|
when :READY
|
|
717
740
|
LOGGER.info("Discord using gateway protocol version: #{data['v']}, requested: #{GATEWAY_VERSION}")
|
|
718
741
|
|
|
719
|
-
@session = Session.new(data['session_id'])
|
|
742
|
+
@session = Session.new(data['session_id'], data['resume_gateway_url'])
|
|
720
743
|
@session.sequence = 0
|
|
721
|
-
@bot.__send__(:notify_ready) if @intents &&
|
|
744
|
+
@bot.__send__(:notify_ready) if @intents && @intents.nobits?(INTENTS[:servers])
|
|
722
745
|
when :RESUMED
|
|
723
746
|
# The RESUMED event is received after a successful op 6 (resume). It does nothing except tell the bot the
|
|
724
747
|
# connection is initiated (like READY would). Starting with v5, it doesn't set a new heartbeat interval anymore
|
|
@@ -789,13 +812,6 @@ module Discordrb
|
|
|
789
812
|
handle_close(e)
|
|
790
813
|
end
|
|
791
814
|
|
|
792
|
-
# Close codes that are unrecoverable, after which we should not try to reconnect.
|
|
793
|
-
# - 4003: Not authenticated. How did this happen?
|
|
794
|
-
# - 4004: Authentication failed. Token was wrong, nothing we can do.
|
|
795
|
-
# - 4011: Sharding required. Currently requires developer intervention.
|
|
796
|
-
# - 4014: Use of disabled privileged intents.
|
|
797
|
-
FATAL_CLOSE_CODES = [4003, 4004, 4011, 4014].freeze
|
|
798
|
-
|
|
799
815
|
def handle_close(e)
|
|
800
816
|
@bot.__send__(:raise_event, Events::DisconnectEvent.new(@bot))
|
|
801
817
|
|
data/lib/discordrb/paginator.rb
CHANGED
|
@@ -24,7 +24,7 @@ module Discordrb
|
|
|
24
24
|
# no more results or the configured `limit` is reached.
|
|
25
25
|
def each
|
|
26
26
|
last_page = nil
|
|
27
|
-
until
|
|
27
|
+
until limit_exceeded?
|
|
28
28
|
page = @block.call(last_page)
|
|
29
29
|
return if page.empty?
|
|
30
30
|
|
|
@@ -38,7 +38,7 @@ module Discordrb
|
|
|
38
38
|
enumerator.each do |item|
|
|
39
39
|
yield item
|
|
40
40
|
@count += 1
|
|
41
|
-
break if
|
|
41
|
+
break if limit_exceeded?
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
last_page = page
|
|
@@ -48,7 +48,7 @@ module Discordrb
|
|
|
48
48
|
private
|
|
49
49
|
|
|
50
50
|
# Whether the paginator limit has been exceeded
|
|
51
|
-
def
|
|
51
|
+
def limit_exceeded?
|
|
52
52
|
return false if @limit.nil?
|
|
53
53
|
|
|
54
54
|
@count >= @limit
|
|
@@ -6,47 +6,56 @@ module Discordrb
|
|
|
6
6
|
# This hash maps bit positions to logical permissions.
|
|
7
7
|
FLAGS = {
|
|
8
8
|
# Bit => Permission # Value
|
|
9
|
-
0 => :create_instant_invite,
|
|
10
|
-
1 => :kick_members,
|
|
11
|
-
2 => :ban_members,
|
|
12
|
-
3 => :administrator,
|
|
13
|
-
4 => :manage_channels,
|
|
14
|
-
5 => :manage_server,
|
|
15
|
-
6 => :add_reactions,
|
|
16
|
-
7 => :view_audit_log,
|
|
17
|
-
8 => :priority_speaker,
|
|
18
|
-
9 => :stream,
|
|
19
|
-
10 => :read_messages,
|
|
20
|
-
11 => :send_messages,
|
|
21
|
-
12 => :send_tts_messages,
|
|
22
|
-
13 => :manage_messages,
|
|
23
|
-
14 => :embed_links,
|
|
24
|
-
15 => :attach_files,
|
|
25
|
-
16 => :read_message_history,
|
|
26
|
-
17 => :mention_everyone,
|
|
27
|
-
18 => :use_external_emoji,
|
|
28
|
-
19 => :view_server_insights,
|
|
29
|
-
20 => :connect,
|
|
30
|
-
21 => :speak,
|
|
31
|
-
22 => :mute_members,
|
|
32
|
-
23 => :deafen_members,
|
|
33
|
-
24 => :move_members,
|
|
34
|
-
25 => :use_voice_activity,
|
|
35
|
-
26 => :change_nickname,
|
|
36
|
-
27 => :manage_nicknames,
|
|
37
|
-
28 => :manage_roles,
|
|
38
|
-
29 => :manage_webhooks,
|
|
39
|
-
30 => :manage_emojis,
|
|
40
|
-
31 => :use_slash_commands,
|
|
41
|
-
32 => :request_to_speak,
|
|
42
|
-
33 => :manage_events,
|
|
43
|
-
34 => :manage_threads,
|
|
44
|
-
35 => :use_public_threads,
|
|
45
|
-
36 => :use_private_threads,
|
|
46
|
-
37 => :use_external_stickers,
|
|
47
|
-
38 => :send_messages_in_threads,
|
|
48
|
-
39 => :use_embedded_activities,
|
|
49
|
-
40 => :moderate_members
|
|
9
|
+
0 => :create_instant_invite, # 1
|
|
10
|
+
1 => :kick_members, # 2
|
|
11
|
+
2 => :ban_members, # 4
|
|
12
|
+
3 => :administrator, # 8
|
|
13
|
+
4 => :manage_channels, # 16
|
|
14
|
+
5 => :manage_server, # 32
|
|
15
|
+
6 => :add_reactions, # 64
|
|
16
|
+
7 => :view_audit_log, # 128
|
|
17
|
+
8 => :priority_speaker, # 256
|
|
18
|
+
9 => :stream, # 512
|
|
19
|
+
10 => :read_messages, # 1024
|
|
20
|
+
11 => :send_messages, # 2048
|
|
21
|
+
12 => :send_tts_messages, # 4096
|
|
22
|
+
13 => :manage_messages, # 8192
|
|
23
|
+
14 => :embed_links, # 16384
|
|
24
|
+
15 => :attach_files, # 32768
|
|
25
|
+
16 => :read_message_history, # 65536
|
|
26
|
+
17 => :mention_everyone, # 131072
|
|
27
|
+
18 => :use_external_emoji, # 262144
|
|
28
|
+
19 => :view_server_insights, # 524288
|
|
29
|
+
20 => :connect, # 1048576
|
|
30
|
+
21 => :speak, # 2097152
|
|
31
|
+
22 => :mute_members, # 4194304
|
|
32
|
+
23 => :deafen_members, # 8388608
|
|
33
|
+
24 => :move_members, # 16777216
|
|
34
|
+
25 => :use_voice_activity, # 33554432
|
|
35
|
+
26 => :change_nickname, # 67108864
|
|
36
|
+
27 => :manage_nicknames, # 134217728
|
|
37
|
+
28 => :manage_roles, # 268435456, also Manage Permissions
|
|
38
|
+
29 => :manage_webhooks, # 536870912
|
|
39
|
+
30 => :manage_emojis, # 1073741824, also Manage Stickers
|
|
40
|
+
31 => :use_slash_commands, # 2147483648
|
|
41
|
+
32 => :request_to_speak, # 4294967296
|
|
42
|
+
33 => :manage_events, # 8589934592
|
|
43
|
+
34 => :manage_threads, # 17179869184
|
|
44
|
+
35 => :use_public_threads, # 34359738368
|
|
45
|
+
36 => :use_private_threads, # 68719476736
|
|
46
|
+
37 => :use_external_stickers, # 137438953472
|
|
47
|
+
38 => :send_messages_in_threads, # 274877906944
|
|
48
|
+
39 => :use_embedded_activities, # 549755813888
|
|
49
|
+
40 => :moderate_members, # 1099511627776
|
|
50
|
+
41 => :view_monetization_analytics, # 2199023255552
|
|
51
|
+
42 => :use_soundboard, # 4398046511104
|
|
52
|
+
43 => :create_server_expressions, # 8796093022208
|
|
53
|
+
44 => :create_scheduled_events, # 17592186044416
|
|
54
|
+
45 => :use_external_sounds, # 35184372088832
|
|
55
|
+
46 => :send_voice_messages, # 70368744177664
|
|
56
|
+
49 => :send_polls, # 562949953421312
|
|
57
|
+
50 => :use_external_apps, # 1125899906842624
|
|
58
|
+
51 => :pin_messages # 2251799813685248
|
|
50
59
|
}.freeze
|
|
51
60
|
|
|
52
61
|
FLAGS.each do |position, flag|
|
|
@@ -80,7 +89,7 @@ module Discordrb
|
|
|
80
89
|
# Initialize the instance variables based on the bitset.
|
|
81
90
|
def init_vars
|
|
82
91
|
FLAGS.each do |position, flag|
|
|
83
|
-
flag_set = (
|
|
92
|
+
flag_set = (@bits >> position).allbits?(0x1)
|
|
84
93
|
instance_variable_set "@#{flag}", flag_set
|
|
85
94
|
end
|
|
86
95
|
end
|
|
@@ -131,12 +140,14 @@ module Discordrb
|
|
|
131
140
|
# permissions.defined_permissions #=> [:create_instant_invite, :administrator]
|
|
132
141
|
# @return [Array<Symbol>] the permissions
|
|
133
142
|
def defined_permissions
|
|
134
|
-
FLAGS.filter_map { |value, name|
|
|
143
|
+
FLAGS.filter_map { |value, name| @bits.anybits?((1 << value)) ? name : nil }
|
|
135
144
|
end
|
|
136
145
|
|
|
137
146
|
# Comparison based on permission bits
|
|
138
147
|
def ==(other)
|
|
148
|
+
# rubocop:disable Lint/Void
|
|
139
149
|
false unless other.is_a? Discordrb::Permissions
|
|
150
|
+
# rubocop:enable Lint/Void
|
|
140
151
|
bits == other.bits
|
|
141
152
|
end
|
|
142
153
|
end
|
data/lib/discordrb/version.rb
CHANGED
data/lib/discordrb/websocket.rb
CHANGED
|
@@ -2,16 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require 'websocket-client-simple'
|
|
4
4
|
|
|
5
|
-
# The WSCS module which we're hooking
|
|
6
|
-
# @see Websocket::Client::Simple::Client
|
|
7
|
-
module WebSocket::Client::Simple
|
|
8
|
-
# Patch to the WSCS class to allow reading the internal thread
|
|
9
|
-
class Client
|
|
10
|
-
# @return [Thread] the internal thread this client is using for the event loop.
|
|
11
|
-
attr_reader :thread
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
5
|
module Discordrb
|
|
16
6
|
# Utility wrapper class that abstracts an instance of WSCS. Useful should we decide that WSCS isn't good either -
|
|
17
7
|
# in that case we can just switch to something else
|
data/lib/discordrb.rb
CHANGED
|
@@ -46,10 +46,13 @@ module Discordrb
|
|
|
46
46
|
NO_INTENTS = 0
|
|
47
47
|
|
|
48
48
|
# Compares two objects based on IDs - either the objects' IDs are equal, or one object is equal to the other's ID.
|
|
49
|
-
def self.id_compare(one_id, other)
|
|
49
|
+
def self.id_compare?(one_id, other)
|
|
50
50
|
other.respond_to?(:resolve_id) ? (one_id.resolve_id == other.resolve_id) : (one_id == other)
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
+
# @deprecated Please use {Discordrb.id_compare?}
|
|
54
|
+
singleton_class.alias_method :id_compare, :id_compare?
|
|
55
|
+
|
|
53
56
|
# The maximum length a Discord message can have
|
|
54
57
|
CHARACTER_LIMIT = 2000
|
|
55
58
|
|
|
@@ -117,6 +120,19 @@ module Discordrb
|
|
|
117
120
|
"<t:#{time.to_i}:#{TIMESTAMP_STYLES[style] || style}>"
|
|
118
121
|
end
|
|
119
122
|
end
|
|
123
|
+
|
|
124
|
+
# A utility method to base64 encode a file like object using its mime type.
|
|
125
|
+
# @param file [File, #read] A file like object that responds to #read.
|
|
126
|
+
# @return [String] The file object encoded as base64 image data.
|
|
127
|
+
def self.encode64(file)
|
|
128
|
+
path_method = %i[original_filename path local_path].find { |method| file.respond_to?(method) }
|
|
129
|
+
|
|
130
|
+
raise ArgumentError, 'File object must respond to original_filename, path, or local path.' unless path_method
|
|
131
|
+
raise ArgumentError, 'File object must respond to read.' unless file.respond_to?(:read)
|
|
132
|
+
|
|
133
|
+
mime_type = MIME::Types.type_for(file.__send__(path_method)).first&.to_s || 'image/jpeg'
|
|
134
|
+
"data:#{mime_type};base64,#{Base64.encode64(file.read).strip}"
|
|
135
|
+
end
|
|
120
136
|
end
|
|
121
137
|
|
|
122
138
|
# In discordrb, Integer and {String} are monkey-patched to allow for easy resolution of IDs
|
metadata
CHANGED
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: discordrb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.6.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- meew0
|
|
8
8
|
- swarley
|
|
9
|
-
autorequire:
|
|
10
9
|
bindir: exe
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: base64
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 0.2.0
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 0.2.0
|
|
14
27
|
- !ruby/object:Gem::Dependency
|
|
15
28
|
name: ffi
|
|
16
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -59,28 +72,28 @@ dependencies:
|
|
|
59
72
|
requirements:
|
|
60
73
|
- - ">="
|
|
61
74
|
- !ruby/object:Gem::Version
|
|
62
|
-
version: 0.
|
|
75
|
+
version: 0.9.0
|
|
63
76
|
type: :runtime
|
|
64
77
|
prerelease: false
|
|
65
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
66
79
|
requirements:
|
|
67
80
|
- - ">="
|
|
68
81
|
- !ruby/object:Gem::Version
|
|
69
|
-
version: 0.
|
|
82
|
+
version: 0.9.0
|
|
70
83
|
- !ruby/object:Gem::Dependency
|
|
71
84
|
name: discordrb-webhooks
|
|
72
85
|
requirement: !ruby/object:Gem::Requirement
|
|
73
86
|
requirements:
|
|
74
87
|
- - "~>"
|
|
75
88
|
- !ruby/object:Gem::Version
|
|
76
|
-
version: 3.
|
|
89
|
+
version: 3.6.1
|
|
77
90
|
type: :runtime
|
|
78
91
|
prerelease: false
|
|
79
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
80
93
|
requirements:
|
|
81
94
|
- - "~>"
|
|
82
95
|
- !ruby/object:Gem::Version
|
|
83
|
-
version: 3.
|
|
96
|
+
version: 3.6.1
|
|
84
97
|
- !ruby/object:Gem::Dependency
|
|
85
98
|
name: bundler
|
|
86
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -121,42 +134,42 @@ dependencies:
|
|
|
121
134
|
requirements:
|
|
122
135
|
- - "~>"
|
|
123
136
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: 3.5
|
|
137
|
+
version: '3.5'
|
|
125
138
|
type: :development
|
|
126
139
|
prerelease: false
|
|
127
140
|
version_requirements: !ruby/object:Gem::Requirement
|
|
128
141
|
requirements:
|
|
129
142
|
- - "~>"
|
|
130
143
|
- !ruby/object:Gem::Version
|
|
131
|
-
version: 3.5
|
|
144
|
+
version: '3.5'
|
|
132
145
|
- !ruby/object:Gem::Dependency
|
|
133
146
|
name: rspec
|
|
134
147
|
requirement: !ruby/object:Gem::Requirement
|
|
135
148
|
requirements:
|
|
136
149
|
- - "~>"
|
|
137
150
|
- !ruby/object:Gem::Version
|
|
138
|
-
version: 3.
|
|
151
|
+
version: '3.0'
|
|
139
152
|
type: :development
|
|
140
153
|
prerelease: false
|
|
141
154
|
version_requirements: !ruby/object:Gem::Requirement
|
|
142
155
|
requirements:
|
|
143
156
|
- - "~>"
|
|
144
157
|
- !ruby/object:Gem::Version
|
|
145
|
-
version: 3.
|
|
158
|
+
version: '3.0'
|
|
146
159
|
- !ruby/object:Gem::Dependency
|
|
147
160
|
name: rspec_junit_formatter
|
|
148
161
|
requirement: !ruby/object:Gem::Requirement
|
|
149
162
|
requirements:
|
|
150
163
|
- - "~>"
|
|
151
164
|
- !ruby/object:Gem::Version
|
|
152
|
-
version: 0.
|
|
165
|
+
version: 0.6.0
|
|
153
166
|
type: :development
|
|
154
167
|
prerelease: false
|
|
155
168
|
version_requirements: !ruby/object:Gem::Requirement
|
|
156
169
|
requirements:
|
|
157
170
|
- - "~>"
|
|
158
171
|
- !ruby/object:Gem::Version
|
|
159
|
-
version: 0.
|
|
172
|
+
version: 0.6.0
|
|
160
173
|
- !ruby/object:Gem::Dependency
|
|
161
174
|
name: rspec-prof
|
|
162
175
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -177,70 +190,70 @@ dependencies:
|
|
|
177
190
|
requirements:
|
|
178
191
|
- - "~>"
|
|
179
192
|
- !ruby/object:Gem::Version
|
|
180
|
-
version: 1.
|
|
193
|
+
version: 1.77.0
|
|
181
194
|
type: :development
|
|
182
195
|
prerelease: false
|
|
183
196
|
version_requirements: !ruby/object:Gem::Requirement
|
|
184
197
|
requirements:
|
|
185
198
|
- - "~>"
|
|
186
199
|
- !ruby/object:Gem::Version
|
|
187
|
-
version: 1.
|
|
200
|
+
version: 1.77.0
|
|
188
201
|
- !ruby/object:Gem::Dependency
|
|
189
202
|
name: rubocop-performance
|
|
190
203
|
requirement: !ruby/object:Gem::Requirement
|
|
191
204
|
requirements:
|
|
192
205
|
- - "~>"
|
|
193
206
|
- !ruby/object:Gem::Version
|
|
194
|
-
version:
|
|
207
|
+
version: 1.25.0
|
|
195
208
|
type: :development
|
|
196
209
|
prerelease: false
|
|
197
210
|
version_requirements: !ruby/object:Gem::Requirement
|
|
198
211
|
requirements:
|
|
199
212
|
- - "~>"
|
|
200
213
|
- !ruby/object:Gem::Version
|
|
201
|
-
version:
|
|
214
|
+
version: 1.25.0
|
|
202
215
|
- !ruby/object:Gem::Dependency
|
|
203
216
|
name: rubocop-rake
|
|
204
217
|
requirement: !ruby/object:Gem::Requirement
|
|
205
218
|
requirements:
|
|
206
219
|
- - "~>"
|
|
207
220
|
- !ruby/object:Gem::Version
|
|
208
|
-
version: 0.
|
|
221
|
+
version: 0.7.0
|
|
209
222
|
type: :development
|
|
210
223
|
prerelease: false
|
|
211
224
|
version_requirements: !ruby/object:Gem::Requirement
|
|
212
225
|
requirements:
|
|
213
226
|
- - "~>"
|
|
214
227
|
- !ruby/object:Gem::Version
|
|
215
|
-
version: 0.
|
|
228
|
+
version: 0.7.0
|
|
216
229
|
- !ruby/object:Gem::Dependency
|
|
217
230
|
name: simplecov
|
|
218
231
|
requirement: !ruby/object:Gem::Requirement
|
|
219
232
|
requirements:
|
|
220
233
|
- - "~>"
|
|
221
234
|
- !ruby/object:Gem::Version
|
|
222
|
-
version: 0.21
|
|
235
|
+
version: '0.21'
|
|
223
236
|
type: :development
|
|
224
237
|
prerelease: false
|
|
225
238
|
version_requirements: !ruby/object:Gem::Requirement
|
|
226
239
|
requirements:
|
|
227
240
|
- - "~>"
|
|
228
241
|
- !ruby/object:Gem::Version
|
|
229
|
-
version: 0.21
|
|
242
|
+
version: '0.21'
|
|
230
243
|
- !ruby/object:Gem::Dependency
|
|
231
244
|
name: yard
|
|
232
245
|
requirement: !ruby/object:Gem::Requirement
|
|
233
246
|
requirements:
|
|
234
247
|
- - "~>"
|
|
235
248
|
- !ruby/object:Gem::Version
|
|
236
|
-
version: 0.9.
|
|
249
|
+
version: 0.9.37
|
|
237
250
|
type: :development
|
|
238
251
|
prerelease: false
|
|
239
252
|
version_requirements: !ruby/object:Gem::Requirement
|
|
240
253
|
requirements:
|
|
241
254
|
- - "~>"
|
|
242
255
|
- !ruby/object:Gem::Version
|
|
243
|
-
version: 0.9.
|
|
256
|
+
version: 0.9.37
|
|
244
257
|
description: A Ruby implementation of the Discord (https://discord.com) API.
|
|
245
258
|
email:
|
|
246
259
|
- ''
|
|
@@ -248,12 +261,17 @@ executables: []
|
|
|
248
261
|
extensions: []
|
|
249
262
|
extra_rdoc_files: []
|
|
250
263
|
files:
|
|
251
|
-
- ".
|
|
264
|
+
- ".devcontainer/Dockerfile"
|
|
265
|
+
- ".devcontainer/devcontainer.json"
|
|
266
|
+
- ".devcontainer/postcreate.sh"
|
|
252
267
|
- ".github/CONTRIBUTING.md"
|
|
253
268
|
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
|
254
269
|
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
|
255
270
|
- ".github/pull_request_template.md"
|
|
271
|
+
- ".github/workflows/ci.yml"
|
|
256
272
|
- ".github/workflows/codeql.yml"
|
|
273
|
+
- ".github/workflows/deploy.yml"
|
|
274
|
+
- ".github/workflows/release.yml"
|
|
257
275
|
- ".gitignore"
|
|
258
276
|
- ".markdownlint.json"
|
|
259
277
|
- ".overcommit.yml"
|
|
@@ -294,7 +312,10 @@ files:
|
|
|
294
312
|
- lib/discordrb/data/application.rb
|
|
295
313
|
- lib/discordrb/data/attachment.rb
|
|
296
314
|
- lib/discordrb/data/audit_logs.rb
|
|
315
|
+
- lib/discordrb/data/avatar_decoration.rb
|
|
316
|
+
- lib/discordrb/data/call.rb
|
|
297
317
|
- lib/discordrb/data/channel.rb
|
|
318
|
+
- lib/discordrb/data/collectibles.rb
|
|
298
319
|
- lib/discordrb/data/component.rb
|
|
299
320
|
- lib/discordrb/data/embed.rb
|
|
300
321
|
- lib/discordrb/data/emoji.rb
|
|
@@ -304,11 +325,14 @@ files:
|
|
|
304
325
|
- lib/discordrb/data/member.rb
|
|
305
326
|
- lib/discordrb/data/message.rb
|
|
306
327
|
- lib/discordrb/data/overwrite.rb
|
|
328
|
+
- lib/discordrb/data/primary_server.rb
|
|
307
329
|
- lib/discordrb/data/profile.rb
|
|
308
330
|
- lib/discordrb/data/reaction.rb
|
|
309
331
|
- lib/discordrb/data/recipient.rb
|
|
310
332
|
- lib/discordrb/data/role.rb
|
|
311
333
|
- lib/discordrb/data/server.rb
|
|
334
|
+
- lib/discordrb/data/server_preview.rb
|
|
335
|
+
- lib/discordrb/data/snapshot.rb
|
|
312
336
|
- lib/discordrb/data/user.rb
|
|
313
337
|
- lib/discordrb/data/voice_region.rb
|
|
314
338
|
- lib/discordrb/data/voice_state.rb
|
|
@@ -353,9 +377,11 @@ homepage: https://github.com/shardlab/discordrb
|
|
|
353
377
|
licenses:
|
|
354
378
|
- MIT
|
|
355
379
|
metadata:
|
|
380
|
+
bug_tracker_uri: https://github.com/shardlab/discordrb/issues
|
|
356
381
|
changelog_uri: https://github.com/shardlab/discordrb/blob/main/CHANGELOG.md
|
|
382
|
+
documentation_uri: https://github.com/shardlab/discordrb/wiki
|
|
383
|
+
source_code_uri: https://github.com/shardlab/discordrb
|
|
357
384
|
rubygems_mfa_required: 'true'
|
|
358
|
-
post_install_message:
|
|
359
385
|
rdoc_options: []
|
|
360
386
|
require_paths:
|
|
361
387
|
- lib
|
|
@@ -363,15 +389,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
363
389
|
requirements:
|
|
364
390
|
- - ">="
|
|
365
391
|
- !ruby/object:Gem::Version
|
|
366
|
-
version: '2
|
|
392
|
+
version: '3.2'
|
|
367
393
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
368
394
|
requirements:
|
|
369
395
|
- - ">="
|
|
370
396
|
- !ruby/object:Gem::Version
|
|
371
397
|
version: '0'
|
|
372
398
|
requirements: []
|
|
373
|
-
rubygems_version: 3.
|
|
374
|
-
signing_key:
|
|
399
|
+
rubygems_version: 3.6.9
|
|
375
400
|
specification_version: 4
|
|
376
401
|
summary: Discord API for Ruby
|
|
377
402
|
test_files: []
|