discorb 0.17.1 → 0.18.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.
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,140 @@
1
+ module Discorb
2
+ #
3
+ # Represents a message component interaction.
4
+ # @abstract
5
+ class MessageComponentInteraction < Discorb::Interaction
6
+ include Discorb::Interaction::SourceResponder
7
+ include Discorb::Interaction::UpdateResponder
8
+ include Discorb::Interaction::ModalResponder
9
+
10
+ #
11
+ # Initialize a new message component interaction.
12
+ # @private
13
+ #
14
+ # @param [Discorb::Client] client The client.
15
+ # @param [Hash] data The data.
16
+ def initialize: (Discorb::Client client, Discorb::json data) -> void
17
+
18
+ #
19
+ # Create a MessageComponentInteraction instance for the given data.
20
+ # @private
21
+ def self.make_interaction: (untyped client, untyped data) -> untyped
22
+
23
+ #
24
+ # Returns the classes under this class.
25
+ # @private
26
+ def self.nested_classes: -> untyped
27
+
28
+ #
29
+ # Response with `MODAL`(`9`).
30
+ #
31
+ # @param [String] title The title of the modal.
32
+ # @param [String] custom_id The custom id of the modal.
33
+ # @param [Array<Discorb::TextInput>] components The text inputs to send.
34
+ #
35
+ # @return [Async::Task<void>] The task.
36
+ def show_modal: (
37
+ String title,
38
+ String custom_id,
39
+ ::Array[Discorb::TextInput] components
40
+ ) -> Async::Task[void]
41
+
42
+ #
43
+ # Response with `DEFERRED_UPDATE_MESSAGE`(`6`).
44
+ # @async
45
+ #
46
+ # @param [Boolean] ephemeral Whether to make the response ephemeral.
47
+ #
48
+ # @return [Async::Task<void>] The task.
49
+ def defer_update: (?ephemeral: bool) -> Async::Task[void]
50
+
51
+ #
52
+ # Response with `UPDATE_MESSAGE`(`7`).
53
+ #
54
+ # @async
55
+ #
56
+ # @param [String] content The content of the response.
57
+ # @param [Boolean] tts Whether to send the message as text-to-speech.
58
+ # @param [Discorb::Embed] embed The embed to send.
59
+ # @param [Array<Discorb::Embed>] embeds The embeds to send. (max: 10)
60
+ # @param [Discorb::AllowedMentions] allowed_mentions The allowed mentions to send.
61
+ # @param [Array<Discorb::Component>, Array<Array<Discorb::Component>>] components The components to send.
62
+ # @param [Boolean] ephemeral Whether to make the response ephemeral.
63
+ #
64
+ # @return [Async::Task<void>] The task.
65
+ def edit: (
66
+ String content,
67
+ ?tts: bool,
68
+ ?embed: Discorb::Embed?,
69
+ ?embeds: ::Array[Discorb::Embed]?,
70
+ ?allowed_mentions: Discorb::AllowedMentions?,
71
+ ?components: (::Array[Discorb::Component]
72
+ | ::Array[::Array[Discorb::Component]])?,
73
+ ?ephemeral: bool
74
+ ) -> Async::Task[void]
75
+
76
+ #
77
+ # Response with `DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE`(`5`).
78
+ #
79
+ # @async
80
+ #
81
+ # @param [Boolean] ephemeral Whether to make the response ephemeral.
82
+ #
83
+ # @return [Async::Task<void>] The task.
84
+ def defer_source: (?ephemeral: bool) -> Async::Task[void]
85
+
86
+ #
87
+ # Response with `CHANNEL_MESSAGE_WITH_SOURCE`(`4`).
88
+ #
89
+ # @async
90
+ #
91
+ # @param [String] content The content of the response.
92
+ # @param [Boolean] tts Whether to send the message as text-to-speech.
93
+ # @param [Discorb::Embed] embed The embed to send.
94
+ # @param [Array<Discorb::Embed>] embeds The embeds to send. (max: 10)
95
+ # @param [Discorb::AllowedMentions] allowed_mentions The allowed mentions to send.
96
+ # @param [Array<Discorb::Component>, Array<Array<Discorb::Component>>] components The components to send.
97
+ # @param [Boolean] ephemeral Whether to make the response ephemeral.
98
+ #
99
+ # @return [Discorb::Interaction::SourceResponder::CallbackMessage, Discorb::Webhook::Message]
100
+ # The callback message.
101
+ def post: (
102
+ ?String? content,
103
+ ?tts: bool,
104
+ ?embed: Discorb::Embed?,
105
+ ?embeds: ::Array[Discorb::Embed]?,
106
+ ?allowed_mentions: Discorb::AllowedMentions?,
107
+ ?components: (::Array[Discorb::Component]
108
+ | ::Array[::Array[Discorb::Component]])?,
109
+ ?ephemeral: bool
110
+ ) -> (Discorb::Interaction::SourceResponder::CallbackMessage
111
+ | Discorb::Webhook::Message)
112
+
113
+ # @return [String] The content of the response.
114
+ attr_reader custom_id: String
115
+
116
+ # @return [Discorb::Message] The target message.
117
+ attr_reader message: Discorb::Message
118
+
119
+ #
120
+ # Represents a button interaction.
121
+ class Button < Discorb::MessageComponentInteraction
122
+ # @return [String] The custom id of the button.
123
+ attr_reader custom_id: String
124
+ end
125
+
126
+ #
127
+ # Represents a select menu interaction.
128
+ class SelectMenu < Discorb::MessageComponentInteraction
129
+ # @return [String] The custom id of the select menu.
130
+ attr_reader custom_id: String
131
+
132
+ # @return [Array<String>] The selected options.
133
+ attr_reader values: ::Array[String]
134
+
135
+ # @!attribute [r] value
136
+ # @return [String] The first selected value.
137
+ attr_reader value: untyped
138
+ end
139
+ end
140
+ end
@@ -0,0 +1,50 @@
1
+ module Discorb
2
+ #
3
+ # Represents a modal interaction.
4
+ class ModalInteraction < Discorb::Interaction
5
+ include Discorb::Interaction::SourceResponder
6
+
7
+ #
8
+ # Response with `DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE`(`5`).
9
+ #
10
+ # @async
11
+ #
12
+ # @param [Boolean] ephemeral Whether to make the response ephemeral.
13
+ #
14
+ # @return [Async::Task<void>] The task.
15
+ def defer_source: (?ephemeral: bool) -> Async::Task[void]
16
+
17
+ #
18
+ # Response with `CHANNEL_MESSAGE_WITH_SOURCE`(`4`).
19
+ #
20
+ # @async
21
+ #
22
+ # @param [String] content The content of the response.
23
+ # @param [Boolean] tts Whether to send the message as text-to-speech.
24
+ # @param [Discorb::Embed] embed The embed to send.
25
+ # @param [Array<Discorb::Embed>] embeds The embeds to send. (max: 10)
26
+ # @param [Discorb::AllowedMentions] allowed_mentions The allowed mentions to send.
27
+ # @param [Array<Discorb::Component>, Array<Array<Discorb::Component>>] components The components to send.
28
+ # @param [Boolean] ephemeral Whether to make the response ephemeral.
29
+ #
30
+ # @return [Discorb::Interaction::SourceResponder::CallbackMessage, Discorb::Webhook::Message]
31
+ # The callback message.
32
+ def post: (
33
+ ?String? content,
34
+ ?tts: bool,
35
+ ?embed: Discorb::Embed?,
36
+ ?embeds: ::Array[Discorb::Embed]?,
37
+ ?allowed_mentions: Discorb::AllowedMentions?,
38
+ ?components: (::Array[Discorb::Component]
39
+ | ::Array[::Array[Discorb::Component]])?,
40
+ ?ephemeral: bool
41
+ ) -> (Discorb::Interaction::SourceResponder::CallbackMessage
42
+ | Discorb::Webhook::Message)
43
+
44
+ # @return [String] The custom id of the modal.
45
+ attr_reader custom_id: String
46
+
47
+ # @return [{String => String}] The contents of the modal.
48
+ attr_reader contents: ::Hash[String, String]
49
+ end
50
+ end
@@ -0,0 +1,157 @@
1
+ module Discorb
2
+ class Interaction < Discorb::DiscordModel
3
+ #
4
+ # A module for response with source.
5
+ module SourceResponder
6
+ #
7
+ # Response with `DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE`(`5`).
8
+ #
9
+ # @async
10
+ #
11
+ # @param [Boolean] ephemeral Whether to make the response ephemeral.
12
+ #
13
+ # @return [Async::Task<void>] The task.
14
+ def defer_source: (?ephemeral: bool) -> Async::Task[void]
15
+
16
+ #
17
+ # Response with `CHANNEL_MESSAGE_WITH_SOURCE`(`4`).
18
+ #
19
+ # @async
20
+ #
21
+ # @param [String] content The content of the response.
22
+ # @param [Boolean] tts Whether to send the message as text-to-speech.
23
+ # @param [Discorb::Embed] embed The embed to send.
24
+ # @param [Array<Discorb::Embed>] embeds The embeds to send. (max: 10)
25
+ # @param [Discorb::AllowedMentions] allowed_mentions The allowed mentions to send.
26
+ # @param [Discorb::Attachment] attachment The attachment to send.
27
+ # @param [Array<Discorb::Attachment>] attachments The attachments to send. (max: 10)
28
+ # @param [Array<Discorb::Component>, Array<Array<Discorb::Component>>] components The components to send.
29
+ # @param [Boolean] ephemeral Whether to make the response ephemeral.
30
+ #
31
+ # @return [Discorb::Interaction::SourceResponder::CallbackMessage, Discorb::Webhook::Message]
32
+ # The callback message.
33
+ def post: (
34
+ ?String? content,
35
+ ?tts: bool,
36
+ ?embed: Discorb::Embed?,
37
+ ?embeds: ::Array[Discorb::Embed]?,
38
+ ?allowed_mentions: Discorb::AllowedMentions?,
39
+ ?attachment: Discorb::Attachment?,
40
+ ?attachments: ::Array[Discorb::Attachment]?,
41
+ ?components: (::Array[Discorb::Component]
42
+ | ::Array[::Array[Discorb::Component]])?,
43
+ ?ephemeral: bool
44
+ ) -> (Discorb::Interaction::SourceResponder::CallbackMessage
45
+ | Discorb::Webhook::Message)
46
+
47
+ #
48
+ # Represents of a callback message of interaction.
49
+ class CallbackMessage
50
+ #
51
+ # Initializes a new instance of CallbackMessage.
52
+ # @private
53
+ #
54
+ # @param [Client] client The client.
55
+ # @param [Hash] data The payload.
56
+ # @param [String] application_id The application ID.
57
+ # @param [String] token The token.
58
+ def initialize: (
59
+ Client client,
60
+ Discorb::json data,
61
+ String application_id,
62
+ String token
63
+ ) -> void
64
+
65
+ #
66
+ # Edits the callback message.
67
+ # @async
68
+ # @macro edit
69
+ #
70
+ # @param [String] content The new content of the message.
71
+ # @param [Discorb::Embed] embed The new embed of the message.
72
+ # @param [Array<Discorb::Embed>] embeds The new embeds of the message.
73
+ # @param [Array<Discorb::Attachment>] attachments The attachments to remain.
74
+ # @param [Discorb::Attachment] file The file to send.
75
+ # @param [Array<Discorb::Attachment>] files The files to send.
76
+ #
77
+ # @return [Async::Task<void>] The task.
78
+ def edit: (
79
+ ?String content,
80
+ ?embed: Discorb::Embed,
81
+ ?embeds: ::Array[Discorb::Embed],
82
+ ?file: Discorb::Attachment,
83
+ ?files: ::Array[Discorb::Attachment],
84
+ ?attachments: ::Array[Discorb::Attachment]
85
+ ) -> Async::Task[void]
86
+
87
+ #
88
+ # Deletes the callback message.
89
+ # @async
90
+ # @note This will fail if the message is ephemeral.
91
+ #
92
+ # @return [Async::Task<void>] The task.
93
+ def delete!: -> Async::Task[void]
94
+
95
+ def inspect: -> String
96
+ end
97
+ end
98
+
99
+ #
100
+ # A module for response with update.
101
+ module UpdateResponder
102
+ #
103
+ # Response with `DEFERRED_UPDATE_MESSAGE`(`6`).
104
+ # @async
105
+ #
106
+ # @param [Boolean] ephemeral Whether to make the response ephemeral.
107
+ #
108
+ # @return [Async::Task<void>] The task.
109
+ def defer_update: (?ephemeral: bool) -> Async::Task[void]
110
+
111
+ #
112
+ # Response with `UPDATE_MESSAGE`(`7`).
113
+ #
114
+ # @async
115
+ #
116
+ # @param [String] content The content of the response.
117
+ # @param [Boolean] tts Whether to send the message as text-to-speech.
118
+ # @param [Discorb::Embed] embed The embed to send.
119
+ # @param [Array<Discorb::Embed>] embeds The embeds to send. (max: 10)
120
+ # @param [Discorb::AllowedMentions] allowed_mentions The allowed mentions to send.
121
+ # @param [Array<Discorb::Component>, Array<Array<Discorb::Component>>] components The components to send.
122
+ # @param [Boolean] ephemeral Whether to make the response ephemeral.
123
+ #
124
+ # @return [Async::Task<void>] The task.
125
+ def edit: (
126
+ String content,
127
+ ?tts: bool,
128
+ ?embed: Discorb::Embed?,
129
+ ?embeds: ::Array[Discorb::Embed]?,
130
+ ?allowed_mentions: Discorb::AllowedMentions?,
131
+ ?attachment: Discorb::Attachment?,
132
+ ?attachments: ::Array[Discorb::Attachment]?,
133
+ ?components: (::Array[Discorb::Component]
134
+ | ::Array[::Array[Discorb::Component]])?,
135
+ ?ephemeral: bool
136
+ ) -> Async::Task[void]
137
+ end
138
+
139
+ #
140
+ # A module for response with modal.
141
+ module ModalResponder
142
+ #
143
+ # Response with `MODAL`(`9`).
144
+ #
145
+ # @param [String] title The title of the modal.
146
+ # @param [String] custom_id The custom id of the modal.
147
+ # @param [Array<Discorb::TextInput>] components The text inputs to send.
148
+ #
149
+ # @return [Async::Task<void>] The task.
150
+ def show_modal: (
151
+ String title,
152
+ String custom_id,
153
+ ::Array[Discorb::TextInput] components
154
+ ) -> Async::Task[void]
155
+ end
156
+ end
157
+ end
@@ -0,0 +1,86 @@
1
+ module Discorb
2
+ #
3
+ # Represents invite of discord.
4
+ class Invite < Discorb::DiscordModel
5
+ TARGET_TYPES: Hash[Integer?, Symbol]
6
+
7
+ #
8
+ # Initialize a new invite.
9
+ # @private
10
+ #
11
+ # @param [Discorb::Client] client The client.
12
+ # @param [Hash] data The data of invite.
13
+ # @param [Boolean] gateway Whether the data is from gateway.
14
+ def initialize: (
15
+ Discorb::Client client,
16
+ Discorb::json data,
17
+ bool gateway
18
+ ) -> void
19
+
20
+ # Delete the invite.
21
+ # @async
22
+ # @return [Async::Task<void>] The task.
23
+ def delete!: (?reason: String) -> Async::Task[void]
24
+
25
+ # @return [String] The code of invite.
26
+ attr_reader code: String
27
+
28
+ # @return [:voice, :stream, :guild] The type of invite.
29
+ attr_reader target_type: Symbol
30
+
31
+ # @return [User] The user of invite.
32
+ attr_reader target_user: User
33
+
34
+ # @return [Integer] The approximate number of online users of invite.
35
+ attr_reader approximate_presence_count: Integer
36
+
37
+ # @return [Integer] The approximate number of members of invite.
38
+ attr_reader approximate_member_count: Integer
39
+
40
+ # @return [Time] The time when invite expires.
41
+ # @return [nil] The invite never expires.
42
+ # @macro [new] nometa
43
+ # @return [nil] The invite doesn't have metadata.
44
+ attr_reader expires_at: Time?
45
+
46
+ # @return [Integer] The number of uses of invite.
47
+ # @macro nometa
48
+ attr_reader uses: Integer?
49
+
50
+ # @return [Integer] The maximum number of uses of invite.
51
+ # @macro nometa
52
+ attr_reader max_uses: Integer?
53
+
54
+ # @return [Integer] Duration of invite in seconds.
55
+ # @macro nometa
56
+ attr_reader max_age: Integer?
57
+
58
+ # @return [Time] The time when invite was created.
59
+ # @macro nometa
60
+ attr_reader created_at: Time?
61
+
62
+ # Channel of the invite.
63
+ #
64
+ # @return [Discorb::Channel] Channel of invite.
65
+ # @macro client_cache
66
+ attr_reader channel: Discorb::Channel?
67
+
68
+ # Guild of the invite.
69
+ #
70
+ # @return [Discorb::Guild] Guild of invite.
71
+ # @macro client_cache
72
+ attr_reader guild: Discorb::Guild?
73
+
74
+ # Number of remaining uses of invite.
75
+ # @return [Integer] Number of remaining uses of invite.
76
+ attr_reader remain_uses: Integer
77
+
78
+ # Full url of invite.
79
+ # @return [String] Full url of invite.
80
+ attr_reader url: String
81
+
82
+ # Whether the invite is temporary.
83
+ # @return [Boolean]
84
+ attr_reader temporary?: bool
85
+ end
86
+ end
@@ -0,0 +1,187 @@
1
+ module Discorb
2
+ #
3
+ # Represents a member of a guild.
4
+ class Member < Discorb::User
5
+ #
6
+ # Initialize a new instance of the member.
7
+ # @private
8
+ #
9
+ # @param [Discorb::Client] client The client.
10
+ # @param [Discorb::Snowflake] guild_id The ID of the guild.
11
+ # @param [Hash] user_data The data of the user.
12
+ # @param [Hash] member_data The data of the member.
13
+ def initialize: (
14
+ Discorb::Client client,
15
+ Discorb::Snowflake guild_id,
16
+ Discorb::json user_data,
17
+ Discorb::json member_data
18
+ ) -> void
19
+
20
+ #
21
+ # Format the member to `Username#Discriminator` style.
22
+ #
23
+ # @return [String] The formatted member.
24
+ def to_s: -> String
25
+
26
+ def inspect: -> String
27
+
28
+ #
29
+ # Add a role to the member.
30
+ # @async
31
+ #
32
+ # @param [Discorb::Role] role The role to add.
33
+ # @param [String] reason The reason for the action.
34
+ #
35
+ # @return [Async::Task<void>] The task.
36
+ def add_role: (Discorb::Role role, ?reason: String?) -> Async::Task[void]
37
+
38
+ #
39
+ # Remove a role to the member.
40
+ # @async
41
+ #
42
+ # @param [Discorb::Role] role The role to add.
43
+ # @param [String] reason The reason for the action.
44
+ #
45
+ # @return [Async::Task<void>] The task.
46
+ def remove_role: (Discorb::Role role, ?reason: String?) -> Async::Task[void]
47
+
48
+ #
49
+ # Edit the member.
50
+ # @async
51
+ # @macro edit
52
+ #
53
+ # @param [String] nick The nickname of the member.
54
+ # @param [Discorb::Role] role The roles of the member.
55
+ # @param [Boolean] mute Whether the member is muted.
56
+ # @param [Boolean] deaf Whether the member is deafened.
57
+ # @param [Discorb::StageChannel] channel The channel the member is moved to.
58
+ # @param [Time, nil] communication_disabled_until The time the member is timed out. Set to `nil` to end the timeout.
59
+ # @param [Time, nil] timeout_until Alias of `communication_disabled_until`.
60
+ # @param [String] reason The reason for the action.
61
+ #
62
+ # @return [Async::Task<void>] The task.
63
+ def edit: (
64
+ ?nick: String,
65
+ ?role: Discorb::Role,
66
+ ?mute: bool,
67
+ ?deaf: bool,
68
+ ?channel: Discorb::StageChannel,
69
+ ?communication_disabled_until: Time?,
70
+ ?timeout_until: Time?,
71
+ ?reason: String?
72
+ ) -> Async::Task[void]
73
+
74
+ #
75
+ # Timeout the member.
76
+ # @async
77
+ #
78
+ # @param [Time] time The time until the member is timeout.
79
+ # @param [String] reason The reason for the action.
80
+ #
81
+ # @return [Async::Task<void>] The task.
82
+ def timeout: (Time time, ?reason: String?) -> Async::Task[void]
83
+
84
+ #
85
+ # Kick the member.
86
+ # @async
87
+ #
88
+ # @param [String] reason The reason for the action.
89
+ #
90
+ # @return [Async::Task<void>] The task.
91
+ def kick: (?reason: String?) -> Async::Task[void]
92
+
93
+ #
94
+ # Ban the member.
95
+ # @async
96
+ #
97
+ # @param [Integer] delete_message_days The number of days to delete messages.
98
+ # @param [String] reason The reason for the action.
99
+ #
100
+ # @return [Async::Task<Discorb::Guild::Ban>] The ban.
101
+ def ban: (
102
+ ?delete_message_days: Integer,
103
+ ?reason: String?
104
+ ) -> Async::Task[Discorb::Guild::Ban]
105
+
106
+ #
107
+ # Checks if the member can manage the given role.
108
+ #
109
+ # @param [Discorb::Role] role The role.
110
+ #
111
+ # @return [Boolean] `true` if the member can manage the role.
112
+ def can_manage?: (Discorb::Role role) -> bool
113
+
114
+ # @return [Time] The time the member boosted the guild.
115
+ attr_reader premium_since: Time
116
+
117
+ # @return [String] The nickname of the member.
118
+ # @return [nil] If the member has no nickname.
119
+ attr_reader nick: String?
120
+
121
+ # @return [Time] The time the member joined the guild.
122
+ attr_reader joined_at: Time
123
+
124
+ # @return [Discorb::Asset] The custom avatar of the member.
125
+ # @return [nil] If the member has no custom avatar.
126
+ attr_reader custom_avatar: Discorb::Asset?
127
+
128
+ # @return [Discorb::Asset] The display avatar of the member.
129
+ attr_reader display_avatar: Discorb::Asset | Discorb::DefaultAvatar
130
+
131
+ # @return [Boolean] Whether the member is muted.
132
+ attr_reader mute: bool
133
+
134
+ # @return [Boolean] Whether the member is deafened.
135
+ attr_reader deaf: bool
136
+
137
+ # @return [Boolean] Whether the member is pending (Not passed member screening).
138
+ attr_reader pending: bool
139
+
140
+ # @return [String] The display name of the member.
141
+ attr_reader name: String
142
+
143
+ # @return [String] The mention of the member.
144
+ attr_reader mention: String
145
+
146
+ # @return [Discorb::VoiceState] The voice state of the member.
147
+ attr_reader voice_state: Discorb::VoiceState
148
+
149
+ # @macro client_cache
150
+ # @return [Array<Discorb::Role>] The roles of the member.
151
+ attr_reader roles: ::Array[Discorb::Role]?
152
+
153
+ # @macro client_cache
154
+ # @return [Discorb::Guild] The guild the member is in.
155
+ attr_reader guild: Discorb::Guild?
156
+
157
+ # @macro client_cache
158
+ # @return [Discorb::Role] The hoisted role of the member.
159
+ # @return [nil] If the member has no hoisted role.
160
+ attr_reader hoisted_role: Discorb::Role?
161
+
162
+ # @return [Boolean] Whether the member has a hoisted role.
163
+ attr_reader hoisted?: bool
164
+
165
+ # @return [Discorb::Permission] The permissions of the member.
166
+ attr_reader permissions: Discorb::Permission
167
+
168
+ # @macro client_cache
169
+ # @return [Discorb::Presence] The presence of the member.
170
+ attr_reader presence: Discorb::Presence?
171
+
172
+ # @macro client_cache
173
+ # @return [Discorb::Presence::Activity] The activity of the member. It's from the {#presence}.
174
+ attr_reader activity: Discorb::Presence::Activity?
175
+
176
+ # @macro client_cache
177
+ # @return [Array<Discorb::Presence::Activity>] The activities of the member. It's from the {#presence}.
178
+ attr_reader activities: ::Array[Discorb::Presence::Activity]?
179
+
180
+ # @macro client_cache
181
+ # @return [Symbol] The status of the member. It's from the {#presence}.
182
+ attr_reader status: Symbol?
183
+
184
+ # @return [Boolean] Whether the member is the owner of the guild.
185
+ attr_reader owner?: bool
186
+ end
187
+ end