discorb 0.17.1 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/lint.yml +1 -3
  3. data/.github/workflows/validate.yml +21 -0
  4. data/Changelog.md +10 -0
  5. data/Gemfile +6 -0
  6. data/Rakefile +210 -98
  7. data/Steepfile +28 -0
  8. data/docs/events.md +42 -6
  9. data/docs/tutorial.md +7 -7
  10. data/docs/voice_events.md +2 -2
  11. data/examples/commands/message.rb +12 -7
  12. data/examples/commands/permission.rb +2 -1
  13. data/examples/commands/slash.rb +23 -19
  14. data/examples/commands/user.rb +15 -12
  15. data/examples/components/authorization_button.rb +2 -1
  16. data/examples/components/select_menu.rb +4 -1
  17. data/examples/extension/main.rb +1 -0
  18. data/examples/extension/message_expander.rb +1 -0
  19. data/examples/sig/commands/message.rbs +5 -0
  20. data/examples/simple/eval.rb +1 -0
  21. data/examples/simple/ping_pong.rb +1 -0
  22. data/examples/simple/rolepanel.rb +16 -5
  23. data/examples/simple/shard.rb +2 -1
  24. data/examples/simple/wait_for_message.rb +3 -0
  25. data/exe/discorb +3 -3
  26. data/lib/discorb/allowed_mentions.rb +1 -1
  27. data/lib/discorb/app_command/command.rb +12 -13
  28. data/lib/discorb/app_command/handler.rb +20 -6
  29. data/lib/discorb/audit_logs.rb +6 -2
  30. data/lib/discorb/automod.rb +269 -0
  31. data/lib/discorb/channel/guild.rb +2 -1
  32. data/lib/discorb/channel/stage.rb +1 -1
  33. data/lib/discorb/channel/text.rb +11 -20
  34. data/lib/discorb/channel/thread.rb +15 -11
  35. data/lib/discorb/client.rb +12 -10
  36. data/lib/discorb/color.rb +37 -60
  37. data/lib/discorb/common.rb +1 -1
  38. data/lib/discorb/dictionary.rb +1 -1
  39. data/lib/discorb/embed.rb +4 -3
  40. data/lib/discorb/emoji.rb +2 -2
  41. data/lib/discorb/exe/about.rb +1 -1
  42. data/lib/discorb/exe/new.rb +1 -5
  43. data/lib/discorb/extension.rb +0 -4
  44. data/lib/discorb/flag.rb +2 -2
  45. data/lib/discorb/gateway.rb +21 -582
  46. data/lib/discorb/gateway_events.rb +638 -0
  47. data/lib/discorb/guild.rb +136 -17
  48. data/lib/discorb/guild_template.rb +1 -1
  49. data/lib/discorb/http.rb +47 -25
  50. data/lib/discorb/intents.rb +27 -18
  51. data/lib/discorb/interaction/command.rb +14 -10
  52. data/lib/discorb/interaction/response.rb +74 -14
  53. data/lib/discorb/member.rb +3 -3
  54. data/lib/discorb/message.rb +13 -11
  55. data/lib/discorb/message_meta.rb +2 -3
  56. data/lib/discorb/modules.rb +3 -2
  57. data/lib/discorb/presence.rb +4 -2
  58. data/lib/discorb/reaction.rb +2 -2
  59. data/lib/discorb/role.rb +1 -1
  60. data/lib/discorb/sticker.rb +3 -3
  61. data/lib/discorb/user.rb +2 -2
  62. data/lib/discorb/voice_state.rb +5 -5
  63. data/lib/discorb/webhook.rb +15 -6
  64. data/lib/discorb.rb +2 -2
  65. data/rbs_collection.lock.yaml +88 -96
  66. data/rbs_collection.yaml +21 -17
  67. data/sig/async.rbs +11 -5
  68. data/sig/discorb/activity.rbs +23 -0
  69. data/sig/discorb/allowed_mentions.rbs +44 -0
  70. data/sig/discorb/app_command/base.rbs +282 -0
  71. data/sig/discorb/app_command/handler.rbs +171 -0
  72. data/sig/discorb/application.rbs +142 -0
  73. data/sig/discorb/asset.rbs +32 -0
  74. data/sig/discorb/attachment.rbs +91 -0
  75. data/sig/discorb/audit_log.rbs +231 -0
  76. data/sig/discorb/automod.rbs +128 -0
  77. data/sig/discorb/avatar.rbs +26 -0
  78. data/sig/discorb/channel/base.rbs +179 -0
  79. data/sig/discorb/channel/category.rbs +56 -0
  80. data/sig/discorb/channel/container.rbs +29 -0
  81. data/sig/discorb/channel/dm.rbs +14 -0
  82. data/sig/discorb/channel/news.rbs +20 -0
  83. data/sig/discorb/channel/stage.rbs +77 -0
  84. data/sig/discorb/channel/text.rbs +158 -0
  85. data/sig/discorb/channel/thread.rbs +185 -0
  86. data/sig/discorb/channel/voice.rbs +41 -0
  87. data/sig/discorb/client.rbs +2495 -0
  88. data/sig/discorb/color.rbs +142 -0
  89. data/sig/discorb/component/base.rbs +28 -0
  90. data/sig/discorb/component/button.rbs +65 -0
  91. data/sig/discorb/component/select_menu.rbs +107 -0
  92. data/sig/discorb/component/text_input.rbs +69 -0
  93. data/sig/discorb/connectable.rbs +8 -0
  94. data/sig/discorb/custom_emoji.rbs +90 -0
  95. data/sig/discorb/dictionary.rbs +85 -0
  96. data/sig/discorb/discord_model.rbs +15 -0
  97. data/sig/discorb/embed.rbs +279 -0
  98. data/sig/discorb/emoji.rbs +13 -0
  99. data/sig/discorb/error.rbs +73 -0
  100. data/sig/discorb/event_handler.rbs +27 -0
  101. data/sig/discorb/extension.rbs +1734 -0
  102. data/sig/discorb/flag.rbs +72 -0
  103. data/sig/discorb/gateway.rbs +481 -0
  104. data/sig/discorb/guild.rbs +870 -0
  105. data/sig/discorb/guild_template.rbs +174 -0
  106. data/sig/discorb/http.rbs +147 -0
  107. data/sig/discorb/image.rbs +20 -0
  108. data/sig/discorb/integration.rbs +118 -0
  109. data/sig/discorb/intents.rbs +97 -0
  110. data/sig/discorb/interaction/autocomplete.rbs +9 -0
  111. data/sig/discorb/interaction/base.rbs +66 -0
  112. data/sig/discorb/interaction/command.rbs +66 -0
  113. data/sig/discorb/interaction/message_component.rbs +140 -0
  114. data/sig/discorb/interaction/modal.rbs +50 -0
  115. data/sig/discorb/interaction/responder.rbs +157 -0
  116. data/sig/discorb/invite.rbs +86 -0
  117. data/sig/discorb/member.rbs +187 -0
  118. data/sig/discorb/message.rbs +469 -0
  119. data/sig/discorb/messageable.rbs +153 -0
  120. data/sig/discorb/partial_emoji.rbs +35 -0
  121. data/sig/discorb/permissions.rbs +149 -0
  122. data/sig/discorb/presence.rbs +237 -0
  123. data/sig/discorb/reaction.rbs +33 -0
  124. data/sig/discorb/role.rbs +145 -0
  125. data/sig/discorb/scheduled_event.rbs +148 -0
  126. data/sig/discorb/shard.rbs +62 -0
  127. data/sig/discorb/snowflake.rbs +56 -0
  128. data/sig/discorb/stage_instance.rbs +63 -0
  129. data/sig/discorb/sticker.rbs +116 -0
  130. data/sig/discorb/system_channel_flag.rbs +17 -0
  131. data/sig/discorb/unicode_emoji.rbs +49 -0
  132. data/sig/discorb/user.rbs +93 -0
  133. data/sig/discorb/utils.rbs +8 -0
  134. data/sig/discorb/voice_region.rbs +30 -0
  135. data/sig/discorb/voice_state.rbs +71 -0
  136. data/sig/discorb/webhook.rbs +327 -0
  137. data/sig/discorb/welcome_screen.rbs +78 -0
  138. data/sig/discorb.rbs +5 -8661
  139. data/sig/manifest.yaml +3 -0
  140. data/sig/override.rbs +19 -0
  141. metadata +80 -3
