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