onyxcord 2.1.0 → 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/{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/{message_payload.rb → internal/message_payload.rb} +3 -3
- 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/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 +18 -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 +10 -10
- data/lib/onyxcord/models.rb +57 -0
- data/lib/onyxcord/{api.rb → rest/client.rb} +23 -22
- 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} +7 -25
- 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 +22 -22
- data/lib/onyxcord/{allowed_mentions.rb → utils/allowed_mentions.rb} +1 -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 -42
- metadata +207 -92
- 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 -257
- 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 -703
- 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 -1151
- data/lib/onyxcord/data.rb +0 -57
- data/lib/onyxcord/event_executor.rb +0 -153
- data/lib/onyxcord/gateway.rb +0 -505
- data/lib/onyxcord/http.rb +0 -186
- data/lib/onyxcord/json.rb +0 -49
- data/lib/onyxcord/rate_limiter/async_rest.rb +0 -150
- 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/{errors.rb → core/errors.rb} +0 -0
- /data/lib/onyxcord/{upload.rb → internal/upload.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
|
@@ -1,218 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'onyxcord/events/
|
|
4
|
-
require 'onyxcord/
|
|
5
|
-
|
|
6
|
-
module OnyxCord::Events
|
|
7
|
-
# Generic superclass for events about adding and removing reactions
|
|
8
|
-
class ReactionEvent < Event
|
|
9
|
-
include Respondable
|
|
10
|
-
|
|
11
|
-
# @return [Emoji] the emoji that was reacted with.
|
|
12
|
-
attr_reader :emoji
|
|
13
|
-
|
|
14
|
-
# @!visibility private
|
|
15
|
-
attr_reader :message_id
|
|
16
|
-
|
|
17
|
-
# @return [true, false] whether the reaction is a burst reaction.
|
|
18
|
-
attr_reader :burst
|
|
19
|
-
alias_method :burst?, :burst
|
|
20
|
-
|
|
21
|
-
# @return [Integer] the type of the reaction. 0 for normal, 1 for burst.
|
|
22
|
-
attr_reader :type
|
|
23
|
-
|
|
24
|
-
# @return [Array<ColourRGB>] an array of colors used for animations in burst reactions.
|
|
25
|
-
attr_reader :burst_colours
|
|
26
|
-
alias_method :burst_colors, :burst_colours
|
|
27
|
-
|
|
28
|
-
# @!visibility private
|
|
29
|
-
def initialize(data, bot)
|
|
30
|
-
@bot = bot
|
|
31
|
-
|
|
32
|
-
@emoji = OnyxCord::Emoji.new(data['emoji'], bot, nil)
|
|
33
|
-
@user_id = data['user_id'].to_i
|
|
34
|
-
@message_id = data['message_id'].to_i
|
|
35
|
-
@channel_id = data['channel_id'].to_i
|
|
36
|
-
@burst = data['burst']
|
|
37
|
-
@type = data['type']
|
|
38
|
-
@burst_colours = data['burst_colors']&.map { |b| OnyxCord::ColourRGB.new(b.delete('#')) } || []
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# @return [User, Member] the user that reacted to this message, or member if a server exists.
|
|
42
|
-
def user
|
|
43
|
-
# Cache the user so we don't do requests all the time
|
|
44
|
-
@user ||= if server
|
|
45
|
-
@server.member(@user_id)
|
|
46
|
-
else
|
|
47
|
-
@bot.user(@user_id)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
# @return [Message] the message that was reacted to.
|
|
52
|
-
def message
|
|
53
|
-
@message ||= channel.load_message(@message_id)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# @return [Channel] the channel that was reacted in.
|
|
57
|
-
def channel
|
|
58
|
-
@channel ||= @bot.channel(@channel_id)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# @return [Server, nil] the server that was reacted in. If reacted in a PM channel, it will be nil.
|
|
62
|
-
def server
|
|
63
|
-
@server ||= channel.server
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# Generic superclass for event handlers pertaining to adding and removing reactions
|
|
68
|
-
class ReactionEventHandler < EventHandler
|
|
69
|
-
def matches?(event)
|
|
70
|
-
# Check for the proper event type
|
|
71
|
-
return false unless event.is_a? ReactionEvent
|
|
72
|
-
|
|
73
|
-
[
|
|
74
|
-
matches_all(@attributes[:emoji], event.emoji) do |a, e|
|
|
75
|
-
case a
|
|
76
|
-
when Integer
|
|
77
|
-
e.id == a
|
|
78
|
-
when String
|
|
79
|
-
e.name == a || e.name == a.delete(':') || e.id == a.resolve_id
|
|
80
|
-
else
|
|
81
|
-
e == a
|
|
82
|
-
end
|
|
83
|
-
end,
|
|
84
|
-
matches_all(@attributes[:message], event.message_id) do |a, e|
|
|
85
|
-
a == e
|
|
86
|
-
end,
|
|
87
|
-
matches_all(@attributes[:in], event.channel) do |a, e|
|
|
88
|
-
case a
|
|
89
|
-
when String
|
|
90
|
-
# Make sure to remove the "#" from channel names in case it was specified
|
|
91
|
-
a.delete('#') == e.name
|
|
92
|
-
when Integer
|
|
93
|
-
a == e.id
|
|
94
|
-
else
|
|
95
|
-
a == e
|
|
96
|
-
end
|
|
97
|
-
end,
|
|
98
|
-
matches_all(@attributes[:from], event.user) do |a, e|
|
|
99
|
-
case a
|
|
100
|
-
when String
|
|
101
|
-
a == e.name
|
|
102
|
-
when :bot
|
|
103
|
-
e.current_bot?
|
|
104
|
-
else
|
|
105
|
-
a == e
|
|
106
|
-
end
|
|
107
|
-
end,
|
|
108
|
-
matches_all(@attributes[:type], event.type) do |a, e|
|
|
109
|
-
case a
|
|
110
|
-
when Integer
|
|
111
|
-
a == e
|
|
112
|
-
when Symbol, String
|
|
113
|
-
OnyxCord::Reaction::TYPES[a.to_sym] == e
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
].reduce(true, &:&)
|
|
117
|
-
end
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
# Event raised when somebody reacts to a message
|
|
121
|
-
class ReactionAddEvent < ReactionEvent; end
|
|
122
|
-
|
|
123
|
-
# Event handler for {ReactionAddEvent}
|
|
124
|
-
class ReactionAddEventHandler < ReactionEventHandler; end
|
|
125
|
-
|
|
126
|
-
# Event raised when somebody removes a reaction to a message
|
|
127
|
-
class ReactionRemoveEvent < ReactionEvent; end
|
|
128
|
-
|
|
129
|
-
# Event handler for {ReactionRemoveEvent}
|
|
130
|
-
class ReactionRemoveEventHandler < ReactionEventHandler; end
|
|
131
|
-
|
|
132
|
-
# Event raised when somebody removes all reactions from a message
|
|
133
|
-
class ReactionRemoveAllEvent < Event
|
|
134
|
-
include Respondable
|
|
135
|
-
|
|
136
|
-
# @!visibility private
|
|
137
|
-
attr_reader :message_id
|
|
138
|
-
|
|
139
|
-
# @!visibility private
|
|
140
|
-
def initialize(data, bot)
|
|
141
|
-
@bot = bot
|
|
142
|
-
|
|
143
|
-
@message_id = data['message_id'].to_i
|
|
144
|
-
@channel_id = data['channel_id'].to_i
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
# @return [Channel] the channel where the removal occurred.
|
|
148
|
-
def channel
|
|
149
|
-
@channel ||= @bot.channel(@channel_id)
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
# @return [Message] the message all reactions were removed from.
|
|
153
|
-
def message
|
|
154
|
-
@message ||= channel.load_message(@message_id)
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
# Event handler for {ReactionRemoveAllEvent}
|
|
159
|
-
class ReactionRemoveAllEventHandler < EventHandler
|
|
160
|
-
def matches?(event)
|
|
161
|
-
# Check for the proper event type
|
|
162
|
-
return false unless event.is_a? ReactionRemoveAllEvent
|
|
163
|
-
|
|
164
|
-
[
|
|
165
|
-
matches_all(@attributes[:message], event.message_id) do |a, e|
|
|
166
|
-
a == e
|
|
167
|
-
end,
|
|
168
|
-
matches_all(@attributes[:in], event.channel) do |a, e|
|
|
169
|
-
case a
|
|
170
|
-
when String
|
|
171
|
-
# Make sure to remove the "#" from channel names in case it was specified
|
|
172
|
-
a.delete('#') == e.name
|
|
173
|
-
when Integer
|
|
174
|
-
a == e.id
|
|
175
|
-
else
|
|
176
|
-
a == e
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
].reduce(true, &:&)
|
|
180
|
-
end
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
# Event raised when all instances of a single reaction are removed from a message.
|
|
184
|
-
class ReactionRemoveEmojiEvent < ReactionRemoveAllEvent
|
|
185
|
-
# @return [Emoji] the emoji that was removed.
|
|
186
|
-
attr_reader :emoji
|
|
187
|
-
|
|
188
|
-
# @!visibility private
|
|
189
|
-
def initialize(data, bot)
|
|
190
|
-
super
|
|
191
|
-
|
|
192
|
-
@emoji = OnyxCord::Emoji.new(data['emoji'], bot)
|
|
193
|
-
end
|
|
194
|
-
end
|
|
195
|
-
|
|
196
|
-
# Event handler for {ReactionRemoveEmojiEvent}.
|
|
197
|
-
class ReactionRemoveEmojiEventHandler < ReactionRemoveAllEventHandler
|
|
198
|
-
# @!visibility private
|
|
199
|
-
def matches?(event)
|
|
200
|
-
# Check for the proper event type.
|
|
201
|
-
return false unless super
|
|
202
|
-
return false unless event.is_a?(ReactionRemoveEmojiEvent)
|
|
203
|
-
|
|
204
|
-
[
|
|
205
|
-
matches_all(@attributes[:emoji], event.emoji) do |a, e|
|
|
206
|
-
case a
|
|
207
|
-
when Integer
|
|
208
|
-
e.id == a
|
|
209
|
-
when String
|
|
210
|
-
e.name == a || e.name == a.delete(':') || e.id == a.resolve_id
|
|
211
|
-
else
|
|
212
|
-
e == a
|
|
213
|
-
end
|
|
214
|
-
end
|
|
215
|
-
].reduce(true, &:&)
|
|
216
|
-
end
|
|
217
|
-
end
|
|
218
|
-
end
|
|
3
|
+
require 'onyxcord/events/reactions/base'
|
|
4
|
+
require 'onyxcord/events/reactions/clear'
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'onyxcord/events/generic'
|
|
4
|
+
require 'onyxcord/models'
|
|
5
|
+
|
|
6
|
+
module OnyxCord::Events
|
|
7
|
+
# Raised when a role is created on a server
|
|
8
|
+
class ServerRoleCreateEvent < Event
|
|
9
|
+
# @return [Role] the role that got created
|
|
10
|
+
attr_reader :role
|
|
11
|
+
|
|
12
|
+
# @return [Server] the server on which a role got created
|
|
13
|
+
attr_reader :server
|
|
14
|
+
|
|
15
|
+
# @!attribute [r] name
|
|
16
|
+
# @return [String] this role's name
|
|
17
|
+
# @see Role#name
|
|
18
|
+
delegate :name, to: :role
|
|
19
|
+
|
|
20
|
+
# @!visibility private
|
|
21
|
+
def initialize(data, bot)
|
|
22
|
+
@bot = bot
|
|
23
|
+
|
|
24
|
+
@server = bot.server(data['guild_id'].to_i)
|
|
25
|
+
@role = @server&.role(data['role']['id'].to_i)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Event handler for ServerRoleCreateEvent
|
|
30
|
+
class ServerRoleCreateEventHandler < EventHandler
|
|
31
|
+
def matches?(event)
|
|
32
|
+
# Check for the proper event type
|
|
33
|
+
return false unless event.is_a? ServerRoleCreateEvent
|
|
34
|
+
|
|
35
|
+
[
|
|
36
|
+
matches_all(@attributes[:name], event.name) do |a, e|
|
|
37
|
+
a == if a.is_a? String
|
|
38
|
+
e.to_s
|
|
39
|
+
else
|
|
40
|
+
e
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
].reduce(true, &:&)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'onyxcord/events/generic'
|
|
4
|
+
|
|
5
|
+
module OnyxCord::Events
|
|
6
|
+
# Raised when a role is deleted from a server
|
|
7
|
+
class ServerRoleDeleteEvent < Event
|
|
8
|
+
# @return [Integer] the ID of the role that got deleted.
|
|
9
|
+
attr_reader :id
|
|
10
|
+
|
|
11
|
+
# @return [Server] the server on which a role got deleted.
|
|
12
|
+
attr_reader :server
|
|
13
|
+
|
|
14
|
+
# @!visibility private
|
|
15
|
+
def initialize(data, bot)
|
|
16
|
+
@bot = bot
|
|
17
|
+
|
|
18
|
+
# The role should already be deleted from the server's list
|
|
19
|
+
# by the time we create this event, so we'll create a temporary
|
|
20
|
+
# role object for event consumers to use.
|
|
21
|
+
@id = data['role_id'].to_i
|
|
22
|
+
server_id = data['guild_id'].to_i
|
|
23
|
+
@server = bot.server(server_id)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# EventHandler for ServerRoleDeleteEvent
|
|
28
|
+
class ServerRoleDeleteEventHandler < EventHandler
|
|
29
|
+
def matches?(event)
|
|
30
|
+
# Check for the proper event type
|
|
31
|
+
return false unless event.is_a? ServerRoleDeleteEvent
|
|
32
|
+
|
|
33
|
+
[
|
|
34
|
+
matches_all(@attributes[:id], event.id) do |a, e|
|
|
35
|
+
a.resolve_id == e.resolve_id
|
|
36
|
+
end
|
|
37
|
+
].reduce(true, &:&)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'onyxcord/events/role/create'
|
|
4
|
+
|
|
5
|
+
module OnyxCord::Events
|
|
6
|
+
# Event raised when a role updates on a server
|
|
7
|
+
class ServerRoleUpdateEvent < ServerRoleCreateEvent; end
|
|
8
|
+
|
|
9
|
+
# Event handler for ServerRoleUpdateEvent
|
|
10
|
+
class ServerRoleUpdateEventHandler < ServerRoleCreateEventHandler; end
|
|
11
|
+
end
|
|
@@ -1,87 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'onyxcord/events/
|
|
4
|
-
require 'onyxcord/
|
|
5
|
-
|
|
6
|
-
module OnyxCord::Events
|
|
7
|
-
# Raised when a role is created on a server
|
|
8
|
-
class ServerRoleCreateEvent < Event
|
|
9
|
-
# @return [Role] the role that got created
|
|
10
|
-
attr_reader :role
|
|
11
|
-
|
|
12
|
-
# @return [Server] the server on which a role got created
|
|
13
|
-
attr_reader :server
|
|
14
|
-
|
|
15
|
-
# @!attribute [r] name
|
|
16
|
-
# @return [String] this role's name
|
|
17
|
-
# @see Role#name
|
|
18
|
-
delegate :name, to: :role
|
|
19
|
-
|
|
20
|
-
# @!visibility private
|
|
21
|
-
def initialize(data, bot)
|
|
22
|
-
@bot = bot
|
|
23
|
-
|
|
24
|
-
@server = bot.server(data['guild_id'].to_i)
|
|
25
|
-
@role = @server&.role(data['role']['id'].to_i)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
# Event handler for ServerRoleCreateEvent
|
|
30
|
-
class ServerRoleCreateEventHandler < EventHandler
|
|
31
|
-
def matches?(event)
|
|
32
|
-
# Check for the proper event type
|
|
33
|
-
return false unless event.is_a? ServerRoleCreateEvent
|
|
34
|
-
|
|
35
|
-
[
|
|
36
|
-
matches_all(@attributes[:name], event.name) do |a, e|
|
|
37
|
-
a == if a.is_a? String
|
|
38
|
-
e.to_s
|
|
39
|
-
else
|
|
40
|
-
e
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
].reduce(true, &:&)
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# Raised when a role is deleted from a server
|
|
48
|
-
class ServerRoleDeleteEvent < Event
|
|
49
|
-
# @return [Integer] the ID of the role that got deleted.
|
|
50
|
-
attr_reader :id
|
|
51
|
-
|
|
52
|
-
# @return [Server] the server on which a role got deleted.
|
|
53
|
-
attr_reader :server
|
|
54
|
-
|
|
55
|
-
# @!visibility private
|
|
56
|
-
def initialize(data, bot)
|
|
57
|
-
@bot = bot
|
|
58
|
-
|
|
59
|
-
# The role should already be deleted from the server's list
|
|
60
|
-
# by the time we create this event, so we'll create a temporary
|
|
61
|
-
# role object for event consumers to use.
|
|
62
|
-
@id = data['role_id'].to_i
|
|
63
|
-
server_id = data['guild_id'].to_i
|
|
64
|
-
@server = bot.server(server_id)
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# EventHandler for ServerRoleDeleteEvent
|
|
69
|
-
class ServerRoleDeleteEventHandler < EventHandler
|
|
70
|
-
def matches?(event)
|
|
71
|
-
# Check for the proper event type
|
|
72
|
-
return false unless event.is_a? ServerRoleDeleteEvent
|
|
73
|
-
|
|
74
|
-
[
|
|
75
|
-
matches_all(@attributes[:id], event.id) do |a, e|
|
|
76
|
-
a.resolve_id == e.resolve_id
|
|
77
|
-
end
|
|
78
|
-
].reduce(true, &:&)
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
# Event raised when a role updates on a server
|
|
83
|
-
class ServerRoleUpdateEvent < ServerRoleCreateEvent; end
|
|
84
|
-
|
|
85
|
-
# Event handler for ServerRoleUpdateEvent
|
|
86
|
-
class ServerRoleUpdateEventHandler < ServerRoleCreateEventHandler; end
|
|
87
|
-
end
|
|
3
|
+
require 'onyxcord/events/role/create'
|
|
4
|
+
require 'onyxcord/events/role/update'
|
|
5
|
+
require 'onyxcord/events/role/delete'
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'onyxcord/models'
|
|
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
|
+
|
|
25
|
+
# Raised whenever a scheduled event is created.
|
|
26
|
+
class ScheduledEventCreateEvent < ScheduledEventEvent; end
|
|
27
|
+
|
|
28
|
+
# Raised whenever a scheduled event is updated.
|
|
29
|
+
|
|
30
|
+
# Raised whenever a scheduled event is updated.
|
|
31
|
+
class ScheduledEventUpdateEvent < ScheduledEventEvent; end
|
|
32
|
+
|
|
33
|
+
# Raised whenever a scheduled event is deleted.
|
|
34
|
+
|
|
35
|
+
# Raised whenever a scheduled event is deleted.
|
|
36
|
+
class ScheduledEventDeleteEvent < ScheduledEventEvent
|
|
37
|
+
# @!visibility private
|
|
38
|
+
def initialize(data, bot)
|
|
39
|
+
@bot = bot
|
|
40
|
+
@server = bot.server(data['guild_id'].to_i)
|
|
41
|
+
@scheduled_event = OnyxCord::ScheduledEvent.new(data, @server, @bot)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Generic superclass for scheduled event user events.
|
|
46
|
+
|
|
47
|
+
# Generic event handler for scheduled event.
|
|
48
|
+
class ScheduledEventEventHandler < EventHandler
|
|
49
|
+
# @!visibility private
|
|
50
|
+
def matches?(event)
|
|
51
|
+
# Check for the proper event type.
|
|
52
|
+
return false unless event.is_a?(ScheduledEventEvent)
|
|
53
|
+
|
|
54
|
+
[
|
|
55
|
+
matches_all(@attributes[:server], event.server) do |a, e|
|
|
56
|
+
a&.resolve_id == e&.resolve_id
|
|
57
|
+
end,
|
|
58
|
+
|
|
59
|
+
matches_all(@attributes[:id], event.scheduled_event) do |a, e|
|
|
60
|
+
a&.resolve_id == e&.resolve_id
|
|
61
|
+
end,
|
|
62
|
+
|
|
63
|
+
matches_all(@attributes[:creator], event.scheduled_event.creator) do |a, e|
|
|
64
|
+
a&.resolve_id == e&.resolve_id
|
|
65
|
+
end,
|
|
66
|
+
|
|
67
|
+
matches_all(@attributes[:channel], event.scheduled_event.channel) do |a, e|
|
|
68
|
+
a&.resolve_id == e&.resolve_id
|
|
69
|
+
end,
|
|
70
|
+
|
|
71
|
+
matches_all(@attributes[:entity_id], event.scheduled_event.entity_id) do |a, e|
|
|
72
|
+
a&.resolve_id == e&.resolve_id
|
|
73
|
+
end,
|
|
74
|
+
|
|
75
|
+
matches_all(@attributes[:entity_type], event.scheduled_event.entity_type) do |a, e|
|
|
76
|
+
case a
|
|
77
|
+
when Symbol, String
|
|
78
|
+
OnyxCord::ScheduledEvent::ENTITY_TYPES[a.to_sym] == e
|
|
79
|
+
else
|
|
80
|
+
a == e
|
|
81
|
+
end
|
|
82
|
+
end,
|
|
83
|
+
|
|
84
|
+
matches_all(@attributes[:status], event.scheduled_event.status) do |a, e|
|
|
85
|
+
case a
|
|
86
|
+
when Symbol, String
|
|
87
|
+
OnyxCord::ScheduledEvent::STATUSES[a.to_sym] == e
|
|
88
|
+
else
|
|
89
|
+
a == e
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
].reduce(true, &:&)
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Event handler for :GUILD_SCHEDULED_EVENT_CREATE events.
|
|
97
|
+
|
|
98
|
+
# Event handler for :GUILD_SCHEDULED_EVENT_CREATE events.
|
|
99
|
+
class ScheduledEventCreateEventHandler < ScheduledEventEventHandler; end
|
|
100
|
+
|
|
101
|
+
# Event handler for :GUILD_SCHEDULED_EVENT_UPDATE events.
|
|
102
|
+
|
|
103
|
+
# Event handler for :GUILD_SCHEDULED_EVENT_UPDATE events.
|
|
104
|
+
class ScheduledEventUpdateEventHandler < ScheduledEventEventHandler; end
|
|
105
|
+
|
|
106
|
+
# Event handler for :GUILD_SCHEDULED_EVENT_DELETE events.
|
|
107
|
+
|
|
108
|
+
# Event handler for :GUILD_SCHEDULED_EVENT_DELETE events.
|
|
109
|
+
class ScheduledEventDeleteEventHandler < ScheduledEventEventHandler; end
|
|
110
|
+
|
|
111
|
+
# Generic event handler for scheduled event user events.
|
|
112
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'onyxcord/models'
|
|
4
|
+
require 'onyxcord/events/generic'
|
|
5
|
+
|
|
6
|
+
module OnyxCord::Events
|
|
7
|
+
# Generic superclass for scheduled event user events.
|
|
8
|
+
class ScheduledEventUserEvent < Event
|
|
9
|
+
# @!visibility private
|
|
10
|
+
attr_reader :user_id
|
|
11
|
+
|
|
12
|
+
# @!visibility private
|
|
13
|
+
attr_reader :server_id
|
|
14
|
+
|
|
15
|
+
# @!visibility private
|
|
16
|
+
attr_reader :scheduled_event_id
|
|
17
|
+
|
|
18
|
+
# @!visibility private
|
|
19
|
+
def initialize(data, bot)
|
|
20
|
+
@bot = bot
|
|
21
|
+
@user_id = data['user_id'].to_i
|
|
22
|
+
@server_id = data['guild_id'].to_i
|
|
23
|
+
@scheduled_event_id = data['guild_scheduled_event_id'].to_i
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Get the server the scheduled event in question is from.
|
|
27
|
+
# @return [Server] the server the scheduled event is associated with.
|
|
28
|
+
def server
|
|
29
|
+
@bot.server(@server_id)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Get the scheduled event that the user was added to or removed from.
|
|
33
|
+
# @return [ScheduledEvent] the scheduled event that the user was actioned on.
|
|
34
|
+
def scheduled_event
|
|
35
|
+
server.scheduled_event(@scheduled_event_id)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Get the user that was added to or removed from the scheduled event.
|
|
39
|
+
# @return [Member, User] the server member that was added to or removed from the
|
|
40
|
+
# scheduled event, or a user if the member cannot be accessed by the bot.
|
|
41
|
+
def member
|
|
42
|
+
server.member(@user_id) || @bot.user(@user_id)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
alias_method :user, :member
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Raised whenever a user is added to a scheduled event.
|
|
49
|
+
|
|
50
|
+
# Raised whenever a user is added to a scheduled event.
|
|
51
|
+
class ScheduledEventUserAddEvent < ScheduledEventUserEvent; end
|
|
52
|
+
|
|
53
|
+
# Raised whenever a user is removed from a scheduled event.
|
|
54
|
+
|
|
55
|
+
# Raised whenever a user is removed from a scheduled event.
|
|
56
|
+
class ScheduledEventUserRemoveEvent < ScheduledEventUserEvent; end
|
|
57
|
+
|
|
58
|
+
# Generic event handler for scheduled event.
|
|
59
|
+
|
|
60
|
+
# Generic event handler for scheduled event user events.
|
|
61
|
+
class ScheduledEventUserEventHandler < EventHandler
|
|
62
|
+
# @!visibility private
|
|
63
|
+
def matches?(event)
|
|
64
|
+
return false unless event.is_a?(ScheduledEventUserEvent)
|
|
65
|
+
|
|
66
|
+
[
|
|
67
|
+
matches_all(@attributes[:user], event.user_id) do |a, e|
|
|
68
|
+
a.resolve_id == e.resolve_id
|
|
69
|
+
end,
|
|
70
|
+
|
|
71
|
+
matches_all(@attributes[:server], event.server_id) do |a, e|
|
|
72
|
+
a.resolve_id == e.resolve_id
|
|
73
|
+
end,
|
|
74
|
+
|
|
75
|
+
matches_all(@attributes[:scheduled_event], event.scheduled_event_id) do |a, e|
|
|
76
|
+
a.resolve_id == e.resolve_id
|
|
77
|
+
end
|
|
78
|
+
].reduce(true, &:&)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Event handler for :GUILD_SCHEDULED_EVENT_USER_ADD events.
|
|
83
|
+
|
|
84
|
+
# Event handler for :GUILD_SCHEDULED_EVENT_USER_ADD events.
|
|
85
|
+
class ScheduledEventUserAddEventHandler < ScheduledEventUserEventHandler; end
|
|
86
|
+
|
|
87
|
+
# Event handler for :GUILD_SCHEDULED_EVENT_USER_REMOVE events.
|
|
88
|
+
|
|
89
|
+
# Event handler for :GUILD_SCHEDULED_EVENT_USER_REMOVE events.
|
|
90
|
+
class ScheduledEventUserRemoveEventHandler < ScheduledEventUserEventHandler; end
|
|
91
|
+
end
|