@@ -0,0 +1,149 @@
1
+ module Discorb
2
+ #
3
+ # Represents a permission per guild.
4
+ # ## Flag fields
5
+ #
6
+ # | Field | Value |
7
+ # |-------|-------|
8
+ # |`1 << 0`|`:create_instant_invite`|
9
+ # |`1 << 1`|`:kick_members`|
10
+ # |`1 << 2`|`:ban_members`|
11
+ # |`1 << 3`|`:administrator`|
12
+ # |`1 << 4`|`:manage_channels`|
13
+ # |`1 << 5`|`:manage_guild`|
14
+ # |`1 << 6`|`:add_reactions`|
15
+ # |`1 << 7`|`:view_audit_log`|
16
+ # |`1 << 8`|`:priority_speaker`|
17
+ # |`1 << 9`|`:stream`|
18
+ # |`1 << 10`|`:view_channel`|
19
+ # |`1 << 11`|`:send_messages`|
20
+ # |`1 << 12`|`:send_tts_messages`|
21
+ # |`1 << 13`|`:manage_messages`|
22
+ # |`1 << 14`|`:embed_links`|
23
+ # |`1 << 15`|`:attach_files`|
24
+ # |`1 << 16`|`:read_message_history`|
25
+ # |`1 << 17`|`:mention_everyone`|
26
+ # |`1 << 18`|`:use_external_emojis`|
27
+ # |`1 << 19`|`:view_guild_insights`|
28
+ # |`1 << 20`|`:connect`|
29
+ # |`1 << 21`|`:speak`|
30
+ # |`1 << 22`|`:mute_members`|
31
+ # |`1 << 23`|`:deafen_members`|
32
+ # |`1 << 24`|`:move_members`|
33
+ # |`1 << 25`|`:use_vad`|
34
+ # |`1 << 26`|`:change_nickname`|
35
+ # |`1 << 27`|`:manage_nicknames`|
36
+ # |`1 << 28`|`:manage_roles`|
37
+ # |`1 << 29`|`:manage_webhooks`|
38
+ # |`1 << 30`|`:manage_emojis`|
39
+ # |`1 << 31`|`:use_slash_commands`|
40
+ # |`1 << 32`|`:request_to_speak`|
41
+ # |`1 << 34`|`:manage_threads`|
42
+ # |`1 << 35`|`:use_public_threads`|
43
+ # |`1 << 36`|`:use_private_threads`|
44
+ class Permission < Discorb::Flag
45
+ attr_accessor create_instant_invite: bool
46
+ attr_accessor kick_members: bool
47
+ attr_accessor ban_members: bool
48
+ attr_accessor administrator: bool
49
+ attr_accessor manage_channels: bool
50
+ attr_accessor manage_guild: bool
51
+ attr_accessor add_reactions: bool
52
+ attr_accessor view_audit_log: bool
53
+ attr_accessor priority_speaker: bool
54
+ attr_accessor stream: bool
55
+ attr_accessor view_channel: bool
56
+ attr_accessor send_messages: bool
57
+ attr_accessor send_tts_messages: bool
58
+ attr_accessor manage_messages: bool
59
+ attr_accessor embed_links: bool
60
+ attr_accessor attach_files: bool
61
+ attr_accessor read_message_history: bool
62
+ attr_accessor mention_everyone: bool
63
+ attr_accessor use_external_emojis: bool
64
+ attr_accessor view_guild_insights: bool
65
+ attr_accessor connect: bool
66
+ attr_accessor speak: bool
67
+ attr_accessor mute_members: bool
68
+ attr_accessor deafen_members: bool
69
+ attr_accessor move_members: bool
70
+ attr_accessor use_vad: bool
71
+ attr_accessor change_nickname: bool
72
+ attr_accessor manage_nicknames: bool
73
+ attr_accessor manage_roles: bool
74
+ attr_accessor manage_webhooks: bool
75
+ attr_accessor manage_emojis: bool
76
+ attr_accessor use_slash_commands: bool
77
+ attr_accessor request_to_speak: bool
78
+ attr_accessor manage_threads: bool
79
+ attr_accessor use_public_threads: bool
80
+ attr_accessor use_private_threads: bool
81
+ end
82
+
83
+ #
84
+ # Represents a permission per channel.
85
+ class PermissionOverwrite
86
+ #
87
+ # Initializes a new PermissionOverwrite.
88
+ # @private
89
+ #
90
+ # @param allow [Integer] The allowed permissions.
91
+ # @param deny [Integer] The denied permissions.
92
+ def initialize: (Integer allow, Integer deny) -> void
93
+
94
+ def allow: -> Discorb::Permission
95
+
96
+ def deny: -> Discorb::Permission
97
+
98
+ def allow_value: -> Integer
99
+
100
+ def deny_value: -> Integer
101
+
102
+ def inspect: -> String
103
+
104
+ #
105
+ # Converts the permission overwrite to a hash.
106
+ #
107
+ # @return [Hash] The permission overwrite as a hash.
108
+ def to_hash: -> Hash[Symbol, bool]
109
+
110
+ #
111
+ # Union of the permission overwrites.
112
+ #
113
+ # @param [Discorb::PermissionOverwrite] other The other permission overwrite.
114
+ #
115
+ # @return [Discorb::PermissionOverwrite] The union of the permission overwrites.
116
+ def +: (Discorb::PermissionOverwrite other) -> Discorb::PermissionOverwrite
117
+
118
+ #
119
+ # Returns whether overwrite of the given field.
120
+ #
121
+ # @param [Symbol] field The field to check.
122
+ #
123
+ # @return [true, false, nil] Whether the field is allowed, denied or not set.
124
+ def []: (Symbol field) -> bool?
125
+
126
+ #
127
+ # Sets the given field to the given value.
128
+ #
129
+ # @param [Symbol] key The field to set.
130
+ # @param [Boolean] bool The value to set.
131
+ def []=: (Symbol key, bool `bool`) -> untyped
132
+
133
+ #
134
+ # Returns the value of the flag.
135
+ def method_missing: (untyped method, ?untyped `bool`) -> untyped
136
+
137
+ def respond_to_missing?: (untyped method, untyped _arg) -> bool
138
+
139
+ #
140
+ # Initializes a permission overwrite from a hash.
141
+ #
142
+ # @param [Hash] hash The hash to initialize the permission overwrite from.
143
+ #
144
+ # @return [Discorb::PermissionOverwrite] The permission overwrite.
145
+ def self.from_hash: (
146
+ ::Hash[Symbol, bool] hash
147
+ ) -> Discorb::PermissionOverwrite
148
+ end
149
+ end
@@ -0,0 +1,237 @@
1
+ module Discorb
2
+ #
3
+ # Represents a presence of user.
4
+ class Presence < Discorb::DiscordModel
5
+ #
6
+ # Initialize a presence.
7
+ # @private
8
+ #
9
+ # @param [Discorb::Client] client The client.
10
+ # @param [Hash] data The data of the presence.
11
+ def initialize: (Discorb::Client client, Discorb::json data) -> void
12
+
13
+ def inspect: -> String
14
+
15
+ # @return [:online, :idle, :dnd, :offline] The status of the user.
16
+ attr_reader status: Symbol
17
+
18
+ # @return [Array<Discorb::Presence::Activity>] The activities of the user.
19
+ attr_reader activities: ::Array[Discorb::Presence::Activity]
20
+
21
+ # @return [Discorb::Presence::ClientStatus] The client status of the user.
22
+ attr_reader client_status: Discorb::Presence::ClientStatus
23
+
24
+ # @return [Discorb::User] The user of the presence.
25
+ attr_reader user: Discorb::User
26
+
27
+ # @return [Discorb::Guild] The guild of the presence.
28
+ attr_reader guild: Discorb::Guild
29
+
30
+ # @return [Discorb::Presence::Activity] The activity of the presence.
31
+ attr_reader activity: Discorb::Presence::Activity
32
+
33
+ #
34
+ # Represents an activity of a user.
35
+ class Activity < Discorb::DiscordModel
36
+ ACTIVITY_TYPES: untyped
37
+
38
+ #
39
+ # Initialize the activity.
40
+ # @private
41
+ #
42
+ # @param [Hash] data The activity data.
43
+ def initialize: (Discorb::json data) -> void
44
+
45
+ #
46
+ # Convert the activity to a string.
47
+ #
48
+ # @return [String] The string representation of the activity.
49
+ def to_s: -> String
50
+
51
+ # @return [String] The name of the activity.
52
+ attr_reader name: String
53
+
54
+ # @return [:game, :streaming, :listening, :watching, :custom, :competing] The type of the activity.
55
+ attr_reader type: Symbol
56
+
57
+ # @return [String] The url of the activity.
58
+ attr_reader url: String
59
+
60
+ # @return [Time] The time the activity was created.
61
+ attr_reader created_at: Time
62
+
63
+ # @return [Discorb::Presence::Activity::Timestamps] The timestamps of the activity.
64
+ attr_reader timestamps: Discorb::Presence::Activity::Timestamps
65
+
66
+ # @return [Discorb::Snowflake] The application id of the activity.
67
+ attr_reader application_id: Discorb::Snowflake
68
+
69
+ # @return [String] The details of the activity.
70
+ attr_reader details: String
71
+
72
+ # @return [String] The state of party.
73
+ attr_reader state: String
74
+
75
+ # @return [Discorb::Emoji] The emoji of the activity.
76
+ attr_reader emoji: Discorb::emoji?
77
+
78
+ # @return [Discorb::Presence::Activity::Party] The party of the activity.
79
+ # @return [nil] If the activity is not a party activity.
80
+ attr_reader party: Discorb::Presence::Activity::Party?
81
+
82
+ # @return [Discorb::Presence::Activity::Asset] The assets of the activity.
83
+ # @return [nil] If the activity has no assets.
84
+ attr_reader assets: Discorb::Presence::Activity::Asset?
85
+
86
+ # @return [Discorb::StageInstance] The instance of the activity.
87
+ # @return [nil] If the activity is not a stage activity.
88
+ attr_reader instance: Discorb::StageInstance?
89
+
90
+ # @return [Array<Discorb::Presence::Activity::Button>] The buttons of the activity.
91
+ # @return [nil] If the activity has no buttons.
92
+ attr_reader buttons: ::Array[Discorb::Presence::Activity::Button]?
93
+
94
+ # @return [Discorb::Presence::Activity::Flag] The flags of the activity.
95
+ attr_reader flags: Discorb::Presence::Activity::Flag
96
+
97
+ #
98
+ # Represents the timestamps of an activity.
99
+ class Timestamps < Discorb::DiscordModel
100
+ #
101
+ # Initialize the timestamps.
102
+ # @private
103
+ #
104
+ # @param [Hash] data The timestamps data.
105
+ def initialize: (Discorb::json data) -> void
106
+
107
+ # @return [Time] The start time of the activity.
108
+ attr_reader start: Time
109
+
110
+ # @return [Time] The end time of the activity.
111
+ attr_reader end: Time
112
+ end
113
+
114
+ #
115
+ # Represents the party of an activity.
116
+ class Party < Discorb::DiscordModel
117
+ #
118
+ # Initialize the party.
119
+ # @private
120
+ #
121
+ # @param [Hash] data The party data.
122
+ def initialize: (Discorb::json data) -> void
123
+
124
+ # @return [String] The id of the party.
125
+ attr_reader id: String
126
+
127
+ # @return [Integer] The current size of the party.
128
+ attr_reader current_size: Integer
129
+
130
+ # @return [Integer] The max size of the party.
131
+ attr_reader max_size: Integer
132
+ end
133
+
134
+ #
135
+ # Represents the assets of an activity.
136
+ class Asset < Discorb::DiscordModel
137
+ def initialize: (untyped data) -> void
138
+
139
+ # @return [String] The large image ID or URL of the asset.
140
+ attr_reader large_image: String
141
+
142
+ # @return [String] The large text of the activity.
143
+ attr_reader large_text: String
144
+
145
+ # @return [String] The small image ID or URL of the activity.
146
+ attr_reader small_image: String
147
+
148
+ # @return [String] The small text of the activity.
149
+ attr_reader small_text: String
150
+ end
151
+
152
+ #
153
+ # Represents the flags of an activity.
154
+ # ## Flag fields
155
+ # |`1 << 0`|`:instance`|
156
+ # |`1 << 1`|`:join`|
157
+ # |`1 << 2`|`:spectate`|
158
+ # |`1 << 3`|`:join_request`|
159
+ # |`1 << 4`|`:sync`|
160
+ # |`1 << 5`|`:play`|
161
+ class Flag < Discorb::Flag
162
+ attr_accessor instance: bool
163
+ attr_accessor join: bool
164
+ attr_accessor spectate: bool
165
+ attr_accessor join_request: bool
166
+ attr_accessor sync: bool
167
+ attr_accessor play: bool
168
+ end
169
+
170
+ #
171
+ # Represents a secrets of an activity.
172
+ class Secrets < Discorb::DiscordModel
173
+ #
174
+ # Initialize the secrets.
175
+ # @private
176
+ #
177
+ # @param [Hash] data The secrets data.
178
+ def initialize: (Discorb::json data) -> void
179
+
180
+ # @return [String] The join secret of the activity.
181
+ attr_reader join: String
182
+
183
+ # @return [String] The spectate secret of the activity.
184
+ attr_reader spectate: String
185
+
186
+ # @return [String] The match secret of the activity.
187
+ attr_reader match: String
188
+ end
189
+
190
+ #
191
+ # Represents a button of an activity.
192
+ class Button < Discorb::DiscordModel
193
+ #
194
+ # Initialize the button.
195
+ # @private
196
+ #
197
+ # @param [Hash] data The button data.
198
+ def initialize: (Discorb::json data) -> void
199
+
200
+ # @return [String] The text of the button.
201
+ attr_reader label: String
202
+
203
+ # @return [String] The URL of the button.
204
+ attr_reader url: String
205
+ end
206
+ end
207
+
208
+ #
209
+ # Represents a user's client status.
210
+ class ClientStatus < Discorb::DiscordModel
211
+ #
212
+ # Initialize the client status.
213
+ # @private
214
+ #
215
+ # @param [Hash] data The client status data.
216
+ def initialize: (Discorb::json data) -> void
217
+
218
+ # @return [Symbol] The desktop status of the user.
219
+ attr_reader desktop: Symbol
220
+
221
+ # @return [Symbol] The mobile status of the user.
222
+ attr_reader mobile: Symbol
223
+
224
+ # @return [Symbol] The web status of the user.
225
+ attr_reader web: Symbol
226
+
227
+ # @return [Boolean] Whether the user is not offline on desktop.
228
+ attr_reader desktop?: bool
229
+
230
+ # @return [Boolean] Whether the user is not offline on mobile.
231
+ attr_reader mobile?: bool
232
+
233
+ # @return [Boolean] Whether the user is not offline on web.
234
+ attr_reader web?: bool
235
+ end
236
+ end
237
+ end
@@ -0,0 +1,33 @@
1
+ module Discorb
2
+ #
3
+ # Represents a reaction to a message.
4
+ class Reaction < Discorb::DiscordModel
5
+ #
6
+ # Initialize a new reaction.
7
+ # @private
8
+ #
9
+ # @param [Discorb::Message] message The message that this reaction is on.
10
+ # @param [Hash] data The data of the reaction.
11
+ def initialize: (Discorb::Message message, Discorb::json data) -> void
12
+
13
+ #
14
+ # Fetch the user that reacted with this emoji.
15
+ #
16
+ # @param (see Message#fetch_reacted_users)
17
+ #
18
+ # @return [Async::Task<Array<Discorb::User>>] The users that reacted with this emoji.
19
+ def fetch_users: -> Async::Task[::Array[Discorb::User]]
20
+
21
+ # @return [Integer] The number of users that have reacted with this emoji.
22
+ attr_reader count: Integer
23
+
24
+ # @return [Discorb::Emoji, Discorb::PartialEmoji] The emoji that was reacted with.
25
+ attr_reader emoji: Discorb::emoji
26
+
27
+ # @return [Discorb::Message] The message that this reaction is on.
28
+ attr_reader message: Discorb::Message
29
+
30
+ # @return [Boolean] Whether client user reacted with this emoji.
31
+ attr_reader me: bool
32
+ end
33
+ end
@@ -0,0 +1,145 @@
1
+ module Discorb
2
+ #
3
+ # Represents a role in the guild.
4
+ class Role < Discorb::DiscordModel
5
+ include Comparable
6
+
7
+ #
8
+ # Initializes a new role.
9
+ # @private
10
+ #
11
+ # @param [Discorb::Client] client The client.
12
+ # @param [Discorb::Guild] guild The guild the role belongs to.
13
+ # @param [Hash] data The data of the role.
14
+ def initialize: (
15
+ Discorb::Client client,
16
+ Discorb::Guild guild,
17
+ Discorb::json data
18
+ ) -> void
19
+
20
+ def icon: -> (Discorb::Asset | Discorb::emoji | nil)
21
+
22
+ #
23
+ # Compares two roles by their position.
24
+ #
25
+ # @param [Discorb::Role] other The role to compare to.
26
+ #
27
+ # @return [Integer] -1 if the other role is higher, 0 if they are equal, 1 if the other role is lower.
28
+ def <=>: (Discorb::Role other) -> Integer?
29
+
30
+ #
31
+ # Formats the role as a string.
32
+ #
33
+ # @return [String] The formatted string.
34
+ def to_s: -> String
35
+
36
+ def mention: -> String
37
+
38
+ def color?: -> bool
39
+
40
+ def inspect: -> String
41
+
42
+ #
43
+ # Moves the role to a new position.
44
+ # @async
45
+ #
46
+ # @param [Integer] position The new position.
47
+ # @param [String] reason The reason for moving the role.
48
+ #
49
+ # @return [Async::Task<void>] The task.
50
+ def move: (Integer position, ?reason: String?) -> Async::Task[void]
51
+
52
+ #
53
+ # Edits the role.
54
+ # @async
55
+ # @macro edit
56
+ #
57
+ # @param [String] name The new name of the role.
58
+ # @param [Integer] position The new position of the role.
59
+ # @param [Discorb::Color] color The new color of the role.
60
+ # @param [Boolean] hoist Whether the role should be hoisted.
61
+ # @param [Boolean] mentionable Whether the role should be mentionable.
62
+ # @param [Discorb::Image, Discorb::UnicodeEmoji] icon The new icon or emoji of the role.
63
+ # @param [String] reason The reason for editing the role.
64
+ #
65
+ # @return [Async::Task<void>] The task.
66
+ def edit: (
67
+ ?name: String,
68
+ ?position: Integer,
69
+ ?color: Discorb::Color,
70
+ ?hoist: bool,
71
+ ?mentionable: bool,
72
+ ?icon: Discorb::Image | Discorb::UnicodeEmoji,
73
+ ?reason: String?
74
+ ) -> Async::Task[void]
75
+
76
+ #
77
+ # Deletes the role.
78
+ #
79
+ # @param [String] reason The reason for deleting the role.
80
+ #
81
+ # @return [Async::Task<void>] The task.
82
+ def delete!: (?reason: String?) -> Async::Task[void]
83
+
84
+ def tag: -> Discorb::Role::Tag
85
+
86
+ # @return [Discorb::Snowflake] The ID of the role.
87
+ attr_reader id: Discorb::Snowflake
88
+
89
+ # @return [String] The name of the role.
90
+ attr_reader name: String
91
+
92
+ # @return [Discorb::Color] The color of the role.
93
+ attr_reader color: Discorb::Color
94
+
95
+ # @return [Discorb::Permission] The permissions of the role.
96
+ attr_reader permissions: Discorb::Permission
97
+
98
+ # @return [Integer] The position of the role.
99
+ attr_reader position: Integer
100
+
101
+ # @return [Discorb::Guild] The guild this role belongs to.
102
+ attr_reader guild: Discorb::Guild
103
+
104
+ # @return [Boolean] Whether the role is hoisted.
105
+ attr_reader hoist: bool
106
+
107
+ # @return [Boolean] Whether the role is managed.
108
+ attr_reader managed: bool
109
+
110
+ # @return [Boolean] Whether the role is a default role.
111
+ attr_reader mentionable: bool
112
+
113
+ # @return [Discorb::Asset, nil] The icon of the role.
114
+ attr_reader custom_icon: Discorb::Asset?
115
+
116
+ # @return [Discorb::Emoji, nil] The emoji of the role.
117
+ attr_reader emoji: Discorb::Emoji?
118
+
119
+ #
120
+ # Represents a tag of a role.
121
+ class Tag < Discorb::DiscordModel
122
+ #
123
+ # Initializes a new tag.
124
+ # @private
125
+ #
126
+ # @param [Hash] data The data of the tag.
127
+ def initialize: (json data) -> void
128
+
129
+ # @return [Discorb::Snowflake] The ID of the bot that owns the role.
130
+ attr_reader bot_id: Discorb::Snowflake
131
+
132
+ # @return [Discorb::Snowflake] The ID of the integration.
133
+ attr_reader integration_id: Discorb::Snowflake
134
+
135
+ # @return [Boolean] Whether the tag is a premium subscriber role.
136
+ attr_reader premium_subscriber: bool
137
+
138
+ # @return [Boolean] Whether the role is a bot role.
139
+ attr_reader bot?: bool
140
+
141
+ # @return [Boolean] Whether the role is an integration role.
142
+ attr_reader integration?: bool
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,148 @@
1
+ module Discorb
2
+ #
3
+ # Represents an event in guild.
4
+ class ScheduledEvent < Discorb::DiscordModel
5
+ PRIVACY_LEVEL: untyped
6
+ STATUS: untyped
7
+ ENTITY_TYPE: untyped
8
+
9
+ # @!visibility private
10
+ def initialize: (untyped client, untyped data) -> void
11
+
12
+ #
13
+ # Create a scheduled event for the guild.
14
+ # @async
15
+ #
16
+ # @param [:stage_instance, :voice, :external] type The type of event to create.
17
+ # @param [String] name The name of the event.
18
+ # @param [String] description The description of the event.
19
+ # @param [Time] start_time The start time of the event.
20
+ # @param [Time, nil] end_time The end time of the event. Defaults to `nil`.
21
+ # @param [Discorb::Channel, Discorb::Snowflake, nil] channel The channel to run the event in.
22
+ # @param [String, nil] location The location of the event. Defaults to `nil`.
23
+ # @param [:guild_only] privacy_level The privacy level of the event. This must be `:guild_only`.
24
+ # @param [:active, :completed, :canceled] status The status of the event.
25
+ #
26
+ # @return [Async::Task<Discorb::ScheduledEvent>] The event that was created.
27
+ #
28
+ # @see Event#start
29
+ # @see Event#cancel
30
+ # @see Event#complete
31
+ def edit: (
32
+ ?type: Symbol,
33
+ ?name: String,
34
+ ?description: String,
35
+ ?start_time: Time,
36
+ ?end_time: Time?,
37
+ ?privacy_level: Symbol,
38
+ ?location: String?,
39
+ ?channel: (Discorb::Channel | Discorb::Snowflake)?,
40
+ ?status: Symbol
41
+ ) -> Async::Task[Discorb::ScheduledEvent]
42
+
43
+ #
44
+ # Starts the event. Shortcut for `edit(status: :active)`.
45
+ def start: -> untyped
46
+
47
+ #
48
+ # Completes the event. Shortcut for `edit(status: :completed)`.
49
+ def complete: -> untyped
50
+
51
+ #
52
+ # Cancels the event. Shortcut for `edit(status: :canceled)`.
53
+ def cancel: -> untyped
54
+
55
+ #
56
+ # Deletes the event.
57
+ # @async
58
+ #
59
+ # @return [Async::Task<void>] The task.
60
+ def delete!: -> Async::Task[void]
61
+
62
+ #
63
+ # Fetches the event users.
64
+ # @async
65
+ #
66
+ # @note You can fetch all of members by not specifying a parameter.
67
+ #
68
+ # @param [Integer] limit The maximum number of users to fetch. Defaults to `100`.
69
+ # @param [#to_s] after The ID of the user to start fetching from. Defaults to `nil`.
70
+ # @param [#to_s] before The ID of the user to stop fetching at. Defaults to `nil`.
71
+ # @param [Boolean] with_member Whether to include the member object of the event. Defaults to `false`.
72
+ # This should be used for manual fetching of members.
73
+ #
74
+ # @return [Async::Task<Array<Discorb::Member>>] The event users.
75
+ def fetch_users: (
76
+ ?Integer? limit,
77
+ ?before: untyped,
78
+ ?after: untyped,
79
+ ?with_member: bool
80
+ ) -> Async::Task[::Array[Discorb::Member]]
81
+
82
+ # @return [Discorb::Snowflake] The ID of the event.
83
+ attr_reader id: Discorb::Snowflake
84
+
85
+ # @return [String] The name of the event.
86
+ attr_reader name: String
87
+
88
+ # @return [String] The description of the event.
89
+ attr_reader description: String
90
+
91
+ # @return [Time] The time the event starts.
92
+ attr_reader scheduled_start_time: Time
93
+
94
+ # @return [Time] The time the event ends.
95
+ attr_reader scheduled_end_time: Time
96
+
97
+ # @return [:guild_only] The privacy level of the event.
98
+ attr_reader privacy_level: Symbol
99
+
100
+ # @return [:scheduled, :active, :completed, :canceled] The status of the event.
101
+ attr_reader status: Symbol
102
+
103
+ # @return [:stage_instance, :voice, :external] The type of the event.
104
+ attr_reader entity_type: Symbol
105
+
106
+ # @return [Discorb::Snowflake] The ID of the entity the event is for.
107
+ attr_reader entity_id: Discorb::Snowflake
108
+
109
+ # @return [Discorb::ScheduledEvent::Metadata] The metadata of the event.
110
+ attr_reader metadata: Discorb::ScheduledEvent::Metadata
111
+
112
+ # @return [Integer] The user count of the event.
113
+ attr_reader user_count: Integer
114
+
115
+ # @!attribute [r] guild
116
+ # @return [Discorb::Guild, nil] The guild of the event.
117
+ # @!attribute [r] channel
118
+ # @return [Discorb::Channel, nil] The channel of the event.
119
+ # Only present if the event will do in stage instance or voice channel.
120
+ # @!attribute [r] creator
121
+ # @return [Discorb::User] The user who created the event.#
122
+ # @!attribute [r] time
123
+ # @return [Range<Time>] The time range of the event.
124
+ attr_reader guild: untyped
125
+
126
+ # @return [Discorb::Channel, nil] The channel of the event.
127
+ # Only present if the event will do in stage instance or voice channel.
128
+ attr_reader channel: Discorb::Channel?
129
+
130
+ # @return [Discorb::User] The user who created the event.#
131
+ attr_reader creator: Discorb::User
132
+
133
+ # @return [Range<Time>] The time range of the event.
134
+ attr_reader time: ::Range[Time]
135
+
136
+ #
137
+ # Represents the metadata of the event.
138
+ class Metadata
139
+ # @!visibility private
140
+ def initialize: (untyped data) -> void
141
+
142
+ def inspect: -> String
143
+
144
+ # @return [String, nil] The location of the event. Only present if the event is a external event.
145
+ attr_reader location: String?
146
+ end
147
+ end
148
+ end