onyxcord 2.1.0 → 3.2.1

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 (270) hide show
  1. checksums.yaml +4 -4
  2. data/lib/onyxcord/application_commands/command.rb +4 -97
  3. data/lib/onyxcord/application_commands/context.rb +4 -94
  4. data/lib/onyxcord/application_commands/option.rb +4 -75
  5. data/lib/onyxcord/application_commands/registry.rb +4 -45
  6. data/lib/onyxcord/application_commands.rb +8 -5
  7. data/lib/onyxcord/bot.rb +24 -1759
  8. data/lib/onyxcord/{cache.rb → cache/manager.rb} +16 -14
  9. data/lib/onyxcord/cache/stores/gateway.rb +272 -0
  10. data/lib/onyxcord/commands/bot/channels.rb +48 -0
  11. data/lib/onyxcord/commands/bot/execution.rb +174 -0
  12. data/lib/onyxcord/commands/bot/message_dispatch.rb +58 -0
  13. data/lib/onyxcord/commands/bot/permissions.rb +72 -0
  14. data/lib/onyxcord/commands/bot.rb +209 -0
  15. data/lib/onyxcord/commands/container.rb +21 -2
  16. data/lib/onyxcord/commands/parser.rb +30 -1
  17. data/lib/onyxcord/container.rb +16 -960
  18. data/lib/onyxcord/core/bot/application_commands.rb +210 -0
  19. data/lib/onyxcord/core/bot/awaits.rb +112 -0
  20. data/lib/onyxcord/core/bot/invites.rb +42 -0
  21. data/lib/onyxcord/core/bot/messaging.rb +161 -0
  22. data/lib/onyxcord/core/bot/oauth.rb +27 -0
  23. data/lib/onyxcord/core/bot/presence.rb +103 -0
  24. data/lib/onyxcord/core/bot/runtime.rb +183 -0
  25. data/lib/onyxcord/core/bot/voice.rb +69 -0
  26. data/lib/onyxcord/{logger.rb → core/logger.rb} +5 -0
  27. data/lib/onyxcord/core/version.rb +5 -0
  28. data/lib/onyxcord/events/await/base.rb +48 -0
  29. data/lib/onyxcord/events/await.rb +1 -46
  30. data/lib/onyxcord/events/ban/base.rb +54 -0
  31. data/lib/onyxcord/events/ban/remove.rb +11 -0
  32. data/lib/onyxcord/events/bans.rb +2 -58
  33. data/lib/onyxcord/events/channels/base.rb +91 -0
  34. data/lib/onyxcord/events/channels/delete.rb +73 -0
  35. data/lib/onyxcord/events/channels/pins.rb +44 -0
  36. data/lib/onyxcord/events/channels/recipients.rb +77 -0
  37. data/lib/onyxcord/events/channels.rb +4 -239
  38. data/lib/onyxcord/events/guilds/audit_logs.rb +79 -0
  39. data/lib/onyxcord/events/guilds/base.rb +97 -0
  40. data/lib/onyxcord/events/guilds/emoji.rb +147 -0
  41. data/lib/onyxcord/events/guilds.rb +3 -267
  42. data/lib/onyxcord/events/handlers/channels.rb +133 -0
  43. data/lib/onyxcord/events/handlers/core.rb +146 -0
  44. data/lib/onyxcord/events/handlers/guilds.rb +375 -0
  45. data/lib/onyxcord/events/handlers/interactions.rb +238 -0
  46. data/lib/onyxcord/events/handlers/lifetime.rb +71 -0
  47. data/lib/onyxcord/events/handlers/messages.rb +218 -0
  48. data/lib/onyxcord/events/handlers/presence.rb +56 -0
  49. data/lib/onyxcord/events/handlers/raw.rb +39 -0
  50. data/lib/onyxcord/events/handlers/reactions.rb +98 -0
  51. data/lib/onyxcord/events/handlers/scheduled_events.rb +243 -0
  52. data/lib/onyxcord/events/handlers/voice.rb +46 -0
  53. data/lib/onyxcord/events/integration/base.rb +45 -0
  54. data/lib/onyxcord/events/integration/create.rb +11 -0
  55. data/lib/onyxcord/events/integration/delete.rb +48 -0
  56. data/lib/onyxcord/events/integration/update.rb +11 -0
  57. data/lib/onyxcord/events/integrations.rb +4 -98
  58. data/lib/onyxcord/events/interactions/application_commands.rb +185 -0
  59. data/lib/onyxcord/events/interactions/autocomplete.rb +62 -0
  60. data/lib/onyxcord/events/interactions/base.rb +175 -0
  61. data/lib/onyxcord/events/interactions/components.rb +221 -0
  62. data/lib/onyxcord/events/interactions/permissions.rb +53 -0
  63. data/lib/onyxcord/events/interactions.rb +5 -622
  64. data/lib/onyxcord/events/invite/create.rb +79 -0
  65. data/lib/onyxcord/events/invite/delete.rb +55 -0
  66. data/lib/onyxcord/events/invites.rb +2 -125
  67. data/lib/onyxcord/events/lifetime/base.rb +31 -0
  68. data/lib/onyxcord/events/lifetime.rb +1 -29
  69. data/lib/onyxcord/events/member/add.rb +12 -0
  70. data/lib/onyxcord/events/member/base.rb +67 -0
  71. data/lib/onyxcord/events/member/delete.rb +21 -0
  72. data/lib/onyxcord/events/member/update.rb +25 -0
  73. data/lib/onyxcord/events/members.rb +4 -108
  74. data/lib/onyxcord/events/message/base.rb +295 -0
  75. data/lib/onyxcord/events/message/ids.rb +71 -0
  76. data/lib/onyxcord/events/message/mentions.rb +55 -0
  77. data/lib/onyxcord/events/message/updates.rb +27 -0
  78. data/lib/onyxcord/events/message.rb +4 -397
  79. data/lib/onyxcord/events/poll/add.rb +11 -0
  80. data/lib/onyxcord/events/poll/base.rb +106 -0
  81. data/lib/onyxcord/events/poll/remove.rb +11 -0
  82. data/lib/onyxcord/events/polls.rb +3 -116
  83. data/lib/onyxcord/events/presence/playing.rb +77 -0
  84. data/lib/onyxcord/events/presence/status.rb +60 -0
  85. data/lib/onyxcord/events/presence.rb +2 -129
  86. data/lib/onyxcord/events/raw/base.rb +74 -0
  87. data/lib/onyxcord/events/raw.rb +1 -72
  88. data/lib/onyxcord/events/reactions/base.rb +143 -0
  89. data/lib/onyxcord/events/reactions/clear.rb +99 -0
  90. data/lib/onyxcord/events/reactions.rb +2 -216
  91. data/lib/onyxcord/events/role/create.rb +46 -0
  92. data/lib/onyxcord/events/role/delete.rb +40 -0
  93. data/lib/onyxcord/events/role/update.rb +11 -0
  94. data/lib/onyxcord/events/roles.rb +3 -85
  95. data/lib/onyxcord/events/scheduled_events/events.rb +112 -0
  96. data/lib/onyxcord/events/scheduled_events/users.rb +91 -0
  97. data/lib/onyxcord/events/scheduled_events.rb +2 -169
  98. data/lib/onyxcord/events/thread/base.rb +49 -0
  99. data/lib/onyxcord/events/thread/members.rb +44 -0
  100. data/lib/onyxcord/events/thread/update.rb +18 -0
  101. data/lib/onyxcord/events/threads.rb +3 -98
  102. data/lib/onyxcord/events/typing/base.rb +73 -0
  103. data/lib/onyxcord/events/typing.rb +1 -71
  104. data/lib/onyxcord/events/voice/server_update.rb +48 -0
  105. data/lib/onyxcord/events/voice/state_update.rb +137 -0
  106. data/lib/onyxcord/events/voice_server_update.rb +2 -46
  107. data/lib/onyxcord/events/voice_state_update.rb +2 -135
  108. data/lib/onyxcord/events/webhook/update.rb +65 -0
  109. data/lib/onyxcord/events/webhooks.rb +1 -63
  110. data/lib/onyxcord/gateway/client.rb +460 -0
  111. data/lib/onyxcord/interactions/command.rb +120 -0
  112. data/lib/onyxcord/interactions/context.rb +109 -0
  113. data/lib/onyxcord/interactions/internal/application_command.rb +203 -0
  114. data/lib/onyxcord/interactions/internal/message.rb +152 -0
  115. data/lib/onyxcord/interactions/internal/metadata.rb +109 -0
  116. data/lib/onyxcord/interactions/internal/option_builder.rb +230 -0
  117. data/lib/onyxcord/interactions/internal/permission_builder.rb +90 -0
  118. data/lib/onyxcord/interactions/option.rb +88 -0
  119. data/lib/onyxcord/interactions/registry.rb +50 -0
  120. data/lib/onyxcord/interactions.rb +16 -0
  121. data/lib/onyxcord/internal/async_runtime.rb +32 -0
  122. data/lib/onyxcord/internal/event_bus.rb +591 -0
  123. data/lib/onyxcord/internal/event_executor.rb +155 -0
  124. data/lib/onyxcord/internal/gateway/opcodes.rb +22 -0
  125. data/lib/onyxcord/internal/gateway/session.rb +45 -0
  126. data/lib/onyxcord/internal/http.rb +189 -0
  127. data/lib/onyxcord/internal/json.rb +51 -0
  128. data/lib/onyxcord/{message_payload.rb → internal/message_payload.rb} +3 -3
  129. data/lib/onyxcord/internal/rate_limiter/async_rest.rb +151 -0
  130. data/lib/onyxcord/internal/rate_limiter/gateway.rb +44 -0
  131. data/lib/onyxcord/internal/rate_limiter/rest.rb +144 -0
  132. data/lib/onyxcord/internal/websocket.rb +79 -0
  133. data/lib/onyxcord/light/data.rb +1 -1
  134. data/lib/onyxcord/light/integrations.rb +1 -1
  135. data/lib/onyxcord/light/light_bot.rb +7 -7
  136. data/lib/onyxcord/{data → models}/activity.rb +2 -2
  137. data/lib/onyxcord/{data → models}/application.rb +3 -3
  138. data/lib/onyxcord/{data → models}/avatar_decoration.rb +1 -1
  139. data/lib/onyxcord/{data → models}/channel.rb +23 -23
  140. data/lib/onyxcord/{data → models}/collectibles.rb +1 -1
  141. data/lib/onyxcord/{data → models}/emoji.rb +1 -1
  142. data/lib/onyxcord/models/interaction.rb +450 -0
  143. data/lib/onyxcord/{data → models}/invite.rb +1 -1
  144. data/lib/onyxcord/{data → models}/member.rb +11 -11
  145. data/lib/onyxcord/{data → models}/message.rb +18 -14
  146. data/lib/onyxcord/{data → models}/poll.rb +2 -2
  147. data/lib/onyxcord/{data → models}/primary_server.rb +1 -1
  148. data/lib/onyxcord/{data → models}/profile.rb +4 -4
  149. data/lib/onyxcord/{data → models}/role.rb +6 -12
  150. data/lib/onyxcord/{data → models}/scheduled_event.rb +5 -5
  151. data/lib/onyxcord/{data → models}/server.rb +41 -41
  152. data/lib/onyxcord/{data → models}/server_preview.rb +2 -2
  153. data/lib/onyxcord/{data → models}/team.rb +1 -1
  154. data/lib/onyxcord/{data → models}/user.rb +5 -5
  155. data/lib/onyxcord/{data → models}/webhook.rb +10 -10
  156. data/lib/onyxcord/models.rb +57 -0
  157. data/lib/onyxcord/{api.rb → rest/client.rb} +23 -22
  158. data/lib/onyxcord/{api → rest/routes}/application.rb +79 -57
  159. data/lib/onyxcord/rest/routes/channel/base.rb +73 -0
  160. data/lib/onyxcord/rest/routes/channel/groups.rb +78 -0
  161. data/lib/onyxcord/rest/routes/channel/messages.rb +130 -0
  162. data/lib/onyxcord/rest/routes/channel/permissions.rb +73 -0
  163. data/lib/onyxcord/rest/routes/channel/pins.rb +45 -0
  164. data/lib/onyxcord/rest/routes/channel/polls.rb +32 -0
  165. data/lib/onyxcord/rest/routes/channel/reactions.rb +86 -0
  166. data/lib/onyxcord/rest/routes/channel/threads.rb +176 -0
  167. data/lib/onyxcord/rest/routes/channel/webhooks.rb +47 -0
  168. data/lib/onyxcord/rest/routes/channel.rb +12 -0
  169. data/lib/onyxcord/{api/interaction.rb → rest/routes/interaction/base.rb} +7 -25
  170. data/lib/onyxcord/rest/routes/interaction/response.rb +24 -0
  171. data/lib/onyxcord/rest/routes/interaction.rb +4 -0
  172. data/lib/onyxcord/{api → rest/routes}/invite.rb +7 -7
  173. data/lib/onyxcord/rest/routes/server/admin.rb +174 -0
  174. data/lib/onyxcord/rest/routes/server/assets.rb +25 -0
  175. data/lib/onyxcord/rest/routes/server/bans.rb +67 -0
  176. data/lib/onyxcord/rest/routes/server/base.rb +77 -0
  177. data/lib/onyxcord/rest/routes/server/channels.rb +58 -0
  178. data/lib/onyxcord/rest/routes/server/emoji.rb +48 -0
  179. data/lib/onyxcord/rest/routes/server/members.rb +109 -0
  180. data/lib/onyxcord/rest/routes/server/messages.rb +19 -0
  181. data/lib/onyxcord/rest/routes/server/roles.rb +156 -0
  182. data/lib/onyxcord/rest/routes/server/scheduled_events.rb +86 -0
  183. data/lib/onyxcord/rest/routes/server.rb +12 -0
  184. data/lib/onyxcord/{api → rest/routes}/user.rb +23 -23
  185. data/lib/onyxcord/{api → rest/routes}/webhook.rb +22 -22
  186. data/lib/onyxcord/{allowed_mentions.rb → utils/allowed_mentions.rb} +1 -1
  187. data/lib/onyxcord/utils/timestamp.rb +69 -0
  188. data/lib/onyxcord/voice/{voice_bot.rb → client.rb} +4 -4
  189. data/lib/onyxcord/voice/encoder.rb +1 -1
  190. data/lib/onyxcord/voice/network/udp.rb +135 -0
  191. data/lib/onyxcord/voice/network/websocket.rb +225 -0
  192. data/lib/onyxcord/voice/network.rb +5 -357
  193. data/lib/onyxcord/webhooks/builder.rb +1 -1
  194. data/lib/onyxcord/webhooks/client.rb +13 -13
  195. data/lib/onyxcord/webhooks/modal/group_builder.rb +55 -0
  196. data/lib/onyxcord/webhooks/modal/label_builder.rb +183 -0
  197. data/lib/onyxcord/webhooks/modal.rb +2 -239
  198. data/lib/onyxcord/webhooks/version.rb +3 -3
  199. data/lib/onyxcord/webhooks/view/container_builder.rb +80 -0
  200. data/lib/onyxcord/webhooks/view/file_builder.rb +24 -0
  201. data/lib/onyxcord/webhooks/view/media_gallery_builder.rb +50 -0
  202. data/lib/onyxcord/webhooks/view/row_builder.rb +120 -0
  203. data/lib/onyxcord/webhooks/view/section_builder.rb +61 -0
  204. data/lib/onyxcord/webhooks/view/select_menu_builder.rb +77 -0
  205. data/lib/onyxcord/webhooks/view/separator_builder.rb +22 -0
  206. data/lib/onyxcord/webhooks/view/text_display_builder.rb +20 -0
  207. data/lib/onyxcord/webhooks/view.rb +9 -425
  208. data/lib/onyxcord.rb +106 -42
  209. metadata +207 -92
  210. data/.github/CONTRIBUTING.md +0 -13
  211. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
  212. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -24
  213. data/.github/pull_request_template.md +0 -37
  214. data/.github/workflows/ci.yml +0 -78
  215. data/.github/workflows/codeql.yml +0 -65
  216. data/.github/workflows/deploy.yml +0 -54
  217. data/.github/workflows/release.yml +0 -51
  218. data/.gitignore +0 -17
  219. data/.markdownlint.json +0 -4
  220. data/.overcommit.yml +0 -7
  221. data/.rspec +0 -2
  222. data/.rubocop.yml +0 -129
  223. data/.yardopts +0 -1
  224. data/CHANGELOG.md +0 -257
  225. data/Gemfile +0 -6
  226. data/LICENSE.txt +0 -21
  227. data/README.md +0 -448
  228. data/Rakefile +0 -13
  229. data/lib/onyxcord/api/channel.rb +0 -703
  230. data/lib/onyxcord/api/server.rb +0 -775
  231. data/lib/onyxcord/async/runtime.rb +0 -30
  232. data/lib/onyxcord/commands/command_bot.rb +0 -505
  233. data/lib/onyxcord/data/interaction.rb +0 -1151
  234. data/lib/onyxcord/data.rb +0 -57
  235. data/lib/onyxcord/event_executor.rb +0 -153
  236. data/lib/onyxcord/gateway.rb +0 -505
  237. data/lib/onyxcord/http.rb +0 -186
  238. data/lib/onyxcord/json.rb +0 -49
  239. data/lib/onyxcord/rate_limiter/async_rest.rb +0 -150
  240. data/lib/onyxcord/rate_limiter/gateway.rb +0 -42
  241. data/lib/onyxcord/rate_limiter/rest.rb +0 -142
  242. data/lib/onyxcord/version.rb +0 -7
  243. data/lib/onyxcord/websocket.rb +0 -77
  244. data/onyxcord.gemspec +0 -63
  245. /data/lib/onyxcord/{configuration.rb → core/configuration.rb} +0 -0
  246. /data/lib/onyxcord/{errors.rb → core/errors.rb} +0 -0
  247. /data/lib/onyxcord/{upload.rb → internal/upload.rb} +0 -0
  248. /data/lib/onyxcord/{data → models}/attachment.rb +0 -0
  249. /data/lib/onyxcord/{data → models}/audit_logs.rb +0 -0
  250. /data/lib/onyxcord/{data → models}/call.rb +0 -0
  251. /data/lib/onyxcord/{data → models}/channel_tag.rb +0 -0
  252. /data/lib/onyxcord/{data → models}/component.rb +0 -0
  253. /data/lib/onyxcord/{data → models}/embed.rb +0 -0
  254. /data/lib/onyxcord/{data → models}/install_params.rb +0 -0
  255. /data/lib/onyxcord/{data → models}/integration.rb +0 -0
  256. /data/lib/onyxcord/{data → models}/message_activity.rb +0 -0
  257. /data/lib/onyxcord/{data → models}/overwrite.rb +0 -0
  258. /data/lib/onyxcord/{data → models}/reaction.rb +0 -0
  259. /data/lib/onyxcord/{data → models}/recipient.rb +0 -0
  260. /data/lib/onyxcord/{data → models}/role_connection_data.rb +0 -0
  261. /data/lib/onyxcord/{data → models}/role_subscription.rb +0 -0
  262. /data/lib/onyxcord/{data → models}/snapshot.rb +0 -0
  263. /data/lib/onyxcord/{data → models}/timestamp.rb +0 -0
  264. /data/lib/onyxcord/{data → models}/voice_region.rb +0 -0
  265. /data/lib/onyxcord/{data → models}/voice_state.rb +0 -0
  266. /data/lib/onyxcord/{colour_rgb.rb → utils/colour_rgb.rb} +0 -0
  267. /data/lib/onyxcord/{id_object.rb → utils/id_object.rb} +0 -0
  268. /data/lib/onyxcord/{message_components.rb → utils/message_components.rb} +0 -0
  269. /data/lib/onyxcord/{paginator.rb → utils/paginator.rb} +0 -0
  270. /data/lib/onyxcord/{permissions.rb → utils/permissions.rb} +0 -0
