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/attachment.rb
CHANGED
@@ -1,119 +1,134 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "mime/types"
|
4
|
-
require "stringio"
|
5
|
-
|
6
|
-
module Discorb
|
7
|
-
#
|
8
|
-
# Represents a attachment file.
|
9
|
-
#
|
10
|
-
class Attachment
|
11
|
-
# @return [#read] The file content.
|
12
|
-
attr_reader :io
|
13
|
-
# @return [String] The attachment filename.
|
14
|
-
attr_reader :filename
|
15
|
-
# @return [String] The attachment content type.
|
16
|
-
attr_reader :content_type
|
17
|
-
# @return [String] The attachment description.
|
18
|
-
attr_reader :description
|
19
|
-
# @return [Discorb::Snowflake] The attachment id.
|
20
|
-
attr_reader :id
|
21
|
-
# @return [Integer] The attachment size in bytes.
|
22
|
-
attr_reader :size
|
23
|
-
# @return [String] The attachment url.
|
24
|
-
attr_reader :url
|
25
|
-
# @return [String] The attachment proxy url.
|
26
|
-
attr_reader :proxy_url
|
27
|
-
# @return [Integer] The image height.
|
28
|
-
# @return [nil] If the attachment is not an image.
|
29
|
-
attr_reader :height
|
30
|
-
# @return [Integer] The image width.
|
31
|
-
# @return [nil] If the attachment is not an image.
|
32
|
-
attr_reader :width
|
33
|
-
# @return [:client, :discord] The attachment was created by.
|
34
|
-
attr_reader :created_by
|
35
|
-
# @private
|
36
|
-
# @return [Boolean] Whether the attachment will be closed after it is sent.
|
37
|
-
attr_reader :will_close
|
38
|
-
|
39
|
-
# @!attribute [r] image?
|
40
|
-
# @return [Boolean] whether the file is an image.
|
41
|
-
|
42
|
-
#
|
43
|
-
# Creates a new attachment.
|
44
|
-
#
|
45
|
-
# @param [#read, String] source The Source of the attachment.
|
46
|
-
# @param [String] filename The filename of the attachment. If not set, path or object_id of the IO is used.
|
47
|
-
# @param [String] description The description of the attachment.
|
48
|
-
# @param [String] content_type The content type of the attachment. If not set, it is guessed from the filename.
|
49
|
-
# If failed to guess, it is set to `application/octet-stream`.
|
50
|
-
# @param [Boolean] will_close Whether the IO will be closed after the attachment is sent.
|
51
|
-
#
|
52
|
-
def initialize(
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
@
|
60
|
-
@
|
61
|
-
|
62
|
-
@
|
63
|
-
@
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
@
|
76
|
-
@
|
77
|
-
@
|
78
|
-
@
|
79
|
-
@
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
@
|
84
|
-
end
|
85
|
-
|
86
|
-
def
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
#
|
109
|
-
#
|
110
|
-
#
|
111
|
-
# @
|
112
|
-
#
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "mime/types"
|
4
|
+
require "stringio"
|
5
|
+
|
6
|
+
module Discorb
|
7
|
+
#
|
8
|
+
# Represents a attachment file.
|
9
|
+
#
|
10
|
+
class Attachment
|
11
|
+
# @return [#read] The file content.
|
12
|
+
attr_reader :io
|
13
|
+
# @return [String] The attachment filename.
|
14
|
+
attr_reader :filename
|
15
|
+
# @return [String] The attachment content type.
|
16
|
+
attr_reader :content_type
|
17
|
+
# @return [String] The attachment description.
|
18
|
+
attr_reader :description
|
19
|
+
# @return [Discorb::Snowflake] The attachment id.
|
20
|
+
attr_reader :id
|
21
|
+
# @return [Integer] The attachment size in bytes.
|
22
|
+
attr_reader :size
|
23
|
+
# @return [String] The attachment url.
|
24
|
+
attr_reader :url
|
25
|
+
# @return [String] The attachment proxy url.
|
26
|
+
attr_reader :proxy_url
|
27
|
+
# @return [Integer] The image height.
|
28
|
+
# @return [nil] If the attachment is not an image.
|
29
|
+
attr_reader :height
|
30
|
+
# @return [Integer] The image width.
|
31
|
+
# @return [nil] If the attachment is not an image.
|
32
|
+
attr_reader :width
|
33
|
+
# @return [:client, :discord] The attachment was created by.
|
34
|
+
attr_reader :created_by
|
35
|
+
# @private
|
36
|
+
# @return [Boolean] Whether the attachment will be closed after it is sent.
|
37
|
+
attr_reader :will_close
|
38
|
+
|
39
|
+
# @!attribute [r] image?
|
40
|
+
# @return [Boolean] whether the file is an image.
|
41
|
+
|
42
|
+
#
|
43
|
+
# Creates a new attachment.
|
44
|
+
#
|
45
|
+
# @param [#read, String] source The Source of the attachment.
|
46
|
+
# @param [String] filename The filename of the attachment. If not set, path or object_id of the IO is used.
|
47
|
+
# @param [String] description The description of the attachment.
|
48
|
+
# @param [String] content_type The content type of the attachment. If not set, it is guessed from the filename.
|
49
|
+
# If failed to guess, it is set to `application/octet-stream`.
|
50
|
+
# @param [Boolean] will_close Whether the IO will be closed after the attachment is sent.
|
51
|
+
#
|
52
|
+
def initialize(
|
53
|
+
source,
|
54
|
+
filename = nil,
|
55
|
+
description: nil,
|
56
|
+
content_type: nil,
|
57
|
+
will_close: true
|
58
|
+
)
|
59
|
+
@io = (source.respond_to?(:read) ? source : File.open(source, "rb"))
|
60
|
+
@filename =
|
61
|
+
filename || (@io.respond_to?(:path) ? @io.path : @io.object_id)
|
62
|
+
@description = description
|
63
|
+
@content_type =
|
64
|
+
content_type || MIME::Types.type_for(@filename.to_s)[0].to_s
|
65
|
+
@content_type = "application/octet-stream" if @content_type == ""
|
66
|
+
@will_close = will_close
|
67
|
+
@created_by = :client
|
68
|
+
end
|
69
|
+
|
70
|
+
#
|
71
|
+
# Initializes the object from a hash.
|
72
|
+
# @private
|
73
|
+
#
|
74
|
+
def initialize_hash(data)
|
75
|
+
@id = Snowflake.new(data[:id])
|
76
|
+
@filename = data[:filename]
|
77
|
+
@content_type = data[:content_type] || "application/octet-stream"
|
78
|
+
@size = data[:size]
|
79
|
+
@url = data[:url]
|
80
|
+
@proxy_url = data[:proxy_url]
|
81
|
+
@height = data[:height]
|
82
|
+
@width = data[:width]
|
83
|
+
@created_by = :discord
|
84
|
+
end
|
85
|
+
|
86
|
+
def image?
|
87
|
+
@content_type.start_with? "image/"
|
88
|
+
end
|
89
|
+
|
90
|
+
def inspect
|
91
|
+
if @created_by == :discord
|
92
|
+
"<#{self.class} #{@id}: #{@filename}>"
|
93
|
+
else
|
94
|
+
"<#{self.class} #{io.fileno}: #{@filename}>"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
#
|
99
|
+
# Creates a new file from a hash.
|
100
|
+
# @private
|
101
|
+
#
|
102
|
+
def self.from_hash(data)
|
103
|
+
inst = allocate
|
104
|
+
inst.initialize_hash(data)
|
105
|
+
inst
|
106
|
+
end
|
107
|
+
|
108
|
+
#
|
109
|
+
# Creates a new file from a string.
|
110
|
+
#
|
111
|
+
# @param [String] string The string to create the file from.
|
112
|
+
# @param [String] filename The filename of the file. object_id of the string is used if not set.
|
113
|
+
# @param [String] content_type The content type of the file. If not set, it is guessed from the filename.
|
114
|
+
#
|
115
|
+
# @return [Discorb::Attachment] The new file.
|
116
|
+
#
|
117
|
+
def self.from_string(
|
118
|
+
string,
|
119
|
+
filename = nil,
|
120
|
+
content_type: nil,
|
121
|
+
description: nil
|
122
|
+
)
|
123
|
+
io = StringIO.new(string)
|
124
|
+
filename ||= "#{string.object_id}.txt"
|
125
|
+
new(
|
126
|
+
io,
|
127
|
+
filename,
|
128
|
+
content_type: content_type,
|
129
|
+
description: description,
|
130
|
+
will_close: true
|
131
|
+
)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|