onyxcord 1.1.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 (133) hide show
  1. checksums.yaml +7 -0
  2. data/.devcontainer/Dockerfile +13 -0
  3. data/.devcontainer/devcontainer.json +29 -0
  4. data/.devcontainer/postcreate.sh +4 -0
  5. data/.github/CONTRIBUTING.md +13 -0
  6. data/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  7. data/.github/ISSUE_TEMPLATE/feature_request.md +24 -0
  8. data/.github/pull_request_template.md +37 -0
  9. data/.github/workflows/ci.yml +78 -0
  10. data/.github/workflows/codeql.yml +65 -0
  11. data/.github/workflows/deploy.yml +54 -0
  12. data/.github/workflows/release.yml +51 -0
  13. data/.gitignore +16 -0
  14. data/.markdownlint.json +4 -0
  15. data/.overcommit.yml +7 -0
  16. data/.rspec +2 -0
  17. data/.rubocop.yml +129 -0
  18. data/.yardopts +1 -0
  19. data/CHANGELOG.md +0 -0
  20. data/Gemfile +7 -0
  21. data/LICENSE.txt +21 -0
  22. data/README.md +305 -0
  23. data/Rakefile +17 -0
  24. data/bin/console +15 -0
  25. data/bin/setup +7 -0
  26. data/lib/onyxcord/allowed_mentions.rb +43 -0
  27. data/lib/onyxcord/api/application.rb +316 -0
  28. data/lib/onyxcord/api/channel.rb +700 -0
  29. data/lib/onyxcord/api/interaction.rb +67 -0
  30. data/lib/onyxcord/api/invite.rb +44 -0
  31. data/lib/onyxcord/api/server.rb +775 -0
  32. data/lib/onyxcord/api/user.rb +158 -0
  33. data/lib/onyxcord/api/webhook.rb +163 -0
  34. data/lib/onyxcord/api.rb +335 -0
  35. data/lib/onyxcord/await.rb +51 -0
  36. data/lib/onyxcord/bot.rb +1971 -0
  37. data/lib/onyxcord/cache.rb +326 -0
  38. data/lib/onyxcord/colour_rgb.rb +43 -0
  39. data/lib/onyxcord/commands/command_bot.rb +511 -0
  40. data/lib/onyxcord/commands/container.rb +112 -0
  41. data/lib/onyxcord/commands/events.rb +11 -0
  42. data/lib/onyxcord/commands/parser.rb +327 -0
  43. data/lib/onyxcord/commands/rate_limiter.rb +144 -0
  44. data/lib/onyxcord/configuration.rb +125 -0
  45. data/lib/onyxcord/container.rb +988 -0
  46. data/lib/onyxcord/data/activity.rb +271 -0
  47. data/lib/onyxcord/data/application.rb +341 -0
  48. data/lib/onyxcord/data/attachment.rb +91 -0
  49. data/lib/onyxcord/data/audit_logs.rb +438 -0
  50. data/lib/onyxcord/data/avatar_decoration.rb +26 -0
  51. data/lib/onyxcord/data/call.rb +22 -0
  52. data/lib/onyxcord/data/channel.rb +1355 -0
  53. data/lib/onyxcord/data/channel_tag.rb +69 -0
  54. data/lib/onyxcord/data/collectibles.rb +47 -0
  55. data/lib/onyxcord/data/component.rb +583 -0
  56. data/lib/onyxcord/data/embed.rb +258 -0
  57. data/lib/onyxcord/data/emoji.rb +123 -0
  58. data/lib/onyxcord/data/install_params.rb +24 -0
  59. data/lib/onyxcord/data/integration.rb +144 -0
  60. data/lib/onyxcord/data/interaction.rb +1141 -0
  61. data/lib/onyxcord/data/invite.rb +137 -0
  62. data/lib/onyxcord/data/member.rb +528 -0
  63. data/lib/onyxcord/data/message.rb +612 -0
  64. data/lib/onyxcord/data/message_activity.rb +41 -0
  65. data/lib/onyxcord/data/overwrite.rb +109 -0
  66. data/lib/onyxcord/data/poll.rb +365 -0
  67. data/lib/onyxcord/data/primary_server.rb +60 -0
  68. data/lib/onyxcord/data/profile.rb +79 -0
  69. data/lib/onyxcord/data/reaction.rb +64 -0
  70. data/lib/onyxcord/data/recipient.rb +34 -0
  71. data/lib/onyxcord/data/role.rb +449 -0
  72. data/lib/onyxcord/data/role_connection_data.rb +69 -0
  73. data/lib/onyxcord/data/role_subscription.rb +41 -0
  74. data/lib/onyxcord/data/scheduled_event.rb +513 -0
  75. data/lib/onyxcord/data/server.rb +1614 -0
  76. data/lib/onyxcord/data/server_preview.rb +68 -0
  77. data/lib/onyxcord/data/snapshot.rb +112 -0
  78. data/lib/onyxcord/data/team.rb +98 -0
  79. data/lib/onyxcord/data/timestamp.rb +69 -0
  80. data/lib/onyxcord/data/user.rb +324 -0
  81. data/lib/onyxcord/data/voice_region.rb +46 -0
  82. data/lib/onyxcord/data/voice_state.rb +41 -0
  83. data/lib/onyxcord/data/webhook.rb +238 -0
  84. data/lib/onyxcord/data.rb +57 -0
  85. data/lib/onyxcord/errors.rb +246 -0
  86. data/lib/onyxcord/event_executor.rb +80 -0
  87. data/lib/onyxcord/events/await.rb +48 -0
  88. data/lib/onyxcord/events/bans.rb +60 -0
  89. data/lib/onyxcord/events/channels.rb +225 -0
  90. data/lib/onyxcord/events/generic.rb +129 -0
  91. data/lib/onyxcord/events/guilds.rb +269 -0
  92. data/lib/onyxcord/events/integrations.rb +100 -0
  93. data/lib/onyxcord/events/interactions.rb +624 -0
  94. data/lib/onyxcord/events/invites.rb +127 -0
  95. data/lib/onyxcord/events/lifetime.rb +31 -0
  96. data/lib/onyxcord/events/members.rb +110 -0
  97. data/lib/onyxcord/events/message.rb +399 -0
  98. data/lib/onyxcord/events/polls.rb +118 -0
  99. data/lib/onyxcord/events/presence.rb +131 -0
  100. data/lib/onyxcord/events/raw.rb +74 -0
  101. data/lib/onyxcord/events/reactions.rb +218 -0
  102. data/lib/onyxcord/events/roles.rb +87 -0
  103. data/lib/onyxcord/events/scheduled_events.rb +171 -0
  104. data/lib/onyxcord/events/threads.rb +100 -0
  105. data/lib/onyxcord/events/typing.rb +73 -0
  106. data/lib/onyxcord/events/voice_server_update.rb +48 -0
  107. data/lib/onyxcord/events/voice_state_update.rb +106 -0
  108. data/lib/onyxcord/events/webhooks.rb +65 -0
  109. data/lib/onyxcord/gateway.rb +890 -0
  110. data/lib/onyxcord/id_object.rb +39 -0
  111. data/lib/onyxcord/light/data.rb +62 -0
  112. data/lib/onyxcord/light/integrations.rb +73 -0
  113. data/lib/onyxcord/light/light_bot.rb +58 -0
  114. data/lib/onyxcord/light.rb +8 -0
  115. data/lib/onyxcord/logger.rb +120 -0
  116. data/lib/onyxcord/message_components.rb +70 -0
  117. data/lib/onyxcord/paginator.rb +60 -0
  118. data/lib/onyxcord/permissions.rb +255 -0
  119. data/lib/onyxcord/rate_limiter/gateway.rb +42 -0
  120. data/lib/onyxcord/rate_limiter/rest.rb +89 -0
  121. data/lib/onyxcord/version.rb +7 -0
  122. data/lib/onyxcord/voice/encoder.rb +115 -0
  123. data/lib/onyxcord/voice/network.rb +380 -0
  124. data/lib/onyxcord/voice/opcodes.rb +29 -0
  125. data/lib/onyxcord/voice/sodium.rb +157 -0
  126. data/lib/onyxcord/voice/timer.rb +19 -0
  127. data/lib/onyxcord/voice/voice_bot.rb +386 -0
  128. data/lib/onyxcord/webhooks.rb +14 -0
  129. data/lib/onyxcord/websocket.rb +62 -0
  130. data/lib/onyxcord.rb +180 -0
  131. data/onyxcord-webhooks.gemspec +30 -0
  132. data/onyxcord.gemspec +50 -0
  133. metadata +421 -0