@@ -1,703 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'onyxcord/message_payload'
4
-
5
- # API calls for Channel
6
- module OnyxCord::API::Channel
7
- module_function
8
-
9
- # Build attachment metadata payload for multipart uploads.
10
- # Returns an array of { id:, filename: } hashes.
11
- def attachment_payload(attachments)
12
- OnyxCord::MessagePayload.attachment_payload(attachments)
13
- end
14
-
15
- # Build multipart body with named file fields and JSON payload.
16
- def multipart_body(body, attachments)
17
- OnyxCord::MessagePayload.multipart_body(body, attachments)
18
- end
19
-
20
- # Get a channel's data
21
- # https://discord.com/developers/docs/resources/channel#get-channel
22
- def resolve(token, channel_id)
23
- OnyxCord::API.request(
24
- :channels_cid,
25
- channel_id,
26
- :get,
27
- "#{OnyxCord::API.api_base}/channels/#{channel_id}",
28
- Authorization: token
29
- )
30
- end
31
-
32
- # Update a channel's data
33
- # https://discord.com/developers/docs/resources/channel#modify-channel
34
- def update(token, channel_id, name, topic, position, bitrate, user_limit, nsfw, permission_overwrites = nil, parent_id = nil, rate_limit_per_user = nil, reason = nil, archived = nil, auto_archive_duration = nil, locked = nil, invitable = nil, flags = nil, applied_tags = nil)
35
- data = { name: name, position: position, topic: topic, bitrate: bitrate, user_limit: user_limit, nsfw: nsfw, parent_id: parent_id, rate_limit_per_user: rate_limit_per_user, archived: archived, auto_archive_duration: auto_archive_duration, locked: locked, invitable: invitable, flags: flags, applied_tags: applied_tags }
36
- data[:permission_overwrites] = permission_overwrites unless permission_overwrites.nil?
37
- OnyxCord::API.request(
38
- :channels_cid,
39
- channel_id,
40
- :patch,
41
- "#{OnyxCord::API.api_base}/channels/#{channel_id}",
42
- data.to_json,
43
- Authorization: token,
44
- content_type: :json,
45
- 'X-Audit-Log-Reason': reason
46
- )
47
- end
48
-
49
- # Modify the properties of a channel.
50
- # https://discord.com/developers/docs/resources/channel#modify-channel
51
- def update!(token, channel_id, name: :undef, type: :undef, position: :undef, topic: :undef, nsfw: :undef, rate_limit_per_user: :undef, bitrate: :undef, user_limit: :undef, permission_overwrites: :undef, parent_id: :undef, rtc_region: :undef, video_quality_mode: :undef, default_auto_archive_duration: :undef, flags: :undef, available_tags: :undef, default_reaction_emoji: :undef, default_thread_rate_limit_per_user: :undef, default_sort_order: :undef, default_forum_layout: :undef, archived: :undef, auto_archive_duration: :undef, locked: :undef, invitable: :undef, applied_tags: :undef, reason: nil)
52
- OnyxCord::API.request(
53
- :channels_cid,
54
- channel_id,
55
- :patch,
56
- "#{OnyxCord::API.api_base}/channels/#{channel_id}",
57
- { name:, type:, position:, topic:, nsfw:, rate_limit_per_user:, bitrate:, user_limit:, permission_overwrites:, parent_id:, rtc_region:, video_quality_mode:, default_auto_archive_duration:, flags:, available_tags:, default_reaction_emoji:, default_thread_rate_limit_per_user:, default_sort_order:, default_forum_layout:, archived:, auto_archive_duration:, locked:, invitable:, applied_tags: }.reject { |_, value| value == :undef }.to_json,
58
- Authorization: token,
59
- content_type: :json,
60
- 'X-Audit-Log-Reason': reason
61
- )
62
- end
63
-
64
- # Delete a channel
65
- # https://discord.com/developers/docs/resources/channel#deleteclose-channel
66
- def delete(token, channel_id, reason = nil)
67
- OnyxCord::API.request(
68
- :channels_cid,
69
- channel_id,
70
- :delete,
71
- "#{OnyxCord::API.api_base}/channels/#{channel_id}",
72
- Authorization: token,
73
- 'X-Audit-Log-Reason': reason
74
- )
75
- end
76
-
77
- # Get a list of messages from a channel's history
78
- # https://discord.com/developers/docs/resources/channel#get-channel-messages
79
- def messages(token, channel_id, amount, before = nil, after = nil, around = nil)
80
- query_string = URI.encode_www_form({ limit: amount, before: before, after: after, around: around }.compact)
81
- OnyxCord::API.request(
82
- :channels_cid_messages,
83
- channel_id,
84
- :get,
85
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages?#{query_string}",
86
- Authorization: token
87
- )
88
- end
89
-
90
- # Get a single message from a channel's history by id
91
- # https://discord.com/developers/docs/resources/channel#get-channel-message
92
- def message(token, channel_id, message_id)
93
- OnyxCord::API.request(
94
- :channels_cid_messages_mid,
95
- channel_id,
96
- :get,
97
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages/#{message_id}",
98
- Authorization: token
99
- )
100
- end
101
-
102
- # Send a message to a channel
103
- # https://discord.com/developers/docs/resources/channel#create-message
104
- # @param attachments [Array<File>, nil] Attachments to use with `attachment://` in embeds. See
105
- # https://discord.com/developers/docs/resources/channel#create-message-using-attachments-within-embeds
106
- def create_message(token, channel_id, message, tts = false, embeds = nil, nonce = nil, attachments = nil, allowed_mentions = nil, message_reference = nil, components = nil, flags = nil, enforce_nonce = false, poll = nil)
107
- tts = false unless [true, false].include?(tts)
108
- components = OnyxCord::MessageComponents.payload(components) unless components.nil?
109
- flags = OnyxCord::MessageComponents.apply_v2_flag(flags, components)
110
- OnyxCord::MessagePayload.validate!(content: message, embeds: embeds, components: components, flags: flags, attachments: attachments, poll: poll)
111
- body = { content: message, tts: tts == true, embeds: embeds, nonce: nonce, allowed_mentions: allowed_mentions, message_reference: message_reference, components: components, attachments: attachments ? attachment_payload(attachments) : nil, flags: flags, enforce_nonce: enforce_nonce, poll: poll }.compact
112
- body = if attachments
113
- multipart_body(body, attachments)
114
- else
115
- body.to_json
116
- end
117
-
118
- headers = { Authorization: token }
119
- headers[:content_type] = :json unless attachments
120
-
121
- OnyxCord::API.request(
122
- :channels_cid_messages_mid,
123
- channel_id,
124
- :post,
125
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages",
126
- body,
127
- **headers
128
- )
129
- end
130
-
131
- # Send a file as a message to a channel
132
- # https://discord.com/developers/docs/resources/channel#upload-file
133
- def upload_file(token, channel_id, file, caption: nil, tts: false)
134
- OnyxCord::API.request(
135
- :channels_cid_messages_mid,
136
- channel_id,
137
- :post,
138
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages",
139
- { file: file, content: caption, tts: tts },
140
- Authorization: token
141
- )
142
- end
143
-
144
- # Edit a message
145
- # https://discord.com/developers/docs/resources/channel#edit-message
146
- def edit_message(token, channel_id, message_id, message, mentions = nil, embeds = nil, components = nil, flags = nil)
147
- components = OnyxCord::MessageComponents.payload(components) unless components.nil? || components == :undef
148
- flags = OnyxCord::MessageComponents.apply_v2_flag(flags, components)
149
- body = OnyxCord::MessagePayload.edit_body(message, embeds)
150
- body.merge!(allowed_mentions: mentions, components: components, flags: flags)
151
- OnyxCord::API.request(
152
- :channels_cid_messages_mid,
153
- channel_id,
154
- :patch,
155
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages/#{message_id}",
156
- body.reject { |_, v| v == :undef }.to_json,
157
- Authorization: token,
158
- content_type: :json
159
- )
160
- end
161
-
162
- # Delete a message
163
- # https://discord.com/developers/docs/resources/channel#delete-message
164
- def delete_message(token, channel_id, message_id, reason = nil)
165
- OnyxCord::API.request(
166
- :channels_cid_messages_mid,
167
- channel_id,
168
- :delete,
169
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages/#{message_id}",
170
- Authorization: token,
171
- 'X-Audit-Log-Reason': reason
172
- )
173
- end
174
-
175
- # Crosspost a message
176
- # https://discord.com/developers/docs/resources/message#crosspost-message
177
- def crosspost_message(token, channel_id, message_id)
178
- OnyxCord::API.request(
179
- :channels_cid_messages_mid,
180
- channel_id,
181
- :post,
182
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages/#{message_id}/crosspost",
183
- Authorization: token
184
- )
185
- end
186
-
187
- # Delete messages in bulk
188
- # https://discord.com/developers/docs/resources/channel#bulk-delete-messages
189
- def bulk_delete_messages(token, channel_id, messages = [], reason = nil)
190
- OnyxCord::API.request(
191
- :channels_cid_messages_bulk_delete,
192
- channel_id,
193
- :post,
194
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages/bulk-delete",
195
- { messages: messages }.to_json,
196
- Authorization: token,
197
- content_type: :json,
198
- 'X-Audit-Log-Reason': reason
199
- )
200
- end
201
-
202
- # Create a reaction on a message using this client
203
- # https://discord.com/developers/docs/resources/channel#create-reaction
204
- def create_reaction(token, channel_id, message_id, emoji)
205
- emoji = URI.encode_www_form_component(emoji) unless emoji.ascii_only?
206
- OnyxCord::API.request(
207
- :channels_cid_messages_mid_reactions_emoji_me,
208
- channel_id,
209
- :put,
210
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages/#{message_id}/reactions/#{emoji}/@me",
211
- nil,
212
- Authorization: token,
213
- content_type: :json
214
- )
215
- end
216
-
217
- # Delete this client's own reaction on a message
218
- # https://discord.com/developers/docs/resources/channel#delete-own-reaction
219
- def delete_own_reaction(token, channel_id, message_id, emoji)
220
- emoji = URI.encode_www_form_component(emoji) unless emoji.ascii_only?
221
- OnyxCord::API.request(
222
- :channels_cid_messages_mid_reactions_emoji_me,
223
- channel_id,
224
- :delete,
225
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages/#{message_id}/reactions/#{emoji}/@me",
226
- Authorization: token
227
- )
228
- end
229
-
230
- # Delete another client's reaction on a message
231
- # https://discord.com/developers/docs/resources/channel#delete-user-reaction
232
- def delete_user_reaction(token, channel_id, message_id, emoji, user_id)
233
- emoji = URI.encode_www_form_component(emoji) unless emoji.ascii_only?
234
- OnyxCord::API.request(
235
- :channels_cid_messages_mid_reactions_emoji_uid,
236
- channel_id,
237
- :delete,
238
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages/#{message_id}/reactions/#{emoji}/#{user_id}",
239
- Authorization: token
240
- )
241
- end
242
-
243
- # Get a list of clients who reacted with a specific reaction on a message
244
- # https://discord.com/developers/docs/resources/channel#get-reactions
245
- def get_reactions(token, channel_id, message_id, emoji, before_id, after_id, limit = 100, type = 0)
246
- emoji = URI.encode_www_form_component(emoji) unless emoji.ascii_only?
247
- query_string = URI.encode_www_form({ limit: limit || 100, before: before_id, after: after_id, type: type }.compact)
248
- OnyxCord::API.request(
249
- :channels_cid_messages_mid_reactions_emoji,
250
- channel_id,
251
- :get,
252
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages/#{message_id}/reactions/#{emoji}?#{query_string}",
253
- Authorization: token
254
- )
255
- end
256
-
257
- # Deletes all reactions on a message from all clients
258
- # https://discord.com/developers/docs/resources/channel#delete-all-reactions
259
- def delete_all_reactions(token, channel_id, message_id)
260
- OnyxCord::API.request(
261
- :channels_cid_messages_mid_reactions,
262
- channel_id,
263
- :delete,
264
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages/#{message_id}/reactions",
265
- Authorization: token
266
- )
267
- end
268
-
269
- # Deletes all the reactions for a given emoji on a message
270
- # https://discord.com/developers/docs/resources/channel#delete-all-reactions-for-emoji
271
- def delete_all_emoji_reactions(token, channel_id, message_id, emoji)
272
- emoji = URI.encode_www_form_component(emoji) unless emoji.ascii_only?
273
-
274
- OnyxCord::API.request(
275
- :channels_cid_messages_mid_reactions_emoji,
276
- channel_id,
277
- :delete,
278
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages/#{message_id}/reactions/#{emoji}",
279
- Authorization: token
280
- )
281
- end
282
-
283
- # Update a channels permission for a role or member
284
- # https://discord.com/developers/docs/resources/channel#edit-channel-permissions
285
- def update_permission(token, channel_id, overwrite_id, allow, deny, type, reason = nil)
286
- OnyxCord::API.request(
287
- :channels_cid_permissions_oid,
288
- channel_id,
289
- :put,
290
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/permissions/#{overwrite_id}",
291
- { type: type, id: overwrite_id, allow: allow, deny: deny }.to_json,
292
- Authorization: token,
293
- content_type: :json,
294
- 'X-Audit-Log-Reason': reason
295
- )
296
- end
297
-
298
- # Get a channel's invite list
299
- # https://discord.com/developers/docs/resources/channel#get-channel-invites
300
- def invites(token, channel_id)
301
- OnyxCord::API.request(
302
- :channels_cid_invites,
303
- channel_id,
304
- :get,
305
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/invites",
306
- Authorization: token
307
- )
308
- end
309
-
310
- # Create an instant invite from a server or a channel id
311
- # https://discord.com/developers/docs/resources/channel#create-channel-invite
312
- def create_invite(token, channel_id, max_age = 0, max_uses = 0, temporary = false, unique = false, reason = nil)
313
- OnyxCord::API.request(
314
- :channels_cid_invites,
315
- channel_id,
316
- :post,
317
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/invites",
318
- { max_age: max_age, max_uses: max_uses, temporary: temporary, unique: unique }.to_json,
319
- Authorization: token,
320
- content_type: :json,
321
- 'X-Audit-Log-Reason': reason
322
- )
323
- end
324
-
325
- # Delete channel permission
326
- # https://discord.com/developers/docs/resources/channel#delete-channel-permission
327
- def delete_permission(token, channel_id, overwrite_id, reason = nil)
328
- OnyxCord::API.request(
329
- :channels_cid_permissions_oid,
330
- channel_id,
331
- :delete,
332
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/permissions/#{overwrite_id}",
333
- Authorization: token,
334
- 'X-Audit-Log-Reason': reason
335
- )
336
- end
337
-
338
- # Start typing (needs to be resent every 5 seconds to keep up the typing)
339
- # https://discord.com/developers/docs/resources/channel#trigger-typing-indicator
340
- def start_typing(token, channel_id)
341
- OnyxCord::API.request(
342
- :channels_cid_typing,
343
- channel_id,
344
- :post,
345
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/typing",
346
- nil,
347
- Authorization: token
348
- )
349
- end
350
-
351
- # Get a list of pinned messages in a channel
352
- # https://discord.com/developers/docs/resources/message#get-channel-pins
353
- def pinned_messages(token, channel_id, limit = 50, before = nil)
354
- query = URI.encode_www_form({ limit: limit, before: before }.compact)
355
- OnyxCord::API.request(
356
- :channels_cid_pins,
357
- channel_id,
358
- :get,
359
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages/pins?#{query}",
360
- Authorization: token
361
- )
362
- end
363
-
364
- # Pin a message
365
- # https://discord.com/developers/docs/resources/message#pin-message
366
- def pin_message(token, channel_id, message_id, reason = nil)
367
- OnyxCord::API.request(
368
- :channels_cid_pins_mid,
369
- channel_id,
370
- :put,
371
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages/pins/#{message_id}",
372
- nil,
373
- Authorization: token,
374
- 'X-Audit-Log-Reason': reason
375
- )
376
- end
377
-
378
- # Unpin a message
379
- # https://discord.com/developers/docs/resources/message#unpin-message
380
- def unpin_message(token, channel_id, message_id, reason = nil)
381
- OnyxCord::API.request(
382
- :channels_cid_pins_mid,
383
- channel_id,
384
- :delete,
385
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages/pins/#{message_id}",
386
- Authorization: token,
387
- 'X-Audit-Log-Reason': reason
388
- )
389
- end
390
-
391
- # Create an empty group channel.
392
- # @deprecated Discord no longer supports bots in group DMs, this endpoint was repurposed and no longer works as implemented here.
393
- # https://discord.com/developers/docs/resources/user#create-group-dm
394
- def create_empty_group(token, bot_user_id)
395
- OnyxCord::API.request(
396
- :users_uid_channels,
397
- nil,
398
- :post,
399
- "#{OnyxCord::API.api_base}/users/#{bot_user_id}/channels",
400
- {}.to_json,
401
- Authorization: token,
402
- content_type: :json
403
- )
404
- end
405
-
406
- # Create a group channel.
407
- # @deprecated Discord no longer supports bots in group DMs, this endpoint was repurposed and no longer works as implemented here.
408
- # https://discord.com/developers/docs/resources/channel#group-dm-add-recipient
409
- def create_group(token, pm_channel_id, user_id)
410
- OnyxCord::API.request(
411
- :channels_cid_recipients_uid,
412
- nil,
413
- :put,
414
- "#{OnyxCord::API.api_base}/channels/#{pm_channel_id}/recipients/#{user_id}",
415
- {}.to_json,
416
- Authorization: token,
417
- content_type: :json
418
- )
419
- end
420
-
421
- # Add a user to a group channel.
422
- # @deprecated Discord no longer supports bots in group DMs, this endpoint was repurposed and no longer works as implemented here.
423
- # https://discord.com/developers/docs/resources/channel#group-dm-add-recipient
424
- def add_group_user(token, group_channel_id, user_id)
425
- OnyxCord::API.request(
426
- :channels_cid_recipients_uid,
427
- nil,
428
- :put,
429
- "#{OnyxCord::API.api_base}/channels/#{group_channel_id}/recipients/#{user_id}",
430
- {}.to_json,
431
- Authorization: token,
432
- content_type: :json
433
- )
434
- end
435
-
436
- # Remove a user from a group channel.
437
- # @deprecated Discord no longer supports bots in group DMs, this endpoint was repurposed and no longer works as implemented here.
438
- # https://discord.com/developers/docs/resources/channel#group-dm-remove-recipient
439
- def remove_group_user(token, group_channel_id, user_id)
440
- OnyxCord::API.request(
441
- :channels_cid_recipients_uid,
442
- nil,
443
- :delete,
444
- "#{OnyxCord::API.api_base}/channels/#{group_channel_id}/recipients/#{user_id}",
445
- Authorization: token,
446
- content_type: :json
447
- )
448
- end
449
-
450
- # Leave a group channel.
451
- # @deprecated Discord no longer supports bots in group DMs, this endpoint was repurposed and no longer works as implemented here.
452
- # https://discord.com/developers/docs/resources/channel#deleteclose-channel
453
- def leave_group(token, group_channel_id)
454
- OnyxCord::API.request(
455
- :channels_cid,
456
- nil,
457
- :delete,
458
- "#{OnyxCord::API.api_base}/channels/#{group_channel_id}",
459
- Authorization: token,
460
- content_type: :json
461
- )
462
- end
463
-
464
- # Create a webhook
465
- # https://discord.com/developers/docs/resources/webhook#create-webhook
466
- def create_webhook(token, channel_id, name, avatar = nil, reason = nil)
467
- OnyxCord::API.request(
468
- :channels_cid_webhooks,
469
- channel_id,
470
- :post,
471
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/webhooks",
472
- { name: name, avatar: avatar }.to_json,
473
- Authorization: token,
474
- content_type: :json,
475
- 'X-Audit-Log-Reason': reason
476
- )
477
- end
478
-
479
- # Get channel webhooks
480
- # https://discord.com/developers/docs/resources/webhook#get-channel-webhooks
481
- def webhooks(token, channel_id)
482
- OnyxCord::API.request(
483
- :channels_cid_webhooks,
484
- channel_id,
485
- :get,
486
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/webhooks",
487
- Authorization: token
488
- )
489
- end
490
-
491
- # Follow an annoucement channel.
492
- # https://discord.com/developers/docs/resources/channel#follow-announcement-channel
493
- def follow_channel(token, channel_id, webhook_channel_id, reason = nil)
494
- OnyxCord::API.request(
495
- :channels_cid_followers,
496
- channel_id,
497
- :post,
498
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/followers",
499
- { webhook_channel_id: webhook_channel_id }.to_json,
500
- Authorization: token,
501
- content_type: :json,
502
- 'X-Audit-Log-Reason': reason
503
- )
504
- end
505
-
506
- # Start a thread based off a channel message.
507
- # https://discord.com/developers/docs/resources/channel#start-thread-with-message
508
- def start_thread_with_message(token, channel_id, message_id, name, auto_archive_duration)
509
- OnyxCord::API.request(
510
- :channels_cid_messages_mid_threads,
511
- channel_id,
512
- :post,
513
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/messages/#{message_id}/threads",
514
- { name: name, auto_archive_duration: auto_archive_duration }.to_json,
515
- Authorization: token,
516
- content_type: :json
517
- )
518
- end
519
-
520
- # Start a thread without an associated message.
521
- # https://discord.com/developers/docs/resources/channel#start-thread-without-message
522
- def start_thread_without_message(token, channel_id, name, auto_archive_duration, type = 11)
523
- OnyxCord::API.request(
524
- :channels_cid_threads,
525
- channel_id,
526
- :post,
527
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/threads",
528
- { name: name, auto_archive_duration: auto_archive_duration, type: type },
529
- Authorization: token,
530
- content_type: :json
531
- )
532
- end
533
-
534
- # Add the current user to a thread.
535
- # https://discord.com/developers/docs/resources/channel#join-thread
536
- def join_thread(token, channel_id)
537
- OnyxCord::API.request(
538
- :channels_cid_thread_members_me,
539
- channel_id,
540
- :put,
541
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/thread-members/@me",
542
- nil,
543
- Authorization: token
544
- )
545
- end
546
-
547
- # Add a user to a thread.
548
- # https://discord.com/developers/docs/resources/channel#add-thread-member
549
- def add_thread_member(token, channel_id, user_id)
550
- OnyxCord::API.request(
551
- :channels_cid_thread_members_uid,
552
- channel_id,
553
- :put,
554
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/thread-members/#{user_id}",
555
- nil,
556
- Authorization: token
557
- )
558
- end
559
-
560
- # Remove the current user from a thread.
561
- # https://discord.com/developers/docs/resources/channel#leave-thread
562
- def leave_thread(token, channel_id)
563
- OnyxCord::API.request(
564
- :channels_cid_thread_members_me,
565
- channel_id,
566
- :delete,
567
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/thread-members/#{user_id}",
568
- Authorization: token
569
- )
570
- end
571
-
572
- # Remove a user from a thread.
573
- # https://discord.com/developers/docs/resources/channel#remove-thread-member
574
- def remove_thread_member(token, channel_id, user_id)
575
- OnyxCord::API.request(
576
- :channels_cid_thread_members_uid,
577
- channel_id,
578
- :delete,
579
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/thread-members/#{user_id}",
580
- Authorization: token
581
- )
582
- end
583
-
584
- # Get the members of a thread.
585
- # https://discord.com/developers/docs/resources/channel#list-thread-members
586
- def list_thread_members(token, channel_id, before, limit)
587
- query = URI.encode_www_form({ before: before, limit: limit }.compact)
588
-
589
- OnyxCord::API.request(
590
- :channels_cid_thread_members,
591
- channel_id,
592
- :get,
593
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/thread-members?#{query}",
594
- Authorization: token
595
- )
596
- end
597
-
598
- # List active threads
599
- # https://discord.com/developers/docs/resources/channel#list-active-threads
600
- def list_active_threads(token, channel_id)
601
- OnyxCord::API.request(
602
- :channels_cid_threads_active,
603
- channel_id,
604
- :get,
605
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/threads/active",
606
- Authorization: token
607
- )
608
- end
609
-
610
- # List public archived threads.
611
- # https://discord.com/developers/docs/resources/channel#list-public-archived-threads
612
- def list_public_archived_threads(token, channel_id, before = nil, limit = nil)
613
- query = URI.encode_www_form({ before: before, limit: limit }.compact)
614
-
615
- OnyxCord::API.request(
616
- :channels_cid_threads_archived_public,
617
- channel_id,
618
- :get,
619
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/threads/archived/public?#{query}",
620
- Authorization: token
621
- )
622
- end
623
-
624
- # List private archived threads.
625
- # https://discord.com/developers/docs/resources/channel#list-private-archived-threads
626
- def list_private_archived_threads(token, channel_id, before = nil, limit = nil)
627
- query = URI.encode_www_form({ before: before, limit: limit }.compact)
628
-
629
- OnyxCord::API.request(
630
- :channels_cid_threads_archived_private,
631
- channel_id,
632
- :get,
633
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/threads/archived/private?#{query}",
634
- Authorization: token
635
- )
636
- end
637
-
638
- # List joined private archived threads.
639
- # https://discord.com/developers/docs/resources/channel#list-joined-private-archived-threads
640
- def list_joined_private_archived_threads(token, channel_id, before = nil, limit = nil)
641
- query = URI.encode_www_form({ before: before, limit: limit }.compact)
642
-
643
- OnyxCord::API.request(
644
- :channels_cid_users_me_threads_archived_private,
645
- channel_id,
646
- :get,
647
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/users/@me/threads/archived/private?#{query}",
648
- Authorization: token
649
- )
650
- end
651
-
652
- # Start a thread in a forum or media channel.
653
- # https://discord.com/developers/docs/resources/channel#start-thread-in-forum-or-media-channel
654
- def start_thread_in_forum_or_media_channel(token, channel_id, name, message, attachments = nil, rate_limit_per_user = nil, auto_archive_duration = nil, applied_tags = nil, reason = nil)
655
- OnyxCord::MessagePayload.validate!(attachments: attachments)
656
- body = { name: name, message: message, rate_limit_per_user: rate_limit_per_user, auto_archive_duration: auto_archive_duration, applied_tags: applied_tags }.compact
657
-
658
- body = if attachments
659
- multipart_body(body, attachments)
660
- else
661
- body.to_json
662
- end
663
-
664
- headers = { Authorization: token, 'X-Audit-Log-Reason': reason }
665
- headers[:content_type] = :json unless attachments
666
-
667
- OnyxCord::API.request(
668
- :channels_cid_threads,
669
- channel_id,
670
- :post,
671
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/threads",
672
- body,
673
- headers
674
- )
675
- end
676
-
677
- # Get a list of users that have voted for a poll answer.
678
- # https://discord.com/developers/docs/resources/poll#get-answer-voters
679
- def get_poll_voters(token, channel_id, message_id, answer_id, limit: 100, after: nil)
680
- query = URI.encode_www_form({ limit:, after: }.compact)
681
-
682
- OnyxCord::API.request(
683
- :channels_cid_polls_mid_answers_aid,
684
- channel_id,
685
- :get,
686
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/polls/#{message_id}/answers/#{answer_id}?#{query}",
687
- Authorization: token
688
- )
689
- end
690
-
691
- # End a poll created by the current user.
692
- # https://discord.com/developers/docs/resources/poll#end-poll
693
- def end_poll(token, channel_id, message_id)
694
- OnyxCord::API.request(
695
- :channels_cid_polls_mid_expire,
696
- channel_id,
697
- :post,
698
- "#{OnyxCord::API.api_base}/channels/#{channel_id}/polls/#{message_id}/expire",
699
- nil,
700
- Authorization: token
701
- )
702
- end
703
- end