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,171 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'onyxcord/data'
4
- require 'onyxcord/events/generic'
5
-
6
- module OnyxCord::Events
7
- # Generic superclass for scheduled events.
8
- class ScheduledEventEvent < Event
9
- # @return [Server] the server associated with the event.
10
- attr_reader :server
11
-
12
- # @return [ScheduledEvent] the scheduled event associated with the event.
13
- attr_reader :scheduled_event
14
-
15
- # @!visibility private
16
- def initialize(data, bot)
17
- @bot = bot
18
- @server = bot.server(data['guild_id'].to_i)
19
- @scheduled_event = @server&.scheduled_event(data['id'].to_i)
20
- end
21
- end
22
-
23
- # Raised whenever a scheduled event is created.
24
- class ScheduledEventCreateEvent < ScheduledEventEvent; end
25
-
26
- # Raised whenever a scheduled event is updated.
27
- class ScheduledEventUpdateEvent < ScheduledEventEvent; end
28
-
29
- # Raised whenever a scheduled event is deleted.
30
- class ScheduledEventDeleteEvent < ScheduledEventEvent
31
- # @!visibility private
32
- def initialize(data, bot)
33
- @bot = bot
34
- @server = bot.server(data['guild_id'].to_i)
35
- @scheduled_event = OnyxCord::ScheduledEvent.new(data, @server, @bot)
36
- end
37
- end
38
-
39
- # Generic superclass for scheduled event user events.
40
- class ScheduledEventUserEvent < Event
41
- # @!visibility private
42
- attr_reader :user_id
43
-
44
- # @!visibility private
45
- attr_reader :server_id
46
-
47
- # @!visibility private
48
- attr_reader :scheduled_event_id
49
-
50
- # @!visibility private
51
- def initialize(data, bot)
52
- @bot = bot
53
- @user_id = data['user_id'].to_i
54
- @server_id = data['guild_id'].to_i
55
- @scheduled_event_id = data['guild_scheduled_event_id'].to_i
56
- end
57
-
58
- # Get the server the scheduled event in question is from.
59
- # @return [Server] the server the scheduled event is associated with.
60
- def server
61
- @bot.server(@server_id)
62
- end
63
-
64
- # Get the scheduled event that the user was added to or removed from.
65
- # @return [ScheduledEvent] the scheduled event that the user was actioned on.
66
- def scheduled_event
67
- server.scheduled_event(@scheduled_event_id)
68
- end
69
-
70
- # Get the user that was added to or removed from the scheduled event.
71
- # @return [Member, User] the server member that was added to or removed from the
72
- # scheduled event, or a user if the member cannot be accessed by the bot.
73
- def member
74
- server.member(@user_id) || @bot.user(@user_id)
75
- end
76
-
77
- alias_method :user, :member
78
- end
79
-
80
- # Raised whenever a user is added to a scheduled event.
81
- class ScheduledEventUserAddEvent < ScheduledEventUserEvent; end
82
-
83
- # Raised whenever a user is removed from a scheduled event.
84
- class ScheduledEventUserRemoveEvent < ScheduledEventUserEvent; end
85
-
86
- # Generic event handler for scheduled event.
87
- class ScheduledEventEventHandler < EventHandler
88
- # @!visibility private
89
- def matches?(event)
90
- # Check for the proper event type.
91
- return false unless event.is_a?(ScheduledEventEvent)
92
-
93
- [
94
- matches_all(@attributes[:server], event.server) do |a, e|
95
- a&.resolve_id == e&.resolve_id
96
- end,
97
-
98
- matches_all(@attributes[:id], event.scheduled_event) do |a, e|
99
- a&.resolve_id == e&.resolve_id
100
- end,
101
-
102
- matches_all(@attributes[:creator], event.scheduled_event.creator) do |a, e|
103
- a&.resolve_id == e&.resolve_id
104
- end,
105
-
106
- matches_all(@attributes[:channel], event.scheduled_event.channel) do |a, e|
107
- a&.resolve_id == e&.resolve_id
108
- end,
109
-
110
- matches_all(@attributes[:entity_id], event.scheduled_event.entity_id) do |a, e|
111
- a&.resolve_id == e&.resolve_id
112
- end,
113
-
114
- matches_all(@attributes[:entity_type], event.scheduled_event.entity_type) do |a, e|
115
- case a
116
- when Symbol, String
117
- OnyxCord::ScheduledEvent::ENTITY_TYPES[a.to_sym] == e
118
- else
119
- a == e
120
- end
121
- end,
122
-
123
- matches_all(@attributes[:status], event.scheduled_event.status) do |a, e|
124
- case a
125
- when Symbol, String
126
- OnyxCord::ScheduledEvent::STATUSES[a.to_sym] == e
127
- else
128
- a == e
129
- end
130
- end
131
- ].reduce(true, &:&)
132
- end
133
- end
134
-
135
- # Event handler for :GUILD_SCHEDULED_EVENT_CREATE events.
136
- class ScheduledEventCreateEventHandler < ScheduledEventEventHandler; end
137
-
138
- # Event handler for :GUILD_SCHEDULED_EVENT_UPDATE events.
139
- class ScheduledEventUpdateEventHandler < ScheduledEventEventHandler; end
140
-
141
- # Event handler for :GUILD_SCHEDULED_EVENT_DELETE events.
142
- class ScheduledEventDeleteEventHandler < ScheduledEventEventHandler; end
143
-
144
- # Generic event handler for scheduled event user events.
145
- class ScheduledEventUserEventHandler < EventHandler
146
- # @!visibility private
147
- def matches?(event)
148
- return false unless event.is_a?(ScheduledEventUserEvent)
149
-
150
- [
151
- matches_all(@attributes[:user], event.user_id) do |a, e|
152
- a.resolve_id == e.resolve_id
153
- end,
154
-
155
- matches_all(@attributes[:server], event.server_id) do |a, e|
156
- a.resolve_id == e.resolve_id
157
- end,
158
-
159
- matches_all(@attributes[:scheduled_event], event.scheduled_event_id) do |a, e|
160
- a.resolve_id == e.resolve_id
161
- end
162
- ].reduce(true, &:&)
163
- end
164
- end
165
-
166
- # Event handler for :GUILD_SCHEDULED_EVENT_USER_ADD events.
167
- class ScheduledEventUserAddEventHandler < ScheduledEventUserEventHandler; end
168
-
169
- # Event handler for :GUILD_SCHEDULED_EVENT_USER_REMOVE events.
170
- class ScheduledEventUserRemoveEventHandler < ScheduledEventUserEventHandler; end
171
- end
3
+ require 'onyxcord/events/scheduled_events/events'
4
+ require 'onyxcord/events/scheduled_events/users'
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'onyxcord/events/generic'
4
+
5
+ module OnyxCord::Events
6
+ # Raised when a thread is created
7
+ class ThreadCreateEvent < Event
8
+ # @return [Channel] the thread in question.
9
+ attr_reader :thread
10
+
11
+ delegate :name, :server, :owner, :parent_channel, :thread_metadata, to: :thread
12
+
13
+ # @!visibility private
14
+ def initialize(data, bot)
15
+ @bot = bot
16
+ @thread = data.is_a?(OnyxCord::Channel) ? data : bot.channel(data['id'].to_i)
17
+ end
18
+ end
19
+
20
+ # Event handler for ThreadCreateEvent
21
+ class ThreadCreateEventHandler < EventHandler
22
+ def matches?(event)
23
+ # Check for the proper event type
24
+ return false unless event.is_a? ThreadCreateEvent
25
+
26
+ [
27
+ matches_all(@attributes[:name], event.name) do |a, e|
28
+ a == if a.is_a? String
29
+ e.to_s
30
+ else
31
+ e
32
+ end
33
+ end,
34
+ matches_all(@attributes[:server], event.server) do |a, e|
35
+ a.resolve_id == e.resolve_id
36
+ end,
37
+ matches_all(@attributes[:invitable], event.thread.invitable) do |a, e|
38
+ a == e
39
+ end,
40
+ matches_all(@attributes[:owner], event.thread.owner) do |a, e|
41
+ a.resolve_id == e.resolve_id
42
+ end,
43
+ matches_all(@attributes[:channel], event.thread.parent) do |a, e|
44
+ a.resolve_id == e.resolve_id
45
+ end
46
+ ].reduce(true, &:&)
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'onyxcord/events/thread/base'
4
+
5
+ module OnyxCord::Events
6
+ # Raised when members are added or removed from a thread.
7
+ class ThreadMembersUpdateEvent < Event
8
+ # @return [Channel]
9
+ attr_reader :thread
10
+
11
+ # @return [Array<Integer>]
12
+ attr_reader :removed_member_ids
13
+
14
+ # @return [Integer]
15
+ attr_reader :member_count
16
+
17
+ delegate :name, :server, :owner, :parent_channel, :thread_metadata, to: :thread
18
+
19
+ # @!visibility private
20
+ def initialize(data, bot)
21
+ @bot = bot
22
+ @server = bot.server(data['guild_id'].to_i) if data['guild_id']
23
+ @thread = data.is_a?(OnyxCord::Channel) ? data : bot.channel(data['id'].to_i)
24
+ @added_member_ids = data['added_members']&.map { |m| m['user_id']&.to_i } || []
25
+ @removed_member_ids = data['removed_member_ids']&.map(&:resolve_id) || []
26
+ @member_count = data['member_count']
27
+ end
28
+ end
29
+
30
+ # @return [Array<Member, User>] the members that were added to the thread
31
+ def added_members
32
+ @added_members ||= @added_member_ids&.map { |id| @server&.member(id) || @bot.user(id) }
33
+ end
34
+
35
+ # Event handler for ThreadMembersUpdateEvent
36
+ class ThreadMembersUpdateEventHandler < ThreadCreateEventHandler
37
+ def matches?(event)
38
+ # Check for the proper event type
39
+ return false unless event.is_a? ThreadMembersUpdateEvent
40
+
41
+ super
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'onyxcord/events/thread/base'
4
+
5
+ module OnyxCord::Events
6
+ # Raised when a thread is updated (e.g. name changes)
7
+ class ThreadUpdateEvent < ThreadCreateEvent; end
8
+
9
+ # Event handler for ThreadUpdateEvent
10
+ class ThreadUpdateEventHandler < ThreadCreateEventHandler
11
+ def matches?(event)
12
+ # Check for the proper event type
13
+ return false unless event.is_a? ThreadUpdateEvent
14
+
15
+ super
16
+ end
17
+ end
18
+ end
@@ -1,100 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Generic subclass for threads
4
- module OnyxCord::Events
5
- # Raised when a thread is created
6
- class ThreadCreateEvent < Event
7
- # @return [Channel] the thread in question.
8
- attr_reader :thread
9
-
10
- delegate :name, :server, :owner, :parent_channel, :thread_metadata, to: :thread
11
-
12
- # @!visibility private
13
- def initialize(data, bot)
14
- @bot = bot
15
- @thread = data.is_a?(OnyxCord::Channel) ? data : bot.channel(data['id'].to_i)
16
- end
17
- end
18
-
19
- # Event handler for ChannelCreateEvent
20
- class ThreadCreateEventHandler < EventHandler
21
- def matches?(event)
22
- # Check for the proper event type
23
- return false unless event.is_a? ThreadCreateEvent
24
-
25
- [
26
- matches_all(@attributes[:name], event.name) do |a, e|
27
- a == if a.is_a? String
28
- e.to_s
29
- else
30
- e
31
- end
32
- end,
33
- matches_all(@attributes[:server], event.server) do |a, e|
34
- a.resolve_id == e.resolve_id
35
- end,
36
- matches_all(@attributes[:invitable], event.thread.invitable) do |a, e|
37
- a == e
38
- end,
39
- matches_all(@attributes[:owner], event.thread.owner) do |a, e|
40
- a.resolve_id == e.resolve_id
41
- end,
42
- matches_all(@attributes[:channel], event.thread.parent) do |a, e|
43
- a.resolve_id == e.resolve_id
44
- end
45
- ].reduce(true, &:&)
46
- end
47
- end
48
-
49
- # Raised when a thread is updated (e.g. name changes)
50
- class ThreadUpdateEvent < ThreadCreateEvent; end
51
-
52
- # Event handler for ThreadUpdateEvent
53
- class ThreadUpdateEventHandler < ThreadCreateEventHandler
54
- def matches?(event)
55
- # Check for the proper event type
56
- return false unless event.is_a? ThreadUpdateEvent
57
-
58
- super
59
- end
60
- end
61
-
62
- # Raised when members are added or removed from a thread.
63
- class ThreadMembersUpdateEvent < Event
64
- # @return [Channel]
65
- attr_reader :thread
66
-
67
- # @return [Array<Integer>]
68
- attr_reader :removed_member_ids
69
-
70
- # @return [Integer]
71
- attr_reader :member_count
72
-
73
- delegate :name, :server, :owner, :parent_channel, :thread_metadata, to: :thread
74
-
75
- # @!visibility private
76
- def initialize(data, bot)
77
- @bot = bot
78
- @server = bot.server(data['guild_id'].to_i) if data['guild_id']
79
- @thread = data.is_a?(OnyxCord::Channel) ? data : bot.channel(data['id'].to_i)
80
- @added_member_ids = data['added_members']&.map { |m| m['user_id']&.to_i } || []
81
- @removed_member_ids = data['removed_member_ids']&.map(&:resolve_id) || []
82
- @member_count = data['member_count']
83
- end
84
- end
85
-
86
- # @return [Array<Member, User>] the members that were added to the thread
87
- def added_members
88
- @added_members ||= @added_member_ids&.map { |id| @server&.member(id) || @bot.user(id) }
89
- end
90
-
91
- # Event handler for ThreadMembersUpdateEvent
92
- class ThreadMembersUpdateEventHandler < ThreadCreateEventHandler
93
- def matches?(event)
94
- # Check for the proper event type
95
- return false unless event.is_a? ThreadMembersUpdateEvent
96
-
97
- super
98
- end
99
- end
100
- end
3
+ require 'onyxcord/events/thread/base'
4
+ require 'onyxcord/events/thread/update'
5
+ require 'onyxcord/events/thread/members'
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'onyxcord/events/generic'
4
+
5
+ module OnyxCord::Events
6
+ # Event raised when a user starts typing
7
+ class TypingEvent < Event
8
+ include Respondable
9
+
10
+ # @return [Channel] the channel on which a user started typing.
11
+ attr_reader :channel
12
+
13
+ # @return [User, Member, Recipient] the user that started typing.
14
+ attr_reader :user
15
+ alias_method :member, :user
16
+
17
+ # @return [Time] when the typing happened.
18
+ attr_reader :timestamp
19
+
20
+ # @!visibility private
21
+ def initialize(data, bot)
22
+ @bot = bot
23
+
24
+ @user_id = data['user_id'].to_i
25
+
26
+ @channel_id = data['channel_id'].to_i
27
+ @channel = bot.channel(@channel_id)
28
+
29
+ @user = if channel.pm?
30
+ channel.recipient
31
+ elsif channel.group?
32
+ bot.user(@user_id)
33
+ else
34
+ bot.member(@channel.server.id, @user_id)
35
+ end
36
+
37
+ @timestamp = Time.at(data['timestamp'].to_i)
38
+ end
39
+ end
40
+
41
+ # Event handler for TypingEvent
42
+ class TypingEventHandler < EventHandler
43
+ def matches?(event)
44
+ # Check for the proper event type
45
+ return false unless event.is_a? TypingEvent
46
+
47
+ [
48
+ matches_all(@attributes[:in], event.channel) do |a, e|
49
+ case a
50
+ when String
51
+ a.delete('#') == e.name
52
+ when Integer
53
+ a == e.id
54
+ else
55
+ a == e
56
+ end
57
+ end,
58
+ matches_all(@attributes[:from], event.user) do |a, e|
59
+ a == case a
60
+ when String
61
+ e.name
62
+ when Integer
63
+ e.id
64
+ else
65
+ e
66
+ end
67
+ end,
68
+ matches_all(@attributes[:after], event.timestamp) { |a, e| a > e },
69
+ matches_all(@attributes[:before], event.timestamp) { |a, e| a < e }
70
+ ].reduce(true, &:&)
71
+ end
72
+ end
73
+ end
@@ -1,73 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'onyxcord/events/generic'
4
-
5
- module OnyxCord::Events
6
- # Event raised when a user starts typing
7
- class TypingEvent < Event
8
- include Respondable
9
-
10
- # @return [Channel] the channel on which a user started typing.
11
- attr_reader :channel
12
-
13
- # @return [User, Member, Recipient] the user that started typing.
14
- attr_reader :user
15
- alias_method :member, :user
16
-
17
- # @return [Time] when the typing happened.
18
- attr_reader :timestamp
19
-
20
- # @!visibility private
21
- def initialize(data, bot)
22
- @bot = bot
23
-
24
- @user_id = data['user_id'].to_i
25
-
26
- @channel_id = data['channel_id'].to_i
27
- @channel = bot.channel(@channel_id)
28
-
29
- @user = if channel.pm?
30
- channel.recipient
31
- elsif channel.group?
32
- bot.user(@user_id)
33
- else
34
- bot.member(@channel.server.id, @user_id)
35
- end
36
-
37
- @timestamp = Time.at(data['timestamp'].to_i)
38
- end
39
- end
40
-
41
- # Event handler for TypingEvent
42
- class TypingEventHandler < EventHandler
43
- def matches?(event)
44
- # Check for the proper event type
45
- return false unless event.is_a? TypingEvent
46
-
47
- [
48
- matches_all(@attributes[:in], event.channel) do |a, e|
49
- case a
50
- when String
51
- a.delete('#') == e.name
52
- when Integer
53
- a == e.id
54
- else
55
- a == e
56
- end
57
- end,
58
- matches_all(@attributes[:from], event.user) do |a, e|
59
- a == case a
60
- when String
61
- e.name
62
- when Integer
63
- e.id
64
- else
65
- e
66
- end
67
- end,
68
- matches_all(@attributes[:after], event.timestamp) { |a, e| a > e },
69
- matches_all(@attributes[:before], event.timestamp) { |a, e| a < e }
70
- ].reduce(true, &:&)
71
- end
72
- end
73
- end
3
+ require 'onyxcord/events/typing/base'
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'onyxcord/events/generic'
4
+ require 'onyxcord/models'
5
+
6
+ module OnyxCord::Events
7
+ # Event raised when a server's voice server is updating.
8
+ # Sent when initially connecting to voice and when a voice instance fails
9
+ # over to a new server.
10
+ # This event is exposed for use with library agnostic interfaces like telecom and
11
+ # lavalink.
12
+ class VoiceServerUpdateEvent < Event
13
+ # @return [String] The voice connection token
14
+ attr_reader :token
15
+
16
+ # @return [Server] The server this update is for.
17
+ attr_reader :server
18
+
19
+ # @return [String] The voice server host.
20
+ attr_reader :endpoint
21
+
22
+ # @!visibility private
23
+ def initialize(data, bot)
24
+ @bot = bot
25
+
26
+ @token = data['token']
27
+ @endpoint = data['endpoint']
28
+ @server = bot.server(data['guild_id'])
29
+ end
30
+ end
31
+
32
+ # Event handler for VoiceServerUpdateEvent
33
+ class VoiceServerUpdateEventHandler < EventHandler
34
+ def matches?(event)
35
+ return false unless event.is_a? VoiceServerUpdateEvent
36
+
37
+ [
38
+ matches_all(@attributes[:from], event.server) do |a, e|
39
+ a == if a.is_a? String
40
+ e.name
41
+ else
42
+ e
43
+ end
44
+ end
45
+ ]
46
+ end
47
+ end
48
+ end