@@ -0,0 +1,316 @@
1
+ # frozen_string_literal: true
2
+
3
+ # API calls for slash commands.
4
+ module OnyxCord::API::Application
5
+ module_function
6
+
7
+ # Get a list of global application commands.
8
+ # https://discord.com/developers/docs/interactions/slash-commands#get-global-application-commands
9
+ def get_global_commands(token, application_id)
10
+ OnyxCord::API.request(
11
+ :applications_aid_commands,
12
+ nil,
13
+ :get,
14
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/commands",
15
+ Authorization: token
16
+ )
17
+ end
18
+
19
+ # Get a global application command by ID.
20
+ # https://discord.com/developers/docs/interactions/slash-commands#get-global-application-command
21
+ def get_global_command(token, application_id, command_id)
22
+ OnyxCord::API.request(
23
+ :applications_aid_commands_cid,
24
+ nil,
25
+ :get,
26
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/commands/#{command_id}",
27
+ Authorization: token
28
+ )
29
+ end
30
+
31
+ # Create a global application command.
32
+ # https://discord.com/developers/docs/interactions/slash-commands#create-global-application-command
33
+ def create_global_command(token, application_id, name, description, options = [], default_permission = nil, type = 1, default_member_permissions = nil, contexts = nil, nsfw = false, integration_types = nil)
34
+ OnyxCord::API.request(
35
+ :applications_aid_commands,
36
+ nil,
37
+ :post,
38
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/commands",
39
+ { name: name, description: description, options: options, default_permission: default_permission, type: type, default_member_permissions: default_member_permissions, contexts: contexts, nsfw: nsfw, integration_types: integration_types }.to_json,
40
+ Authorization: token,
41
+ content_type: :json
42
+ )
43
+ end
44
+
45
+ # Edit a global application command.
46
+ # https://discord.com/developers/docs/interactions/slash-commands#edit-global-application-command
47
+ def edit_global_command(token, application_id, command_id, name = nil, description = nil, options = nil, default_permission = nil, type = 1, default_member_permissions = nil, contexts = nil, nsfw = nil, integration_types = nil)
48
+ OnyxCord::API.request(
49
+ :applications_aid_commands_cid,
50
+ nil,
51
+ :patch,
52
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/commands/#{command_id}",
53
+ { name: name, description: description, options: options, default_permission: default_permission, type: type, default_member_permissions: default_member_permissions, contexts: contexts, nsfw: nsfw, integration_types: integration_types }.compact.to_json,
54
+ Authorization: token,
55
+ content_type: :json
56
+ )
57
+ end
58
+
59
+ # Delete a global application command.
60
+ # https://discord.com/developers/docs/interactions/slash-commands#delete-global-application-command
61
+ def delete_global_command(token, application_id, command_id)
62
+ OnyxCord::API.request(
63
+ :applications_aid_commands_cid,
64
+ nil,
65
+ :delete,
66
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/commands/#{command_id}",
67
+ Authorization: token
68
+ )
69
+ end
70
+
71
+ # Set global application commands in bulk.
72
+ # https://discord.com/developers/docs/interactions/slash-commands#bulk-overwrite-global-application-commands
73
+ def bulk_overwrite_global_commands(token, application_id, commands)
74
+ OnyxCord::API.request(
75
+ :applications_aid_commands,
76
+ nil,
77
+ :put,
78
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/commands",
79
+ commands.to_json,
80
+ Authorization: token,
81
+ content_type: :json
82
+ )
83
+ end
84
+
85
+ # Get a guild's commands for an application.
86
+ # https://discord.com/developers/docs/interactions/slash-commands#get-guild-application-commands
87
+ def get_guild_commands(token, application_id, guild_id)
88
+ OnyxCord::API.request(
89
+ :applications_aid_guilds_gid_commands,
90
+ guild_id,
91
+ :get,
92
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/guilds/#{guild_id}/commands",
93
+ Authorization: token
94
+ )
95
+ end
96
+
97
+ # Get a guild command by ID.
98
+ # https://discord.com/developers/docs/interactions/slash-commands#get-guild-application-command
99
+ def get_guild_command(token, application_id, guild_id, command_id)
100
+ OnyxCord::API.request(
101
+ :applications_aid_guilds_gid_commands_cid,
102
+ guild_id,
103
+ :get,
104
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/guilds/#{guild_id}/commands/#{command_id}",
105
+ Authorization: token
106
+ )
107
+ end
108
+
109
+ # Create an application command for a guild.
110
+ # https://discord.com/developers/docs/interactions/slash-commands#create-guild-application-command
111
+ def create_guild_command(token, application_id, guild_id, name, description, options = nil, default_permission = nil, type = 1, default_member_permissions = nil, contexts = nil, nsfw = false)
112
+ OnyxCord::API.request(
113
+ :applications_aid_guilds_gid_commands,
114
+ guild_id,
115
+ :post,
116
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/guilds/#{guild_id}/commands",
117
+ { name: name, description: description, options: options, default_permission: default_permission, type: type, default_member_permissions: default_member_permissions, contexts: contexts, nsfw: nsfw }.to_json,
118
+ Authorization: token,
119
+ content_type: :json
120
+ )
121
+ end
122
+
123
+ # Edit an application command for a guild.
124
+ # https://discord.com/developers/docs/interactions/slash-commands#edit-guild-application-command
125
+ def edit_guild_command(token, application_id, guild_id, command_id, name = nil, description = nil, options = nil, default_permission = nil, type = 1, default_member_permissions = nil, contexts = nil, nsfw = nil)
126
+ OnyxCord::API.request(
127
+ :applications_aid_guilds_gid_commands_cid,
128
+ guild_id,
129
+ :patch,
130
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/guilds/#{guild_id}/commands/#{command_id}",
131
+ { name: name, description: description, options: options, default_permission: default_permission, type: type, default_member_permissions: default_member_permissions, contexts: contexts, nsfw: nsfw }.compact.to_json,
132
+ Authorization: token,
133
+ content_type: :json
134
+ )
135
+ end
136
+
137
+ # Delete an application command for a guild.
138
+ # https://discord.com/developers/docs/interactions/slash-commands#delete-guild-application-command
139
+ def delete_guild_command(token, application_id, guild_id, command_id)
140
+ OnyxCord::API.request(
141
+ :applications_aid_guilds_gid_commands_cid,
142
+ guild_id,
143
+ :delete,
144
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/guilds/#{guild_id}/commands/#{command_id}",
145
+ Authorization: token
146
+ )
147
+ end
148
+
149
+ # Set guild commands in bulk.
150
+ # https://discord.com/developers/docs/interactions/slash-commands#bulk-overwrite-guild-application-commands
151
+ def bulk_overwrite_guild_commands(token, application_id, guild_id, commands)
152
+ OnyxCord::API.request(
153
+ :applications_aid_guilds_gid_commands,
154
+ guild_id,
155
+ :put,
156
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/guilds/#{guild_id}/commands",
157
+ commands.to_json,
158
+ Authorization: token,
159
+ content_type: :json
160
+ )
161
+ end
162
+
163
+ # Get the permissions for a specific guild command.
164
+ # https://discord.com/developers/docs/interactions/slash-commands#get-application-command-permissions
165
+ def get_guild_command_permissions(token, application_id, guild_id)
166
+ OnyxCord::API.request(
167
+ :applications_aid_guilds_gid_commands_permissions,
168
+ guild_id,
169
+ :get,
170
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/guilds/#{guild_id}/commands/permissions",
171
+ Authorization: token
172
+ )
173
+ end
174
+
175
+ # Edit the permissions for a specific guild command.
176
+ # https://discord.com/developers/docs/interactions/slash-commands#edit-application-command-permissions
177
+ def edit_guild_command_permissions(token, application_id, guild_id, command_id, permissions)
178
+ OnyxCord::API.request(
179
+ :applications_aid_guilds_gid_commands_cid_permissions,
180
+ guild_id,
181
+ :put,
182
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/guilds/#{guild_id}/commands/#{command_id}/permissions",
183
+ { permissions: permissions }.to_json,
184
+ Authorization: token,
185
+ content_type: :json
186
+ )
187
+ end
188
+
189
+ # Edit permissions for all commands in a guild.
190
+ # https://discord.com/developers/docs/interactions/slash-commands#batch-edit-application-command-permissions
191
+ def batch_edit_command_permissions(token, application_id, guild_id, permissions)
192
+ OnyxCord::API.request(
193
+ :applications_aid_guilds_gid_commands_cid_permissions,
194
+ guild_id,
195
+ :put,
196
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/guilds/#{guild_id}/commands/permissions",
197
+ permissions.to_json,
198
+ Authorization: token,
199
+ content_type: :json
200
+ )
201
+ end
202
+
203
+ # Get all of the permissions for the commands in a guild.
204
+ # https://discord.com/developers/docs/interactions/application-commands#get-guild-application-command-permissions
205
+ def get_guild_application_command_permissions(token, application_id, guild_id)
206
+ OnyxCord::API.request(
207
+ :applications_aid_guilds_gid_commands_permissions,
208
+ guild_id,
209
+ :get,
210
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/guilds/#{guild_id}/commands/permissions",
211
+ Authorization: token
212
+ )
213
+ end
214
+
215
+ # Get the permissions for a specific command in a guild.
216
+ # https://discord.com/developers/docs/interactions/application-commands#get-application-command-permissions
217
+ def get_application_command_permissions(token, application_id, guild_id, command_id)
218
+ OnyxCord::API.request(
219
+ :applications_aid_guilds_gid_commands_cid_permissions,
220
+ guild_id,
221
+ :get,
222
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/guilds/#{guild_id}/commands/#{command_id}/permissions",
223
+ Authorization: token
224
+ )
225
+ end
226
+
227
+ # Get a list of application emojis.
228
+ # https://discord.com/developers/docs/resources/emoji#list-application-emojis
229
+ def list_application_emojis(token, application_id)
230
+ OnyxCord::API.request(
231
+ :applications_aid_emojis,
232
+ application_id,
233
+ :get,
234
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/emojis",
235
+ Authorization: token
236
+ )
237
+ end
238
+
239
+ # Get an application emoji by ID.
240
+ # https://discord.com/developers/docs/resources/emoji#get-application-emoji
241
+ def get_application_emoji(token, application_id, emoji_id)
242
+ OnyxCord::API.request(
243
+ :applications_aid_emojis_eid,
244
+ application_id,
245
+ :get,
246
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/emojis/#{emoji_id}",
247
+ Authorization: token
248
+ )
249
+ end
250
+
251
+ # Create an application emoji.
252
+ # https://discord.com/developers/docs/resources/emoji#create-application-emoji
253
+ def create_application_emoji(token, application_id, name, image)
254
+ OnyxCord::API.request(
255
+ :applications_aid_emojis,
256
+ application_id,
257
+ :post,
258
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/emojis",
259
+ { name: name, image: image }.to_json,
260
+ Authorization: token,
261
+ content_type: :json
262
+ )
263
+ end
264
+
265
+ # Edit an application emoji.
266
+ # https://discord.com/developers/docs/resources/emoji#modify-application-emoji
267
+ def edit_application_emoji(token, application_id, emoji_id, name)
268
+ OnyxCord::API.request(
269
+ :applications_aid_emojis_eid,
270
+ application_id,
271
+ :patch,
272
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/emojis/#{emoji_id}",
273
+ { name: name }.to_json,
274
+ Authorization: token,
275
+ content_type: :json
276
+ )
277
+ end
278
+
279
+ # Delete an application emoji.
280
+ # https://discord.com/developers/docs/resources/emoji#delete-application-emoji
281
+ def delete_application_emoji(token, application_id, emoji_id)
282
+ OnyxCord::API.request(
283
+ :applications_aid_emojis_eid,
284
+ application_id,
285
+ :delete,
286
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/emojis/#{emoji_id}",
287
+ Authorization: token
288
+ )
289
+ end
290
+
291
+ # Edit the current application for the requesting bot user.
292
+ # https://discord.com/developers/docs/resources/application#edit-current-application
293
+ def update_current_application(token, custom_install_url: :undef, description: :undef, role_connections_verification_url: :undef, install_params: :undef, integration_types_config: :undef, flags: :undef, interactions_endpoint_url: :undef, tags: :undef, event_webhooks_url: :undef, event_webhooks_status: :undef, event_webhooks_types: :undef, icon: :undef, cover_image: :undef)
294
+ OnyxCord::API.request(
295
+ :applications_me,
296
+ nil,
297
+ :patch,
298
+ "#{OnyxCord::API.api_base}/applications/@me",
299
+ { custom_install_url:, description:, role_connections_verification_url:, install_params:, integration_types_config:, flags:, interactions_endpoint_url:, tags:, event_webhooks_url:, event_webhooks_status:, event_webhooks_types:, icon:, cover_image: }.reject { |_, value| value == :undef }.to_json,
300
+ Authorization: token,
301
+ content_type: :json
302
+ )
303
+ end
304
+
305
+ # Get a list of role connection metadata records.
306
+ # https://discord.com/developers/docs/resources/application-role-connection-metadata#get-application-role-connection-metadata-records
307
+ def get_application_role_connection_metadata_records(token, application_id)
308
+ OnyxCord::API.request(
309
+ :applications_aid_role_connections_metadata,
310
+ nil,
311
+ :get,
312
+ "#{OnyxCord::API.api_base}/applications/#{application_id}/role-connections/metadata",
313
+ Authorization: token
314
+ )
315
+ end
316
+ end