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
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'onyxcord/events/generic'
4
+
5
+ module OnyxCord::Events
6
+ # Raised when an invite is deleted.
7
+ class InviteDeleteEvent < Event
8
+ # @return [Channel] The channel the deleted invite was for.
9
+ attr_reader :channel
10
+
11
+ # @return [Server, nil] The server the deleted invite was for.
12
+ attr_reader :server
13
+
14
+ # @return [String] The code of the deleted invite.
15
+ attr_reader :code
16
+
17
+ # @!visibility private
18
+ def initialize(data, bot)
19
+ @bot = bot
20
+ @channel = bot.channel(data['channel_id'])
21
+ @server = bot.server(data['guild_id']) if data['guild_id']
22
+ @code = data['code']
23
+ end
24
+ end
25
+
26
+ # Event handler for InviteDeleteEvent
27
+ class InviteDeleteEventHandler < EventHandler
28
+ def matches?(event)
29
+ return false unless event.is_a? InviteDeleteEvent
30
+
31
+ [
32
+ matches_all(@attributes[:server], event.server) do |a, e|
33
+ a == case a
34
+ when String
35
+ e.name
36
+ when Integer
37
+ e.id
38
+ else
39
+ e
40
+ end
41
+ end,
42
+ matches_all(@attributes[:channel], event.channel) do |a, e|
43
+ a == case a
44
+ when String
45
+ e.name
46
+ when Integer
47
+ e.id
48
+ else
49
+ e
50
+ end
51
+ end
52
+ ].reduce(true, &:&)
53
+ end
54
+ end
55
+ end
@@ -1,127 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module OnyxCord::Events
4
- # Raised when an invite is created.
5
- class InviteCreateEvent < Event
6
- # @return [Invite] The invite that was created.
7
- attr_reader :invite
8
-
9
- # @return [Server, nil] The server the invite was created for.
10
- attr_reader :server
11
-
12
- # @return [Channel] The channel the invite was created for.
13
- attr_reader :channel
14
-
15
- # @!attribute [r] code
16
- # @return [String] The code for the created invite.
17
- # @see Invite#code
18
- # @!attribute [r] created_at
19
- # @return [Time] The time the invite was created at.
20
- # @see Invite#created_at
21
- # @!attribute [r] max_age
22
- # @return [Integer] The maximum age of the created invite.
23
- # @see Invite#max_age
24
- # @!attribute [r] max_uses
25
- # @return [Integer] The maximum number of uses before the invite expires.
26
- # @see Invite#max_uses
27
- # @!attribute [r] temporary
28
- # @return [true, false] Whether or not this invite grants temporary membership.
29
- # @see Invite#temporary
30
- # @!attribute [r] inviter
31
- # @return [User] The user that created the invite.
32
- # @see Invite#inviter
33
- delegate :code, :created_at, :max_age, :max_uses, :temporary, :inviter, to: :invite
34
-
35
- alias temporary? temporary
36
-
37
- # @!visibility private
38
- def initialize(data, invite, bot)
39
- @bot = bot
40
- @invite = invite
41
- @channel = bot.channel(data['channel_id'])
42
- @server = bot.server(data['guild_id']) if data['guild_id']
43
- end
44
- end
45
-
46
- # Raised when an invite is deleted.
47
- class InviteDeleteEvent < Event
48
- # @return [Channel] The channel the deleted invite was for.
49
- attr_reader :channel
50
-
51
- # @return [Server, nil] The server the deleted invite was for.
52
- attr_reader :server
53
-
54
- # @return [String] The code of the deleted invite.
55
- attr_reader :code
56
-
57
- # @!visibility private
58
- def initialize(data, bot)
59
- @bot = bot
60
- @channel = bot.channel(data['channel_id'])
61
- @server = bot.server(data['guild_id']) if data['guild_id']
62
- @code = data['code']
63
- end
64
- end
65
-
66
- # Event handler for InviteCreateEvent.
67
- class InviteCreateEventHandler < EventHandler
68
- def matches?(event)
69
- return false unless event.is_a? InviteCreateEvent
70
-
71
- [
72
- matches_all(@attributes[:server], event.server) do |a, e|
73
- a == case a
74
- when String
75
- e.name
76
- when Integer
77
- e.id
78
- else
79
- e
80
- end
81
- end,
82
- matches_all(@attributes[:channel], event.channel) do |a, e|
83
- a == case a
84
- when String
85
- e.name
86
- when Integer
87
- e.id
88
- else
89
- e
90
- end
91
- end,
92
- matches_all(@attributes[:temporary], event.temporary?, &:==),
93
- matches_all(@attributes[:inviter], event.inviter, &:==)
94
- ].reduce(true, &:&)
95
- end
96
- end
97
-
98
- # Event handler for InviteDeleteEvent
99
- class InviteDeleteEventHandler < EventHandler
100
- def matches?(event)
101
- return false unless event.is_a? InviteDeleteEvent
102
-
103
- [
104
- matches_all(@attributes[:server], event.server) do |a, e|
105
- a == case a
106
- when String
107
- e.name
108
- when Integer
109
- e.id
110
- else
111
- e
112
- end
113
- end,
114
- matches_all(@attributes[:channel], event.channel) do |a, e|
115
- a == case a
116
- when String
117
- e.name
118
- when Integer
119
- e.id
120
- else
121
- e
122
- end
123
- end
124
- ].reduce(true, &:&)
125
- end
126
- end
127
- end
3
+ require 'onyxcord/events/invite/create'
4
+ require 'onyxcord/events/invite/delete'
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'onyxcord/events/generic'
4
+
5
+ module OnyxCord::Events
6
+ # Common superclass for all lifetime events
7
+ class LifetimeEvent < Event
8
+ # @!visibility private
9
+ def initialize(bot)
10
+ @bot = bot
11
+ end
12
+ end
13
+
14
+ # @see OnyxCord::EventContainer#ready
15
+ class ReadyEvent < LifetimeEvent; end
16
+
17
+ # Event handler for {ReadyEvent}
18
+ class ReadyEventHandler < TrueEventHandler; end
19
+
20
+ # @see OnyxCord::EventContainer#disconnected
21
+ class DisconnectEvent < LifetimeEvent; end
22
+
23
+ # Event handler for {DisconnectEvent}
24
+ class DisconnectEventHandler < TrueEventHandler; end
25
+
26
+ # @see OnyxCord::EventContainer#heartbeat
27
+ class HeartbeatEvent < LifetimeEvent; end
28
+
29
+ # Event handler for {HeartbeatEvent}
30
+ class HeartbeatEventHandler < TrueEventHandler; end
31
+ end
@@ -1,31 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'onyxcord/events/generic'
4
-
5
- module OnyxCord::Events
6
- # Common superclass for all lifetime events
7
- class LifetimeEvent < Event
8
- # @!visibility private
9
- def initialize(bot)
10
- @bot = bot
11
- end
12
- end
13
-
14
- # @see OnyxCord::EventContainer#ready
15
- class ReadyEvent < LifetimeEvent; end
16
-
17
- # Event handler for {ReadyEvent}
18
- class ReadyEventHandler < TrueEventHandler; end
19
-
20
- # @see OnyxCord::EventContainer#disconnected
21
- class DisconnectEvent < LifetimeEvent; end
22
-
23
- # Event handler for {DisconnectEvent}
24
- class DisconnectEventHandler < TrueEventHandler; end
25
-
26
- # @see OnyxCord::EventContainer#heartbeat
27
- class HeartbeatEvent < LifetimeEvent; end
28
-
29
- # Event handler for {HeartbeatEvent}
30
- class HeartbeatEventHandler < TrueEventHandler; end
31
- end
3
+ require 'onyxcord/events/lifetime/base'
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'onyxcord/events/member/base'
4
+
5
+ module OnyxCord::Events
6
+ # Member joins
7
+ # @see OnyxCord::EventContainer#member_join
8
+ class ServerMemberAddEvent < ServerMemberEvent; end
9
+
10
+ # Event handler for {ServerMemberAddEvent}
11
+ class ServerMemberAddEventHandler < ServerMemberEventHandler; end
12
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'onyxcord/events/generic'
4
+ require 'onyxcord/models'
5
+
6
+ module OnyxCord::Events
7
+ # Generic subclass for server member events (add/update/delete)
8
+ class ServerMemberEvent < Event
9
+ # @return [Member] the member in question.
10
+ attr_reader :user
11
+ alias_method :member, :user
12
+
13
+ # @return [Array<Role>] the member's roles.
14
+ attr_reader :roles
15
+
16
+ # @return [Server] the server on which the event happened.
17
+ attr_reader :server
18
+
19
+ # @!visibility private
20
+ def initialize(data, bot)
21
+ @bot = bot
22
+
23
+ @server = bot.server(data['guild_id'].to_i)
24
+ return unless @server
25
+
26
+ init_user(data, bot)
27
+ init_roles(data, bot)
28
+ end
29
+
30
+ private
31
+
32
+ # @!visibility private
33
+ def init_user(data, _)
34
+ user_id = data['user']['id'].to_i
35
+ @user = @server.member(user_id)
36
+ end
37
+
38
+ # @!visibility private
39
+ def init_roles(data, _)
40
+ @roles = [@server.role(@server.id)]
41
+ return unless data['roles']
42
+
43
+ data['roles'].each do |element|
44
+ role_id = element.to_i
45
+ @roles << @server.roles.find { |r| r.id == role_id }
46
+ end
47
+ end
48
+ end
49
+
50
+ # Generic event handler for member events
51
+ class ServerMemberEventHandler < EventHandler
52
+ def matches?(event)
53
+ # Check for the proper event type
54
+ return false unless event.is_a? ServerMemberEvent
55
+
56
+ [
57
+ matches_all(@attributes[:username], event.user.name) do |a, e|
58
+ a == if a.is_a? String
59
+ e.to_s
60
+ else
61
+ e
62
+ end
63
+ end
64
+ ].reduce(true, &:&)
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'onyxcord/events/member/base'
4
+
5
+ module OnyxCord::Events
6
+ # Member leaves
7
+ # @see OnyxCord::EventContainer#member_leave
8
+ class ServerMemberDeleteEvent < ServerMemberEvent
9
+ # @!visibility private
10
+ # @note Override init_user to account for the deleted user on the server
11
+ def init_user(data, bot)
12
+ @user = OnyxCord::User.new(data['user'], bot)
13
+ end
14
+
15
+ # @return [User] the user in question.
16
+ attr_reader :user
17
+ end
18
+
19
+ # Event handler for {ServerMemberDeleteEvent}
20
+ class ServerMemberDeleteEventHandler < ServerMemberEventHandler; end
21
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'onyxcord/events/member/base'
4
+
5
+ module OnyxCord::Events
6
+ # Member is updated (roles added or deleted)
7
+ # @see OnyxCord::EventContainer#member_update
8
+ class ServerMemberUpdateEvent < ServerMemberEvent
9
+ # @!visibility private
10
+ # @note Override init_user so we don't make requests all the time on large servers
11
+ def init_user(data, _)
12
+ @user_id = data['user']['id']
13
+ end
14
+
15
+ # @return [Member] the member in question.
16
+ def user
17
+ @server&.member(@user_id)
18
+ end
19
+
20
+ alias_method :member, :user
21
+ end
22
+
23
+ # Event handler for {ServerMemberUpdateEvent}
24
+ class ServerMemberUpdateEventHandler < ServerMemberEventHandler; end
25
+ end
@@ -1,110 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'onyxcord/events/generic'
4
- require 'onyxcord/data'
5
-
6
- module OnyxCord::Events
7
- # Generic subclass for server member events (add/update/delete)
8
- class ServerMemberEvent < Event
9
- # @return [Member] the member in question.
10
- attr_reader :user
11
- alias_method :member, :user
12
-
13
- # @return [Array<Role>] the member's roles.
14
- attr_reader :roles
15
-
16
- # @return [Server] the server on which the event happened.
17
- attr_reader :server
18
-
19
- # @!visibility private
20
- def initialize(data, bot)
21
- @bot = bot
22
-
23
- @server = bot.server(data['guild_id'].to_i)
24
- return unless @server
25
-
26
- init_user(data, bot)
27
- init_roles(data, bot)
28
- end
29
-
30
- private
31
-
32
- # @!visibility private
33
- def init_user(data, _)
34
- user_id = data['user']['id'].to_i
35
- @user = @server.member(user_id)
36
- end
37
-
38
- # @!visibility private
39
- def init_roles(data, _)
40
- @roles = [@server.role(@server.id)]
41
- return unless data['roles']
42
-
43
- data['roles'].each do |element|
44
- role_id = element.to_i
45
- @roles << @server.roles.find { |r| r.id == role_id }
46
- end
47
- end
48
- end
49
-
50
- # Generic event handler for member events
51
- class ServerMemberEventHandler < EventHandler
52
- def matches?(event)
53
- # Check for the proper event type
54
- return false unless event.is_a? ServerMemberEvent
55
-
56
- [
57
- matches_all(@attributes[:username], event.user.name) do |a, e|
58
- a == if a.is_a? String
59
- e.to_s
60
- else
61
- e
62
- end
63
- end
64
- ].reduce(true, &:&)
65
- end
66
- end
67
-
68
- # Member joins
69
- # @see OnyxCord::EventContainer#member_join
70
- class ServerMemberAddEvent < ServerMemberEvent; end
71
-
72
- # Event handler for {ServerMemberAddEvent}
73
- class ServerMemberAddEventHandler < ServerMemberEventHandler; end
74
-
75
- # Member is updated (roles added or deleted)
76
- # @see OnyxCord::EventContainer#member_update
77
- class ServerMemberUpdateEvent < ServerMemberEvent
78
- # @!visibility private
79
- # @note Override init_user so we don't make requests all the time on large servers
80
- def init_user(data, _)
81
- @user_id = data['user']['id']
82
- end
83
-
84
- # @return [Member] the member in question.
85
- def user
86
- @server&.member(@user_id)
87
- end
88
-
89
- alias_method :member, :user
90
- end
91
-
92
- # Event handler for {ServerMemberUpdateEvent}
93
- class ServerMemberUpdateEventHandler < ServerMemberEventHandler; end
94
-
95
- # Member leaves
96
- # @see OnyxCord::EventContainer#member_leave
97
- class ServerMemberDeleteEvent < ServerMemberEvent
98
- # @!visibility private
99
- # @note Override init_user to account for the deleted user on the server
100
- def init_user(data, bot)
101
- @user = OnyxCord::User.new(data['user'], bot)
102
- end
103
-
104
- # @return [User] the user in question.
105
- attr_reader :user
106
- end
107
-
108
- # Event handler for {ServerMemberDeleteEvent}
109
- class ServerMemberDeleteEventHandler < ServerMemberEventHandler; end
110
- end
3
+ require 'onyxcord/events/member/base'
4
+ require 'onyxcord/events/member/add'
5
+ require 'onyxcord/events/member/update'
6
+ require 'onyxcord/events/member/delete'