discorb 0.19.0 → 0.20.0
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/.github/workflows/build_version.yml +2 -2
- data/.rubocop.yml +12 -75
- data/Changelog.md +10 -0
- data/Rakefile +482 -454
- data/lib/discorb/allowed_mentions.rb +68 -72
- data/lib/discorb/app_command/command.rb +466 -398
- data/lib/discorb/app_command/common.rb +65 -25
- data/lib/discorb/app_command/handler.rb +304 -266
- data/lib/discorb/app_command.rb +5 -5
- data/lib/discorb/application.rb +198 -197
- data/lib/discorb/asset.rb +101 -101
- data/lib/discorb/attachment.rb +134 -119
- data/lib/discorb/audit_logs.rb +412 -385
- data/lib/discorb/automod.rb +279 -269
- data/lib/discorb/channel/base.rb +107 -108
- data/lib/discorb/channel/category.rb +32 -32
- data/lib/discorb/channel/container.rb +44 -44
- data/lib/discorb/channel/dm.rb +26 -28
- data/lib/discorb/channel/guild.rb +311 -246
- data/lib/discorb/channel/stage.rb +156 -140
- data/lib/discorb/channel/text.rb +430 -336
- data/lib/discorb/channel/thread.rb +374 -325
- data/lib/discorb/channel/voice.rb +85 -79
- data/lib/discorb/channel.rb +5 -5
- data/lib/discorb/client.rb +635 -621
- data/lib/discorb/color.rb +178 -182
- data/lib/discorb/common.rb +168 -164
- data/lib/discorb/components/button.rb +107 -106
- data/lib/discorb/components/select_menu.rb +157 -145
- data/lib/discorb/components/text_input.rb +103 -106
- data/lib/discorb/components.rb +68 -66
- data/lib/discorb/dictionary.rb +135 -135
- data/lib/discorb/embed.rb +404 -398
- data/lib/discorb/emoji.rb +309 -302
- data/lib/discorb/emoji_table.rb +16099 -8857
- data/lib/discorb/error.rb +131 -131
- data/lib/discorb/event.rb +360 -314
- data/lib/discorb/event_handler.rb +39 -39
- data/lib/discorb/exe/about.rb +17 -17
- data/lib/discorb/exe/irb.rb +72 -67
- data/lib/discorb/exe/new.rb +323 -315
- data/lib/discorb/exe/run.rb +69 -68
- data/lib/discorb/exe/setup.rb +57 -55
- data/lib/discorb/exe/show.rb +12 -12
- data/lib/discorb/extend.rb +25 -45
- data/lib/discorb/extension.rb +89 -83
- data/lib/discorb/flag.rb +126 -128
- data/lib/discorb/gateway.rb +984 -804
- data/lib/discorb/gateway_events.rb +670 -638
- data/lib/discorb/gateway_requests.rb +45 -48
- data/lib/discorb/guild.rb +2115 -1626
- data/lib/discorb/guild_template.rb +280 -241
- data/lib/discorb/http.rb +247 -232
- data/lib/discorb/image.rb +42 -42
- data/lib/discorb/integration.rb +169 -161
- data/lib/discorb/intents.rb +161 -163
- data/lib/discorb/interaction/autocomplete.rb +76 -62
- data/lib/discorb/interaction/command.rb +279 -224
- data/lib/discorb/interaction/components.rb +114 -104
- data/lib/discorb/interaction/modal.rb +36 -32
- data/lib/discorb/interaction/response.rb +379 -336
- data/lib/discorb/interaction/root.rb +271 -257
- data/lib/discorb/interaction.rb +5 -5
- data/lib/discorb/invite.rb +154 -153
- data/lib/discorb/member.rb +344 -311
- data/lib/discorb/message.rb +615 -544
- data/lib/discorb/message_meta.rb +197 -186
- data/lib/discorb/modules.rb +371 -290
- data/lib/discorb/permission.rb +305 -291
- data/lib/discorb/presence.rb +352 -346
- data/lib/discorb/rate_limit.rb +81 -76
- data/lib/discorb/reaction.rb +55 -54
- data/lib/discorb/role.rb +272 -240
- data/lib/discorb/shard.rb +76 -74
- data/lib/discorb/sticker.rb +193 -171
- data/lib/discorb/user.rb +205 -188
- data/lib/discorb/utils/colored_puts.rb +16 -16
- data/lib/discorb/utils.rb +12 -16
- data/lib/discorb/voice_state.rb +305 -281
- data/lib/discorb/webhook.rb +537 -507
- data/lib/discorb.rb +62 -56
- data/sig/discorb/application.rbs +2 -0
- data/sig/discorb/automod.rbs +10 -1
- data/sig/discorb/guild.rbs +2 -0
- data/sig/discorb/message.rbs +2 -0
- data/sig/discorb/user.rbs +22 -20
- metadata +2 -2
data/lib/discorb/invite.rb
CHANGED
@@ -1,153 +1,154 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Discorb
|
4
|
-
#
|
5
|
-
# Represents invite of discord.
|
6
|
-
#
|
7
|
-
class Invite < DiscordModel
|
8
|
-
# @return [String] The code of invite.
|
9
|
-
attr_reader :code
|
10
|
-
|
11
|
-
# @return [:voice, :stream, :guild] The type of invite.
|
12
|
-
attr_reader :target_type
|
13
|
-
|
14
|
-
# @return [User] The user of invite.
|
15
|
-
attr_reader :target_user
|
16
|
-
|
17
|
-
# @return [Integer] The approximate number of online users of invite.
|
18
|
-
attr_reader :approximate_presence_count
|
19
|
-
|
20
|
-
# @return [Integer] The approximate number of members of invite.
|
21
|
-
attr_reader :approximate_member_count
|
22
|
-
|
23
|
-
# @return [Time] The time when invite expires.
|
24
|
-
# @return [nil] The invite never expires.
|
25
|
-
# @macro [new] nometa
|
26
|
-
# @return [nil] The invite doesn't have metadata.
|
27
|
-
attr_reader :expires_at
|
28
|
-
|
29
|
-
# @return [Integer] The number of uses of invite.
|
30
|
-
# @macro nometa
|
31
|
-
attr_reader :uses
|
32
|
-
|
33
|
-
# @return [Integer] The maximum number of uses of invite.
|
34
|
-
# @macro nometa
|
35
|
-
attr_reader :max_uses
|
36
|
-
|
37
|
-
# @return [Integer] Duration of invite in seconds.
|
38
|
-
# @macro nometa
|
39
|
-
attr_reader :max_age
|
40
|
-
|
41
|
-
# @return [Time] The time when invite was created.
|
42
|
-
# @macro nometa
|
43
|
-
attr_reader :created_at
|
44
|
-
|
45
|
-
# @!attribute [r] channel
|
46
|
-
# Channel of the invite.
|
47
|
-
#
|
48
|
-
# @return [Discorb::Channel] Channel of invite.
|
49
|
-
# @macro client_cache
|
50
|
-
#
|
51
|
-
# @!attribute [r] guild
|
52
|
-
# Guild of the invite.
|
53
|
-
#
|
54
|
-
# @return [Discorb::Guild] Guild of invite.
|
55
|
-
# @macro client_cache
|
56
|
-
#
|
57
|
-
# @!attribute [r] remain_uses
|
58
|
-
# Number of remaining uses of invite.
|
59
|
-
# @return [Integer] Number of remaining uses of invite.
|
60
|
-
#
|
61
|
-
# @!attribute [r] url
|
62
|
-
# Full url of invite.
|
63
|
-
# @return [String] Full url of invite.
|
64
|
-
#
|
65
|
-
# @!attribute [r] temporary?
|
66
|
-
# Whether the invite is temporary.
|
67
|
-
# @return [Boolean]
|
68
|
-
|
69
|
-
# @private
|
70
|
-
# @return [{Integer => Symbol}] The mapping of target types.
|
71
|
-
TARGET_TYPES = {
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
#
|
78
|
-
#
|
79
|
-
# @
|
80
|
-
#
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
end
|
90
|
-
|
91
|
-
def
|
92
|
-
@client.
|
93
|
-
end
|
94
|
-
|
95
|
-
def
|
96
|
-
|
97
|
-
end
|
98
|
-
|
99
|
-
def
|
100
|
-
|
101
|
-
end
|
102
|
-
|
103
|
-
def
|
104
|
-
@
|
105
|
-
end
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
private
|
122
|
-
|
123
|
-
def _set_data(data, gateway)
|
124
|
-
@code = data[:code]
|
125
|
-
if gateway
|
126
|
-
@channel_data = { id: data[:channel_id] }
|
127
|
-
@guild_data = { id: data[:guild_id] }
|
128
|
-
else
|
129
|
-
@guild_data = data[:guild]
|
130
|
-
@channel_data = data[:channel]
|
131
|
-
@approximate_presence_count = data[:approximate_presence_count]
|
132
|
-
@approximate_member_count = data[:approximate_member_count]
|
133
|
-
@expires_at = data[:expires_at] && Time.iso8601(data[:expires_at])
|
134
|
-
end
|
135
|
-
@inviter_data = data[:inviter]
|
136
|
-
@target_type = TARGET_TYPES[data[:target_type]]
|
137
|
-
if data[:target_user]
|
138
|
-
@target_user =
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
@
|
148
|
-
@
|
149
|
-
@
|
150
|
-
@
|
151
|
-
|
152
|
-
|
153
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Discorb
|
4
|
+
#
|
5
|
+
# Represents invite of discord.
|
6
|
+
#
|
7
|
+
class Invite < DiscordModel
|
8
|
+
# @return [String] The code of invite.
|
9
|
+
attr_reader :code
|
10
|
+
|
11
|
+
# @return [:voice, :stream, :guild] The type of invite.
|
12
|
+
attr_reader :target_type
|
13
|
+
|
14
|
+
# @return [User] The user of invite.
|
15
|
+
attr_reader :target_user
|
16
|
+
|
17
|
+
# @return [Integer] The approximate number of online users of invite.
|
18
|
+
attr_reader :approximate_presence_count
|
19
|
+
|
20
|
+
# @return [Integer] The approximate number of members of invite.
|
21
|
+
attr_reader :approximate_member_count
|
22
|
+
|
23
|
+
# @return [Time] The time when invite expires.
|
24
|
+
# @return [nil] The invite never expires.
|
25
|
+
# @macro [new] nometa
|
26
|
+
# @return [nil] The invite doesn't have metadata.
|
27
|
+
attr_reader :expires_at
|
28
|
+
|
29
|
+
# @return [Integer] The number of uses of invite.
|
30
|
+
# @macro nometa
|
31
|
+
attr_reader :uses
|
32
|
+
|
33
|
+
# @return [Integer] The maximum number of uses of invite.
|
34
|
+
# @macro nometa
|
35
|
+
attr_reader :max_uses
|
36
|
+
|
37
|
+
# @return [Integer] Duration of invite in seconds.
|
38
|
+
# @macro nometa
|
39
|
+
attr_reader :max_age
|
40
|
+
|
41
|
+
# @return [Time] The time when invite was created.
|
42
|
+
# @macro nometa
|
43
|
+
attr_reader :created_at
|
44
|
+
|
45
|
+
# @!attribute [r] channel
|
46
|
+
# Channel of the invite.
|
47
|
+
#
|
48
|
+
# @return [Discorb::Channel] Channel of invite.
|
49
|
+
# @macro client_cache
|
50
|
+
#
|
51
|
+
# @!attribute [r] guild
|
52
|
+
# Guild of the invite.
|
53
|
+
#
|
54
|
+
# @return [Discorb::Guild] Guild of invite.
|
55
|
+
# @macro client_cache
|
56
|
+
#
|
57
|
+
# @!attribute [r] remain_uses
|
58
|
+
# Number of remaining uses of invite.
|
59
|
+
# @return [Integer] Number of remaining uses of invite.
|
60
|
+
#
|
61
|
+
# @!attribute [r] url
|
62
|
+
# Full url of invite.
|
63
|
+
# @return [String] Full url of invite.
|
64
|
+
#
|
65
|
+
# @!attribute [r] temporary?
|
66
|
+
# Whether the invite is temporary.
|
67
|
+
# @return [Boolean]
|
68
|
+
|
69
|
+
# @private
|
70
|
+
# @return [{Integer => Symbol}] The mapping of target types.
|
71
|
+
TARGET_TYPES = { nil => :voice, 1 => :stream, 2 => :guild }.freeze
|
72
|
+
|
73
|
+
#
|
74
|
+
# Initialize a new invite.
|
75
|
+
# @private
|
76
|
+
#
|
77
|
+
# @param [Discorb::Client] client The client.
|
78
|
+
# @param [Hash] data The data of invite.
|
79
|
+
# @param [Boolean] gateway Whether the data is from gateway.
|
80
|
+
#
|
81
|
+
def initialize(client, data, gateway)
|
82
|
+
@client = client
|
83
|
+
@data = data[:data]
|
84
|
+
_set_data(data, gateway)
|
85
|
+
end
|
86
|
+
|
87
|
+
def channel
|
88
|
+
@client.channels[@channel_data[:id]]
|
89
|
+
end
|
90
|
+
|
91
|
+
def guild
|
92
|
+
@client.guilds[@guild_data[:id]]
|
93
|
+
end
|
94
|
+
|
95
|
+
def url
|
96
|
+
"https://discord.gg/#{@code}"
|
97
|
+
end
|
98
|
+
|
99
|
+
def remain_uses
|
100
|
+
@max_uses && (@max_uses - @uses)
|
101
|
+
end
|
102
|
+
|
103
|
+
def temporary?
|
104
|
+
@temporary
|
105
|
+
end
|
106
|
+
|
107
|
+
# Delete the invite.
|
108
|
+
# @async
|
109
|
+
# @return [Async::Task<void>] The task.
|
110
|
+
#
|
111
|
+
def delete(reason: nil)
|
112
|
+
Async do
|
113
|
+
@client.http.request(
|
114
|
+
Route.new("/invites/#{@code}", "//invites/:code", :delete),
|
115
|
+
{},
|
116
|
+
audit_log_reason: reason
|
117
|
+
)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
private
|
122
|
+
|
123
|
+
def _set_data(data, gateway)
|
124
|
+
@code = data[:code]
|
125
|
+
if gateway
|
126
|
+
@channel_data = { id: data[:channel_id] }
|
127
|
+
@guild_data = { id: data[:guild_id] }
|
128
|
+
else
|
129
|
+
@guild_data = data[:guild]
|
130
|
+
@channel_data = data[:channel]
|
131
|
+
@approximate_presence_count = data[:approximate_presence_count]
|
132
|
+
@approximate_member_count = data[:approximate_member_count]
|
133
|
+
@expires_at = data[:expires_at] && Time.iso8601(data[:expires_at])
|
134
|
+
end
|
135
|
+
@inviter_data = data[:inviter]
|
136
|
+
@target_type = TARGET_TYPES[data[:target_type]]
|
137
|
+
if data[:target_user]
|
138
|
+
@target_user =
|
139
|
+
@client.users[data[:target_user][:id]] ||
|
140
|
+
User.new(@client, data[:target_user])
|
141
|
+
end
|
142
|
+
# @target_application = nil
|
143
|
+
|
144
|
+
# @stage_instance = data[:stage_instance] && Invite::StageInstance.new(self, data[:stage_instance])
|
145
|
+
return unless data.key?(:uses)
|
146
|
+
|
147
|
+
@uses = data[:uses]
|
148
|
+
@max_uses = data[:max_uses]
|
149
|
+
@max_age = data[:max_age]
|
150
|
+
@temporary = data[:temporary]
|
151
|
+
@created_at = Time.iso8601(data[:created_at])
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|