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,62 @@
1
+ module Discorb
2
+ #
3
+ # Represents a shard.
4
+ class Shard
5
+ #
6
+ # Initializes a new shard.
7
+ # @private
8
+ #
9
+ # @param [Discorb::Client] client The client.
10
+ # @param [Integer] id The ID of the shard.
11
+ # @param [Integer] count The number of shards.
12
+ # @param [Integer] index The index of the shard.
13
+ def initialize: (
14
+ Discorb::Client client,
15
+ Integer id,
16
+ Integer count,
17
+ Integer index
18
+ ) -> void
19
+
20
+ #
21
+ # Starts the shard.
22
+ #
23
+ # @return [void]
24
+ def start: -> void
25
+
26
+ #
27
+ # Stops the shard.
28
+ #
29
+ # @return [void]
30
+ def close!: -> void
31
+
32
+ def inspect: -> String
33
+
34
+ # @return [Integer] The ID of the shard.
35
+ attr_reader id: Integer
36
+
37
+ # @return [Thread] The thread of the shard.
38
+ attr_reader thread: Thread
39
+
40
+ # @return [Logger] The logger of the shard.
41
+ attr_reader logger: Logger
42
+
43
+ # @private
44
+ # @return [Integer] The internal index of the shard.
45
+ attr_reader index: Integer
46
+
47
+ # @private
48
+ attr_accessor status: untyped
49
+
50
+ # @private
51
+ attr_accessor connection: untyped
52
+
53
+ # @private
54
+ attr_accessor session_id: untyped
55
+
56
+ # @private
57
+ attr_accessor next_shard: untyped
58
+
59
+ # @private
60
+ attr_accessor main_task: untyped
61
+ end
62
+ end
@@ -0,0 +1,56 @@
1
+ module Discorb
2
+ #
3
+ # Represents Snowflake of Discord.
4
+ #
5
+ # @see https://discord.com/developers/docs/reference#snowflakes Official Discord API docs
6
+ class Snowflake < String
7
+ #
8
+ # Initialize new snowflake.
9
+ # @private
10
+ #
11
+ # @param [#to_s] value The value of the snowflake.
12
+ def initialize: (untyped value) -> void
13
+
14
+ #
15
+ # Compares snowflake with other object.
16
+ #
17
+ # @param [#to_s] other Object to compare with.
18
+ #
19
+ # @return [Boolean] True if snowflake is equal to other object.
20
+ def ==: (untyped other) -> bool
21
+
22
+ #
23
+ # Alias of {#==}.
24
+ def eql?: (untyped other) -> bool
25
+
26
+ # Return hash of snowflake.
27
+ def hash: -> untyped
28
+
29
+ def inspect: -> String
30
+
31
+ # Timestamp of snowflake.
32
+ #
33
+ # @return [Time] Timestamp of snowflake.
34
+ attr_reader timestamp: Time
35
+
36
+ # Worker ID of snowflake.
37
+ #
38
+ # @return [Integer] Worker ID of snowflake.
39
+ attr_reader worker_id: Integer
40
+
41
+ # Process ID of snowflake.
42
+ #
43
+ # @return [Integer] Process ID of snowflake.
44
+ attr_reader process_id: Integer
45
+
46
+ # Increment of snowflake.
47
+ #
48
+ # @return [Integer] Increment of snowflake.
49
+ attr_reader increment: Integer
50
+
51
+ # Alias of to_s.
52
+ #
53
+ # @return [String] The snowflake.
54
+ attr_reader id: String
55
+ end
56
+ end
@@ -0,0 +1,63 @@
1
+ module Discorb
2
+ #
3
+ # Represents a stage instance of a voice state.
4
+ class StageInstance < Discorb::DiscordModel
5
+ #
6
+ # Initialize a new instance of the StageInstance class.
7
+ # @private
8
+ #
9
+ # @param [Discorb::Client] client The client.
10
+ # @param [Hash] data The data of the stage instance.
11
+ # @param [Boolean] no_cache Whether to disable caching.
12
+ def initialize: (
13
+ Discorb::Client client,
14
+ Discorb::json data,
15
+ ?no_cache: bool
16
+ ) -> void
17
+
18
+ def guild: -> untyped
19
+
20
+ def channel: -> untyped
21
+
22
+ def discoverable?: -> bool
23
+
24
+ def public?: -> bool
25
+
26
+ def guild_only?: -> bool
27
+
28
+ def inspect: -> String
29
+
30
+ #
31
+ # Edits the stage instance.
32
+ # @async
33
+ # @macro edit
34
+ #
35
+ # @param [String] topic The new topic of the stage instance.
36
+ # @param [:public, :guild_only] privacy_level The new privacy level of the stage instance.
37
+ # @param [String] reason The reason for editing the stage instance.
38
+ #
39
+ # @return [Async::Task<void>] The task.
40
+ def edit: (
41
+ ?topic: String,
42
+ ?privacy_level: Symbol,
43
+ ?reason: String?
44
+ ) -> Async::Task[void]
45
+
46
+ #
47
+ # Deletes the stage instance.
48
+ #
49
+ # @param [String] reason The reason for deleting the stage instance.
50
+ #
51
+ # @return [Async::Task<void>] The task.
52
+ def delete!: (?reason: String?) -> Async::Task[void]
53
+
54
+ # @return [Discorb::Snowflake] The ID of the guild this voice state is for.
55
+ attr_reader id: Discorb::Snowflake
56
+
57
+ # @return [String] The topic of the stage instance.
58
+ attr_reader topic: String
59
+
60
+ # @return [:public, :guild_only] The privacy level of the stage instance.
61
+ attr_reader privacy_level: Symbol
62
+ end
63
+ end
@@ -0,0 +1,116 @@
1
+ module Discorb
2
+ #
3
+ # Represents a sticker.
4
+ class Sticker < Discorb::DiscordModel
5
+ STICKER_TYPE: untyped
6
+ STICKER_FORMAT: untyped
7
+
8
+ #
9
+ # Initialize a new sticker.
10
+ # @private
11
+ #
12
+ # @param [Discorb::Client] client The client.
13
+ # @param [Hash] data The sticker data.
14
+ def initialize: (Discorb::Client client, Discorb::json data) -> void
15
+
16
+ # @return [Discorb::Snowflake] The ID of the sticker.
17
+ attr_reader id: Discorb::Snowflake
18
+
19
+ # @return [String] The name of the sticker.
20
+ attr_reader name: String
21
+
22
+ # @return [Array<String>] The tags of the sticker.
23
+ attr_reader tags: ::Array[String]
24
+
25
+ # @return [:official, :guild] The type of sticker.
26
+ attr_reader type: Symbol
27
+
28
+ # @return [:png, :apng, :lottie] The format of the sticker.
29
+ attr_reader format: Symbol
30
+
31
+ # @return [String] The URL of the sticker.
32
+ attr_reader description: String
33
+
34
+ # @return [Discorb::Snowflake] The ID of the sticker pack.
35
+ attr_reader pack_id: Discorb::Snowflake
36
+
37
+ # @return [Integer] The sort value of the sticker.
38
+ attr_reader sort_value: Integer
39
+
40
+ # @return [Discorb::Snowflake] The ID of the guild the sticker is in.
41
+ attr_reader guild_id: Discorb::Snowflake
42
+
43
+ # @return [Discorb::User] The user who created the sticker.
44
+ attr_reader user: Discorb::User
45
+
46
+ # @return [Boolean] Whether the sticker is available.
47
+ attr_reader available: bool
48
+
49
+ #
50
+ # Represents a sticker of guilds.
51
+ class GuildSticker < Discorb::Sticker
52
+ STICKER_TYPE: untyped
53
+ STICKER_FORMAT: untyped
54
+
55
+ #
56
+ # Edits the sticker.
57
+ # @async
58
+ # @macro edit
59
+ #
60
+ # @param [String] name The new name of the sticker.
61
+ # @param [String] description The new description of the sticker.
62
+ # @param [Discorb::emoji] tag The new tags of the sticker.
63
+ # @param [String] reason The reason for the edit.
64
+ #
65
+ # @return [Async::Task<void>] The task.
66
+ def edit: (
67
+ ?name: String,
68
+ ?description: String,
69
+ ?tag: Discorb::emoji,
70
+ ?reason: String
71
+ ) -> Async::Task[void]
72
+
73
+ #
74
+ # Deletes the sticker.
75
+ # @async
76
+ #
77
+ # @param [String] reason The reason for the deletion.
78
+ def delete!: (?reason: String?) -> untyped
79
+
80
+ # @!attribute [r] guild
81
+ # @macro client_cache
82
+ # @return [Discorb::Guild] The guild the sticker is in.
83
+ attr_reader guild: untyped
84
+ end
85
+
86
+ #
87
+ # Represents a sticker pack.
88
+ class Pack < Discorb::DiscordModel
89
+ #
90
+ # Initialize a new sticker pack.
91
+ # @private
92
+ #
93
+ # @param [Discorb::Client] client The client.
94
+ # @param [Hash] data The sticker pack data.
95
+ def initialize: (Discorb::Client client, Discorb::json data) -> void
96
+
97
+ # @return [Discorb::Snowflake] The ID of the sticker pack.
98
+ attr_reader id: Discorb::Snowflake
99
+
100
+ # @return [String] The name of the sticker pack.
101
+ attr_reader name: String
102
+
103
+ # @return [Discorb::Snowflake] The cover sticker of the pack.
104
+ attr_reader cover_sticker_id: Discorb::Snowflake
105
+
106
+ # @return [String] The description of the pack.
107
+ attr_reader description: String
108
+
109
+ # @return [Array<Discorb::Sticker>] The stickers in the pack.
110
+ attr_reader stickers: ::Array[Discorb::Sticker]
111
+
112
+ # @return [Discorb::Asset] The banner of the pack.
113
+ attr_reader banner: Discorb::Asset
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,17 @@
1
+ module Discorb
2
+ #
3
+ # Represents a system channel flag.
4
+ # ## Flag fields
5
+ # |Field|Value|
6
+ # |-|-|
7
+ # |`1 << 0`|`:member_join`|
8
+ # |`1 << 1`|`:server_boost`|
9
+ # |`1 << 2`|`:setup_tips`|
10
+ # |`1 << 3`|`:join_stickers`|
11
+ class SystemChannelFlag < Discorb::Flag
12
+ attr_accessor member_join: bool
13
+ attr_accessor server_boost: bool
14
+ attr_accessor setup_tips: bool
15
+ attr_accessor join_stickers: bool
16
+ end
17
+ end
@@ -0,0 +1,49 @@
1
+ module Discorb
2
+ #
3
+ # Represents a unicode emoji (default emoji) in discord.
4
+ class UnicodeEmoji < Discorb::Emoji
5
+ #
6
+ # Initialize a new unicode emoji.
7
+ #
8
+ # @param [String] name The name of the emoji.
9
+ # @param [Integer] tone The skin tone of the emoji.
10
+ def initialize: (String name, ?tone: Integer) -> void
11
+
12
+ # @return [String] The unicode string of the emoji.
13
+ def to_s: -> String
14
+
15
+ #
16
+ # Format the emoji for URI.
17
+ #
18
+ # @return [String] the formatted emoji.
19
+ def to_uri: -> String
20
+
21
+ def inspect: -> String
22
+
23
+ #
24
+ # Converts the object to a hash.
25
+ # @private
26
+ #
27
+ # @return [Hash] The hash represents the object.
28
+ def to_hash: -> Discorb::json
29
+
30
+ # @return [String] The name of the emoji. (e.g. :grinning:)
31
+ attr_reader name: String
32
+
33
+ # @return [String] The unicode value of the emoji. (e.g. U+1F600)
34
+ attr_reader value: String
35
+
36
+ # @return [Integer] The skin tone of the emoji.
37
+ attr_reader skin_tone: Integer
38
+
39
+ def self.[]: (String name, ?tone: Integer) -> UnicodeEmoji
40
+ end
41
+
42
+ #
43
+ # A table of emoji names and their unicode values.
44
+ module EmojiTable
45
+ DISCORD_TO_UNICODE: Hash[String, String]
46
+ UNICODE_TO_DISCORD: Hash[String, Array[String]]
47
+ SKIN_TONES: Array[String]
48
+ end
49
+ end
@@ -0,0 +1,93 @@
1
+ module Discorb
2
+ #
3
+ # Represents a user of discord.
4
+ class User < Discorb::DiscordModel
5
+ include Discorb::Messageable
6
+
7
+ #
8
+ # Initializes a new user.
9
+ # @private
10
+ #
11
+ # @param [Discorb::Client] client The client.
12
+ # @param [Hash] data The user data.
13
+ def initialize: (Discorb::Client client, json data) -> void
14
+
15
+ #
16
+ # Format the user as `Username#Discriminator` style.
17
+ #
18
+ # @return [String] The formatted username.
19
+ def to_s: -> String
20
+
21
+ def inspect: -> String
22
+
23
+ #
24
+ # Whether the user is a owner of the client.
25
+ # @async
26
+ #
27
+ # @param [Boolean] strict Whether don't allow if the user is a member of the team.
28
+ #
29
+ # @return [Async::Task<Boolean>] Whether the user is a owner of the client.
30
+ def bot_owner?: (?strict: bool) -> Async::Task[bool]
31
+
32
+ # @return [Boolean] Whether the user is verified.
33
+ attr_reader verified: bool
34
+
35
+ # @return [String] The user's username.
36
+ attr_reader username: String
37
+
38
+ # @return [Discorb::Snowflake] The user's ID.
39
+ attr_reader id: Discorb::Snowflake
40
+
41
+ # @return [Discorb::User::Flag] The user's flags.
42
+ attr_reader flag: Discorb::User::Flag
43
+
44
+ # @return [String] The user's discriminator.
45
+ attr_reader discriminator: String
46
+
47
+ # @return [Discorb::Asset, Discorb::DefaultAvatar] The user's avatar.
48
+ attr_reader avatar: Discorb::Asset | Discorb::DefaultAvatar
49
+
50
+ # @return [Boolean] Whether the user is a bot.
51
+ attr_reader bot: bool
52
+
53
+ alias bot? bot
54
+
55
+ # @return [Time] The time the user was created.
56
+ attr_reader created_at: Time
57
+
58
+ # @return [String] The user's mention.
59
+ attr_reader mention: String
60
+
61
+ #
62
+ # Represents the user's flags.
63
+ # ## Flag fields
64
+ # |`1 << 0`|`:discord_employee`|
65
+ # |`1 << 1`|`:partnered_server_owner`|
66
+ # |`1 << 2`|`:hypesquad_events`|
67
+ # |`1 << 3`|`:bug_hunter_level_1`|
68
+ # |`1 << 6`|`:house_bravery`|
69
+ # |`1 << 7`|`:house_brilliance`|
70
+ # |`1 << 8`|`:house_balance`|
71
+ # |`1 << 9`|`:early_supporter`|
72
+ # |`1 << 10`|`:team_user`|
73
+ # |`1 << 14`|`:bug_hunter_level_2`|
74
+ # |`1 << 16`|`:verified_bot`|
75
+ # |`1 << 17`|`:early_verified_bot_developer`|
76
+ # |`1 << 18`|`:discord_certified_moderator`|
77
+ class Flag < Discorb::Flag
78
+ attr_accessor discord_employee: bool
79
+ attr_accessor partnered_server_owner: bool
80
+ attr_accessor hypesquad_events: bool
81
+ attr_accessor bug_hunter_level_1: bool
82
+ attr_accessor house_bravery: bool
83
+ attr_accessor house_brilliance: bool
84
+ attr_accessor house_balance: bool
85
+ attr_accessor early_supporter: bool
86
+ attr_accessor team_user: bool
87
+ attr_accessor bug_hunter_level_2: bool
88
+ attr_accessor verified_bot: bool
89
+ attr_accessor early_verified_bot_developer: bool
90
+ attr_accessor discord_certified_moderato: bool
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,8 @@
1
+ module Discorb
2
+ # @private
3
+ module Utils
4
+ def try: (untyped object, untyped message) -> untyped
5
+
6
+ def self.try: (untyped object, untyped message) -> untyped
7
+ end
8
+ end
@@ -0,0 +1,30 @@
1
+ module Discorb
2
+ #
3
+ # Represents a voice region.
4
+ class VoiceRegion < Discorb::DiscordModel
5
+ #
6
+ # Initialize a new instance of the VoiceRegion class.
7
+ # @private
8
+ #
9
+ # @param [Hash] data The data of the voice region.
10
+ def initialize: (Discorb::json data) -> void
11
+
12
+ # @return [Discorb::Snowflake] The ID of the voice region.
13
+ attr_reader id: Discorb::Snowflake
14
+
15
+ # @return [String] The name of the voice region.
16
+ attr_reader name: String
17
+
18
+ # @return [Boolean] Whether the voice region is VIP.
19
+ attr_reader vip: bool
20
+
21
+ # @return [Boolean] Whether the voice region is optimal.
22
+ attr_reader optimal: bool
23
+
24
+ # @return [Boolean] Whether the voice region is deprecated.
25
+ attr_reader deprecated: bool
26
+
27
+ # @return [Boolean] Whether the voice region is custom.
28
+ attr_reader custom: bool
29
+ end
30
+ end
@@ -0,0 +1,71 @@
1
+ module Discorb
2
+ #
3
+ # Represents a state of user in voice channel.
4
+ class VoiceState < Discorb::DiscordModel
5
+ #
6
+ # Initialize a new voice state.
7
+ # @private
8
+ #
9
+ # @param [Discorb::Client] client The client this voice state belongs to.
10
+ # @param [Hash] data The data of the voice state.
11
+ def initialize: (Discorb::Client client, Discorb::json data) -> void
12
+
13
+ # @return [Discorb::Member] The member associated with this voice state.
14
+ attr_reader member: Discorb::Member
15
+
16
+ # @return [Discorb::Snowflake] The ID of the guild this voice state is for.
17
+ attr_reader session_id: Discorb::Snowflake
18
+
19
+ # @return [Time] The time at which the user requested to speak.
20
+ attr_reader request_to_speak_timestamp: Time
21
+
22
+ # @return [Boolean] Whether the user is deafened.
23
+ attr_reader self_deaf: bool
24
+
25
+ alias self_deaf? self_deaf
26
+
27
+ # @return [Boolean] Whether the user is muted.
28
+ attr_reader self_mute: bool
29
+
30
+ alias self_mute? self_mute
31
+
32
+ # @return [Boolean] Whether the user is streaming.
33
+ attr_reader self_stream: bool
34
+
35
+ alias self_stream? self_stream
36
+
37
+ # @return [Boolean] Whether the user is video-enabled.
38
+ attr_reader self_video: bool
39
+
40
+ alias self_video? self_video
41
+
42
+ # @return [Boolean] Whether the user is suppressed. (Is at audience)
43
+ attr_reader suppress: bool
44
+
45
+ alias suppress? suppress
46
+
47
+ # @return [Boolean] Whether the user is deafened.
48
+ attr_reader deaf?: bool
49
+
50
+ # @return [Boolean] Whether the user is muted.
51
+ attr_reader mute?: bool
52
+
53
+ # @return [Boolean] Whether the user is deafened on the server.
54
+ attr_reader server_deaf?: bool
55
+
56
+ # @return [Boolean] Whether the user is muted on the server.
57
+ attr_reader server_mute?: bool
58
+
59
+ # @macro client_cache
60
+ # @return [Discorb::Guild] The guild this voice state is for.
61
+ attr_reader guild: Discorb::Guild
62
+
63
+ # @macro client_cache
64
+ # @return [Discorb::Channel] The channel this voice state is for.
65
+ attr_reader channel: Discorb::Channel
66
+
67
+ # @macro client_cache
68
+ # @return [Discorb::User] The user this voice state is for.
69
+ attr_reader user: Discorb::User
70
+ end
71
+ end