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.
- checksums.yaml +4 -4
- data/lib/onyxcord/application_commands/command.rb +4 -97
- data/lib/onyxcord/application_commands/context.rb +4 -94
- data/lib/onyxcord/application_commands/option.rb +4 -75
- data/lib/onyxcord/application_commands/registry.rb +4 -45
- data/lib/onyxcord/application_commands.rb +8 -5
- data/lib/onyxcord/bot.rb +24 -1759
- data/lib/onyxcord/{cache.rb → cache/manager.rb} +16 -14
- data/lib/onyxcord/cache/stores/gateway.rb +272 -0
- data/lib/onyxcord/commands/bot/channels.rb +48 -0
- data/lib/onyxcord/commands/bot/execution.rb +174 -0
- data/lib/onyxcord/commands/bot/message_dispatch.rb +58 -0
- data/lib/onyxcord/commands/bot/permissions.rb +72 -0
- data/lib/onyxcord/commands/bot.rb +209 -0
- data/lib/onyxcord/commands/container.rb +21 -2
- data/lib/onyxcord/commands/parser.rb +30 -1
- data/lib/onyxcord/container.rb +16 -960
- data/lib/onyxcord/core/bot/application_commands.rb +210 -0
- data/lib/onyxcord/core/bot/awaits.rb +112 -0
- data/lib/onyxcord/core/bot/invites.rb +42 -0
- data/lib/onyxcord/core/bot/messaging.rb +161 -0
- data/lib/onyxcord/core/bot/oauth.rb +27 -0
- data/lib/onyxcord/core/bot/presence.rb +103 -0
- data/lib/onyxcord/core/bot/runtime.rb +183 -0
- data/lib/onyxcord/core/bot/voice.rb +69 -0
- data/lib/onyxcord/{errors.rb → core/errors.rb} +18 -3
- data/lib/onyxcord/{logger.rb → core/logger.rb} +5 -0
- data/lib/onyxcord/core/version.rb +5 -0
- data/lib/onyxcord/events/await/base.rb +48 -0
- data/lib/onyxcord/events/await.rb +1 -46
- data/lib/onyxcord/events/ban/base.rb +54 -0
- data/lib/onyxcord/events/ban/remove.rb +11 -0
- data/lib/onyxcord/events/bans.rb +2 -58
- data/lib/onyxcord/events/channels/base.rb +91 -0
- data/lib/onyxcord/events/channels/delete.rb +73 -0
- data/lib/onyxcord/events/channels/pins.rb +44 -0
- data/lib/onyxcord/events/channels/recipients.rb +77 -0
- data/lib/onyxcord/events/channels.rb +4 -239
- data/lib/onyxcord/events/guilds/audit_logs.rb +79 -0
- data/lib/onyxcord/events/guilds/base.rb +97 -0
- data/lib/onyxcord/events/guilds/emoji.rb +147 -0
- data/lib/onyxcord/events/guilds.rb +3 -267
- data/lib/onyxcord/events/handlers/channels.rb +133 -0
- data/lib/onyxcord/events/handlers/core.rb +146 -0
- data/lib/onyxcord/events/handlers/guilds.rb +375 -0
- data/lib/onyxcord/events/handlers/interactions.rb +238 -0
- data/lib/onyxcord/events/handlers/lifetime.rb +71 -0
- data/lib/onyxcord/events/handlers/messages.rb +218 -0
- data/lib/onyxcord/events/handlers/presence.rb +56 -0
- data/lib/onyxcord/events/handlers/raw.rb +39 -0
- data/lib/onyxcord/events/handlers/reactions.rb +98 -0
- data/lib/onyxcord/events/handlers/scheduled_events.rb +243 -0
- data/lib/onyxcord/events/handlers/voice.rb +46 -0
- data/lib/onyxcord/events/integration/base.rb +45 -0
- data/lib/onyxcord/events/integration/create.rb +11 -0
- data/lib/onyxcord/events/integration/delete.rb +48 -0
- data/lib/onyxcord/events/integration/update.rb +11 -0
- data/lib/onyxcord/events/integrations.rb +4 -98
- data/lib/onyxcord/events/interactions/application_commands.rb +185 -0
- data/lib/onyxcord/events/interactions/autocomplete.rb +62 -0
- data/lib/onyxcord/events/interactions/base.rb +175 -0
- data/lib/onyxcord/events/interactions/components.rb +221 -0
- data/lib/onyxcord/events/interactions/permissions.rb +53 -0
- data/lib/onyxcord/events/interactions.rb +5 -622
- data/lib/onyxcord/events/invite/create.rb +79 -0
- data/lib/onyxcord/events/invite/delete.rb +55 -0
- data/lib/onyxcord/events/invites.rb +2 -125
- data/lib/onyxcord/events/lifetime/base.rb +31 -0
- data/lib/onyxcord/events/lifetime.rb +1 -29
- data/lib/onyxcord/events/member/add.rb +12 -0
- data/lib/onyxcord/events/member/base.rb +67 -0
- data/lib/onyxcord/events/member/delete.rb +21 -0
- data/lib/onyxcord/events/member/update.rb +25 -0
- data/lib/onyxcord/events/members.rb +4 -108
- data/lib/onyxcord/events/message/base.rb +295 -0
- data/lib/onyxcord/events/message/ids.rb +71 -0
- data/lib/onyxcord/events/message/mentions.rb +55 -0
- data/lib/onyxcord/events/message/updates.rb +27 -0
- data/lib/onyxcord/events/message.rb +4 -397
- data/lib/onyxcord/events/poll/add.rb +11 -0
- data/lib/onyxcord/events/poll/base.rb +106 -0
- data/lib/onyxcord/events/poll/remove.rb +11 -0
- data/lib/onyxcord/events/polls.rb +3 -116
- data/lib/onyxcord/events/presence/playing.rb +77 -0
- data/lib/onyxcord/events/presence/status.rb +60 -0
- data/lib/onyxcord/events/presence.rb +2 -129
- data/lib/onyxcord/events/raw/base.rb +74 -0
- data/lib/onyxcord/events/raw.rb +1 -72
- data/lib/onyxcord/events/reactions/base.rb +143 -0
- data/lib/onyxcord/events/reactions/clear.rb +99 -0
- data/lib/onyxcord/events/reactions.rb +2 -216
- data/lib/onyxcord/events/role/create.rb +46 -0
- data/lib/onyxcord/events/role/delete.rb +40 -0
- data/lib/onyxcord/events/role/update.rb +11 -0
- data/lib/onyxcord/events/roles.rb +3 -85
- data/lib/onyxcord/events/scheduled_events/events.rb +112 -0
- data/lib/onyxcord/events/scheduled_events/users.rb +91 -0
- data/lib/onyxcord/events/scheduled_events.rb +2 -169
- data/lib/onyxcord/events/thread/base.rb +49 -0
- data/lib/onyxcord/events/thread/members.rb +44 -0
- data/lib/onyxcord/events/thread/update.rb +18 -0
- data/lib/onyxcord/events/threads.rb +3 -98
- data/lib/onyxcord/events/typing/base.rb +73 -0
- data/lib/onyxcord/events/typing.rb +1 -71
- data/lib/onyxcord/events/voice/server_update.rb +48 -0
- data/lib/onyxcord/events/voice/state_update.rb +137 -0
- data/lib/onyxcord/events/voice_server_update.rb +2 -46
- data/lib/onyxcord/events/voice_state_update.rb +2 -135
- data/lib/onyxcord/events/webhook/update.rb +65 -0
- data/lib/onyxcord/events/webhooks.rb +1 -63
- data/lib/onyxcord/gateway/client.rb +460 -0
- data/lib/onyxcord/interactions/command.rb +120 -0
- data/lib/onyxcord/interactions/context.rb +109 -0
- data/lib/onyxcord/interactions/internal/application_command.rb +203 -0
- data/lib/onyxcord/interactions/internal/message.rb +152 -0
- data/lib/onyxcord/interactions/internal/metadata.rb +109 -0
- data/lib/onyxcord/interactions/internal/option_builder.rb +230 -0
- data/lib/onyxcord/interactions/internal/permission_builder.rb +90 -0
- data/lib/onyxcord/interactions/option.rb +88 -0
- data/lib/onyxcord/interactions/registry.rb +50 -0
- data/lib/onyxcord/interactions.rb +16 -0
- data/lib/onyxcord/internal/async_runtime.rb +32 -0
- data/lib/onyxcord/internal/event_bus.rb +591 -0
- data/lib/onyxcord/internal/event_executor.rb +155 -0
- data/lib/onyxcord/internal/gateway/opcodes.rb +22 -0
- data/lib/onyxcord/internal/gateway/session.rb +45 -0
- data/lib/onyxcord/internal/http.rb +189 -0
- data/lib/onyxcord/internal/json.rb +51 -0
- data/lib/onyxcord/internal/message_payload.rb +78 -0
- data/lib/onyxcord/internal/rate_limiter/async_rest.rb +151 -0
- data/lib/onyxcord/internal/rate_limiter/gateway.rb +44 -0
- data/lib/onyxcord/internal/rate_limiter/rest.rb +144 -0
- data/lib/onyxcord/internal/upload.rb +39 -0
- data/lib/onyxcord/internal/websocket.rb +79 -0
- data/lib/onyxcord/light/data.rb +1 -1
- data/lib/onyxcord/light/integrations.rb +1 -1
- data/lib/onyxcord/light/light_bot.rb +7 -7
- data/lib/onyxcord/{data → models}/activity.rb +2 -2
- data/lib/onyxcord/{data → models}/application.rb +3 -3
- data/lib/onyxcord/{data → models}/avatar_decoration.rb +1 -1
- data/lib/onyxcord/{data → models}/channel.rb +23 -23
- data/lib/onyxcord/{data → models}/collectibles.rb +1 -1
- data/lib/onyxcord/{data → models}/emoji.rb +1 -1
- data/lib/onyxcord/models/interaction.rb +450 -0
- data/lib/onyxcord/{data → models}/invite.rb +1 -1
- data/lib/onyxcord/{data → models}/member.rb +11 -11
- data/lib/onyxcord/{data → models}/message.rb +22 -14
- data/lib/onyxcord/{data → models}/poll.rb +2 -2
- data/lib/onyxcord/{data → models}/primary_server.rb +1 -1
- data/lib/onyxcord/{data → models}/profile.rb +4 -4
- data/lib/onyxcord/{data → models}/role.rb +6 -12
- data/lib/onyxcord/{data → models}/scheduled_event.rb +5 -5
- data/lib/onyxcord/{data → models}/server.rb +41 -41
- data/lib/onyxcord/{data → models}/server_preview.rb +2 -2
- data/lib/onyxcord/{data → models}/team.rb +1 -1
- data/lib/onyxcord/{data → models}/user.rb +5 -5
- data/lib/onyxcord/{data → models}/webhook.rb +13 -11
- data/lib/onyxcord/models.rb +57 -0
- data/lib/onyxcord/{api.rb → rest/client.rb} +83 -27
- data/lib/onyxcord/{api → rest/routes}/application.rb +79 -57
- data/lib/onyxcord/rest/routes/channel/base.rb +73 -0
- data/lib/onyxcord/rest/routes/channel/groups.rb +78 -0
- data/lib/onyxcord/rest/routes/channel/messages.rb +130 -0
- data/lib/onyxcord/rest/routes/channel/permissions.rb +73 -0
- data/lib/onyxcord/rest/routes/channel/pins.rb +45 -0
- data/lib/onyxcord/rest/routes/channel/polls.rb +32 -0
- data/lib/onyxcord/rest/routes/channel/reactions.rb +86 -0
- data/lib/onyxcord/rest/routes/channel/threads.rb +176 -0
- data/lib/onyxcord/rest/routes/channel/webhooks.rb +47 -0
- data/lib/onyxcord/rest/routes/channel.rb +12 -0
- data/lib/onyxcord/{api/interaction.rb → rest/routes/interaction/base.rb} +10 -33
- data/lib/onyxcord/rest/routes/interaction/response.rb +24 -0
- data/lib/onyxcord/rest/routes/interaction.rb +4 -0
- data/lib/onyxcord/{api → rest/routes}/invite.rb +7 -7
- data/lib/onyxcord/rest/routes/server/admin.rb +174 -0
- data/lib/onyxcord/rest/routes/server/assets.rb +25 -0
- data/lib/onyxcord/rest/routes/server/bans.rb +67 -0
- data/lib/onyxcord/rest/routes/server/base.rb +77 -0
- data/lib/onyxcord/rest/routes/server/channels.rb +58 -0
- data/lib/onyxcord/rest/routes/server/emoji.rb +48 -0
- data/lib/onyxcord/rest/routes/server/members.rb +109 -0
- data/lib/onyxcord/rest/routes/server/messages.rb +19 -0
- data/lib/onyxcord/rest/routes/server/roles.rb +156 -0
- data/lib/onyxcord/rest/routes/server/scheduled_events.rb +86 -0
- data/lib/onyxcord/rest/routes/server.rb +12 -0
- data/lib/onyxcord/{api → rest/routes}/user.rb +23 -23
- data/lib/onyxcord/{api → rest/routes}/webhook.rb +30 -32
- data/lib/onyxcord/{allowed_mentions.rb → utils/allowed_mentions.rb} +9 -1
- data/lib/onyxcord/utils/timestamp.rb +69 -0
- data/lib/onyxcord/voice/{voice_bot.rb → client.rb} +4 -4
- data/lib/onyxcord/voice/encoder.rb +1 -1
- data/lib/onyxcord/voice/network/udp.rb +135 -0
- data/lib/onyxcord/voice/network/websocket.rb +225 -0
- data/lib/onyxcord/voice/network.rb +5 -357
- data/lib/onyxcord/webhooks/builder.rb +1 -1
- data/lib/onyxcord/webhooks/client.rb +13 -13
- data/lib/onyxcord/webhooks/modal/group_builder.rb +55 -0
- data/lib/onyxcord/webhooks/modal/label_builder.rb +183 -0
- data/lib/onyxcord/webhooks/modal.rb +2 -239
- data/lib/onyxcord/webhooks/version.rb +3 -3
- data/lib/onyxcord/webhooks/view/container_builder.rb +80 -0
- data/lib/onyxcord/webhooks/view/file_builder.rb +24 -0
- data/lib/onyxcord/webhooks/view/media_gallery_builder.rb +50 -0
- data/lib/onyxcord/webhooks/view/row_builder.rb +120 -0
- data/lib/onyxcord/webhooks/view/section_builder.rb +61 -0
- data/lib/onyxcord/webhooks/view/select_menu_builder.rb +77 -0
- data/lib/onyxcord/webhooks/view/separator_builder.rb +22 -0
- data/lib/onyxcord/webhooks/view/text_display_builder.rb +20 -0
- data/lib/onyxcord/webhooks/view.rb +9 -425
- data/lib/onyxcord.rb +106 -40
- metadata +208 -91
- data/.github/CONTRIBUTING.md +0 -13
- data/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
- data/.github/ISSUE_TEMPLATE/feature_request.md +0 -24
- data/.github/pull_request_template.md +0 -37
- data/.github/workflows/ci.yml +0 -78
- data/.github/workflows/codeql.yml +0 -65
- data/.github/workflows/deploy.yml +0 -54
- data/.github/workflows/release.yml +0 -51
- data/.gitignore +0 -17
- data/.markdownlint.json +0 -4
- data/.overcommit.yml +0 -7
- data/.rspec +0 -2
- data/.rubocop.yml +0 -129
- data/.yardopts +0 -1
- data/CHANGELOG.md +0 -202
- data/Gemfile +0 -6
- data/LICENSE.txt +0 -21
- data/README.md +0 -448
- data/Rakefile +0 -13
- data/lib/onyxcord/api/channel.rb +0 -705
- data/lib/onyxcord/api/server.rb +0 -775
- data/lib/onyxcord/async/runtime.rb +0 -30
- data/lib/onyxcord/commands/command_bot.rb +0 -505
- data/lib/onyxcord/data/interaction.rb +0 -1143
- data/lib/onyxcord/data.rb +0 -57
- data/lib/onyxcord/event_executor.rb +0 -153
- data/lib/onyxcord/gateway.rb +0 -500
- data/lib/onyxcord/http.rb +0 -115
- data/lib/onyxcord/json.rb +0 -49
- data/lib/onyxcord/rate_limiter/async_rest.rb +0 -149
- data/lib/onyxcord/rate_limiter/gateway.rb +0 -42
- data/lib/onyxcord/rate_limiter/rest.rb +0 -142
- data/lib/onyxcord/version.rb +0 -7
- data/lib/onyxcord/websocket.rb +0 -77
- data/onyxcord.gemspec +0 -63
- /data/lib/onyxcord/{configuration.rb → core/configuration.rb} +0 -0
- /data/lib/onyxcord/{data → models}/attachment.rb +0 -0
- /data/lib/onyxcord/{data → models}/audit_logs.rb +0 -0
- /data/lib/onyxcord/{data → models}/call.rb +0 -0
- /data/lib/onyxcord/{data → models}/channel_tag.rb +0 -0
- /data/lib/onyxcord/{data → models}/component.rb +0 -0
- /data/lib/onyxcord/{data → models}/embed.rb +0 -0
- /data/lib/onyxcord/{data → models}/install_params.rb +0 -0
- /data/lib/onyxcord/{data → models}/integration.rb +0 -0
- /data/lib/onyxcord/{data → models}/message_activity.rb +0 -0
- /data/lib/onyxcord/{data → models}/overwrite.rb +0 -0
- /data/lib/onyxcord/{data → models}/reaction.rb +0 -0
- /data/lib/onyxcord/{data → models}/recipient.rb +0 -0
- /data/lib/onyxcord/{data → models}/role_connection_data.rb +0 -0
- /data/lib/onyxcord/{data → models}/role_subscription.rb +0 -0
- /data/lib/onyxcord/{data → models}/snapshot.rb +0 -0
- /data/lib/onyxcord/{data → models}/timestamp.rb +0 -0
- /data/lib/onyxcord/{data → models}/voice_region.rb +0 -0
- /data/lib/onyxcord/{data → models}/voice_state.rb +0 -0
- /data/lib/onyxcord/{colour_rgb.rb → utils/colour_rgb.rb} +0 -0
- /data/lib/onyxcord/{id_object.rb → utils/id_object.rb} +0 -0
- /data/lib/onyxcord/{message_components.rb → utils/message_components.rb} +0 -0
- /data/lib/onyxcord/{paginator.rb → utils/paginator.rb} +0 -0
- /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
|
-
|
|
4
|
-
|
|
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/
|
|
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/
|
|
4
|
-
require 'onyxcord/
|
|
5
|
-
|
|
6
|
-
|
|
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'
|