onyxcord 2.1.0 → 3.2.1
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
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'onyxcord/events/generic'
|
|
4
|
+
require 'onyxcord/models'
|
|
5
|
+
|
|
6
|
+
module OnyxCord::Events
|
|
7
|
+
# Event raised when a user's voice state updates
|
|
8
|
+
class VoiceStateUpdateEvent < Event
|
|
9
|
+
attr_reader :user, :user_id, :token, :suppress, :session_id, :self_mute, :self_deaf, :mute, :deaf, :server, :channel
|
|
10
|
+
|
|
11
|
+
# @return [Channel, nil] the old channel this user was on, or nil if the user is newly joining voice.
|
|
12
|
+
attr_reader :old_channel
|
|
13
|
+
|
|
14
|
+
# @return [Integer, nil] the current voice channel ID, or nil if the user left voice.
|
|
15
|
+
attr_reader :channel_id
|
|
16
|
+
|
|
17
|
+
# @return [Integer, nil] the previous voice channel ID, or nil if the user joined voice.
|
|
18
|
+
attr_reader :old_channel_id
|
|
19
|
+
|
|
20
|
+
# @!visibility private
|
|
21
|
+
def initialize(data, old_channel_id, bot)
|
|
22
|
+
@bot = bot
|
|
23
|
+
|
|
24
|
+
@token = data['token']
|
|
25
|
+
@suppress = data['suppress']
|
|
26
|
+
@session_id = data['session_id']
|
|
27
|
+
@self_mute = data['self_mute']
|
|
28
|
+
@self_deaf = data['self_deaf']
|
|
29
|
+
@mute = data['mute']
|
|
30
|
+
@deaf = data['deaf']
|
|
31
|
+
@user_id = data['user_id']&.to_i
|
|
32
|
+
@channel_id = data['channel_id']&.to_i
|
|
33
|
+
@old_channel_id = old_channel_id&.to_i
|
|
34
|
+
@server = cached_server(bot, data['guild_id'])
|
|
35
|
+
return unless @server
|
|
36
|
+
|
|
37
|
+
@channel = cached_channel(bot, @channel_id, @server)
|
|
38
|
+
@old_channel = cached_channel(bot, @old_channel_id, @server)
|
|
39
|
+
@user = cached_user(bot, data)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def cached_server(bot, server_id)
|
|
43
|
+
servers = bot.instance_variable_get(:@servers)
|
|
44
|
+
servers&.[](server_id.to_i)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def cached_channel(bot, channel_id, server)
|
|
48
|
+
return nil unless channel_id
|
|
49
|
+
|
|
50
|
+
channels = bot.instance_variable_get(:@channels)
|
|
51
|
+
channels&.[](channel_id.to_i) || server.channels.find { |channel| channel.id == channel_id.to_i }
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def cached_user(bot, data)
|
|
55
|
+
user_data = data.dig('member', 'user') || data['user']
|
|
56
|
+
return bot.ensure_user(user_data) if user_data
|
|
57
|
+
|
|
58
|
+
users = bot.instance_variable_get(:@users)
|
|
59
|
+
users&.[](data['user_id'].to_i)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Event handler for VoiceStateUpdateEvent
|
|
64
|
+
class VoiceStateUpdateEventHandler < EventHandler
|
|
65
|
+
def matches?(event)
|
|
66
|
+
# Check for the proper event type
|
|
67
|
+
return false unless event.is_a? VoiceStateUpdateEvent
|
|
68
|
+
|
|
69
|
+
[
|
|
70
|
+
matches_all(@attributes[:from], event.user) do |a, e|
|
|
71
|
+
next unless e
|
|
72
|
+
|
|
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[:mute], event.mute) do |a, e|
|
|
83
|
+
a == if a.is_a? String
|
|
84
|
+
e.to_s
|
|
85
|
+
else
|
|
86
|
+
e
|
|
87
|
+
end
|
|
88
|
+
end,
|
|
89
|
+
matches_all(@attributes[:deaf], event.deaf) do |a, e|
|
|
90
|
+
a == if a.is_a? String
|
|
91
|
+
e.to_s
|
|
92
|
+
else
|
|
93
|
+
e
|
|
94
|
+
end
|
|
95
|
+
end,
|
|
96
|
+
matches_all(@attributes[:self_mute], event.self_mute) do |a, e|
|
|
97
|
+
a == if a.is_a? String
|
|
98
|
+
e.to_s
|
|
99
|
+
else
|
|
100
|
+
e
|
|
101
|
+
end
|
|
102
|
+
end,
|
|
103
|
+
matches_all(@attributes[:self_deaf], event.self_deaf) do |a, e|
|
|
104
|
+
a == if a.is_a? String
|
|
105
|
+
e.to_s
|
|
106
|
+
else
|
|
107
|
+
e
|
|
108
|
+
end
|
|
109
|
+
end,
|
|
110
|
+
matches_all(@attributes[:channel], event.channel) do |a, e|
|
|
111
|
+
next unless e # Don't bother if the channel is nil
|
|
112
|
+
|
|
113
|
+
a == case a
|
|
114
|
+
when String
|
|
115
|
+
e.name
|
|
116
|
+
when Integer
|
|
117
|
+
e.id
|
|
118
|
+
else
|
|
119
|
+
e
|
|
120
|
+
end
|
|
121
|
+
end,
|
|
122
|
+
matches_all(@attributes[:old_channel], event.old_channel) do |a, e|
|
|
123
|
+
next unless e # Don't bother if the channel is nil
|
|
124
|
+
|
|
125
|
+
a == case a
|
|
126
|
+
when String
|
|
127
|
+
e.name
|
|
128
|
+
when Integer
|
|
129
|
+
e.id
|
|
130
|
+
else
|
|
131
|
+
e
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
].reduce(true, &:&)
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
@@ -1,48 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'onyxcord/events/
|
|
4
|
-
require 'onyxcord/
|
|
5
|
-
|
|
6
|
-
module OnyxCord::Events
|
|
7
|
-
# Event raised when a server's voice server is updating.
|
|
8
|
-
# Sent when initially connecting to voice and when a voice instance fails
|
|
9
|
-
# over to a new server.
|
|
10
|
-
# This event is exposed for use with library agnostic interfaces like telecom and
|
|
11
|
-
# lavalink.
|
|
12
|
-
class VoiceServerUpdateEvent < Event
|
|
13
|
-
# @return [String] The voice connection token
|
|
14
|
-
attr_reader :token
|
|
15
|
-
|
|
16
|
-
# @return [Server] The server this update is for.
|
|
17
|
-
attr_reader :server
|
|
18
|
-
|
|
19
|
-
# @return [String] The voice server host.
|
|
20
|
-
attr_reader :endpoint
|
|
21
|
-
|
|
22
|
-
# @!visibility private
|
|
23
|
-
def initialize(data, bot)
|
|
24
|
-
@bot = bot
|
|
25
|
-
|
|
26
|
-
@token = data['token']
|
|
27
|
-
@endpoint = data['endpoint']
|
|
28
|
-
@server = bot.server(data['guild_id'])
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# Event handler for VoiceServerUpdateEvent
|
|
33
|
-
class VoiceServerUpdateEventHandler < EventHandler
|
|
34
|
-
def matches?(event)
|
|
35
|
-
return false unless event.is_a? VoiceServerUpdateEvent
|
|
36
|
-
|
|
37
|
-
[
|
|
38
|
-
matches_all(@attributes[:from], event.server) do |a, e|
|
|
39
|
-
a == if a.is_a? String
|
|
40
|
-
e.name
|
|
41
|
-
else
|
|
42
|
-
e
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
]
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
3
|
+
require 'onyxcord/events/voice/state_update'
|
|
4
|
+
require 'onyxcord/events/voice/server_update'
|
|
@@ -1,137 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'onyxcord/events/
|
|
4
|
-
require 'onyxcord/
|
|
5
|
-
|
|
6
|
-
module OnyxCord::Events
|
|
7
|
-
# Event raised when a user's voice state updates
|
|
8
|
-
class VoiceStateUpdateEvent < Event
|
|
9
|
-
attr_reader :user, :user_id, :token, :suppress, :session_id, :self_mute, :self_deaf, :mute, :deaf, :server, :channel
|
|
10
|
-
|
|
11
|
-
# @return [Channel, nil] the old channel this user was on, or nil if the user is newly joining voice.
|
|
12
|
-
attr_reader :old_channel
|
|
13
|
-
|
|
14
|
-
# @return [Integer, nil] the current voice channel ID, or nil if the user left voice.
|
|
15
|
-
attr_reader :channel_id
|
|
16
|
-
|
|
17
|
-
# @return [Integer, nil] the previous voice channel ID, or nil if the user joined voice.
|
|
18
|
-
attr_reader :old_channel_id
|
|
19
|
-
|
|
20
|
-
# @!visibility private
|
|
21
|
-
def initialize(data, old_channel_id, bot)
|
|
22
|
-
@bot = bot
|
|
23
|
-
|
|
24
|
-
@token = data['token']
|
|
25
|
-
@suppress = data['suppress']
|
|
26
|
-
@session_id = data['session_id']
|
|
27
|
-
@self_mute = data['self_mute']
|
|
28
|
-
@self_deaf = data['self_deaf']
|
|
29
|
-
@mute = data['mute']
|
|
30
|
-
@deaf = data['deaf']
|
|
31
|
-
@user_id = data['user_id']&.to_i
|
|
32
|
-
@channel_id = data['channel_id']&.to_i
|
|
33
|
-
@old_channel_id = old_channel_id&.to_i
|
|
34
|
-
@server = cached_server(bot, data['guild_id'])
|
|
35
|
-
return unless @server
|
|
36
|
-
|
|
37
|
-
@channel = cached_channel(bot, @channel_id, @server)
|
|
38
|
-
@old_channel = cached_channel(bot, @old_channel_id, @server)
|
|
39
|
-
@user = cached_user(bot, data)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def cached_server(bot, server_id)
|
|
43
|
-
servers = bot.instance_variable_get(:@servers)
|
|
44
|
-
servers&.[](server_id.to_i)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def cached_channel(bot, channel_id, server)
|
|
48
|
-
return nil unless channel_id
|
|
49
|
-
|
|
50
|
-
channels = bot.instance_variable_get(:@channels)
|
|
51
|
-
channels&.[](channel_id.to_i) || server.channels.find { |channel| channel.id == channel_id.to_i }
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def cached_user(bot, data)
|
|
55
|
-
user_data = data.dig('member', 'user') || data['user']
|
|
56
|
-
return bot.ensure_user(user_data) if user_data
|
|
57
|
-
|
|
58
|
-
users = bot.instance_variable_get(:@users)
|
|
59
|
-
users&.[](data['user_id'].to_i)
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
# Event handler for VoiceStateUpdateEvent
|
|
64
|
-
class VoiceStateUpdateEventHandler < EventHandler
|
|
65
|
-
def matches?(event)
|
|
66
|
-
# Check for the proper event type
|
|
67
|
-
return false unless event.is_a? VoiceStateUpdateEvent
|
|
68
|
-
|
|
69
|
-
[
|
|
70
|
-
matches_all(@attributes[:from], event.user) do |a, e|
|
|
71
|
-
next unless e
|
|
72
|
-
|
|
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[:mute], event.mute) do |a, e|
|
|
83
|
-
a == if a.is_a? String
|
|
84
|
-
e.to_s
|
|
85
|
-
else
|
|
86
|
-
e
|
|
87
|
-
end
|
|
88
|
-
end,
|
|
89
|
-
matches_all(@attributes[:deaf], event.deaf) do |a, e|
|
|
90
|
-
a == if a.is_a? String
|
|
91
|
-
e.to_s
|
|
92
|
-
else
|
|
93
|
-
e
|
|
94
|
-
end
|
|
95
|
-
end,
|
|
96
|
-
matches_all(@attributes[:self_mute], event.self_mute) do |a, e|
|
|
97
|
-
a == if a.is_a? String
|
|
98
|
-
e.to_s
|
|
99
|
-
else
|
|
100
|
-
e
|
|
101
|
-
end
|
|
102
|
-
end,
|
|
103
|
-
matches_all(@attributes[:self_deaf], event.self_deaf) do |a, e|
|
|
104
|
-
a == if a.is_a? String
|
|
105
|
-
e.to_s
|
|
106
|
-
else
|
|
107
|
-
e
|
|
108
|
-
end
|
|
109
|
-
end,
|
|
110
|
-
matches_all(@attributes[:channel], event.channel) do |a, e|
|
|
111
|
-
next unless e # Don't bother if the channel is nil
|
|
112
|
-
|
|
113
|
-
a == case a
|
|
114
|
-
when String
|
|
115
|
-
e.name
|
|
116
|
-
when Integer
|
|
117
|
-
e.id
|
|
118
|
-
else
|
|
119
|
-
e
|
|
120
|
-
end
|
|
121
|
-
end,
|
|
122
|
-
matches_all(@attributes[:old_channel], event.old_channel) do |a, e|
|
|
123
|
-
next unless e # Don't bother if the channel is nil
|
|
124
|
-
|
|
125
|
-
a == case a
|
|
126
|
-
when String
|
|
127
|
-
e.name
|
|
128
|
-
when Integer
|
|
129
|
-
e.id
|
|
130
|
-
else
|
|
131
|
-
e
|
|
132
|
-
end
|
|
133
|
-
end
|
|
134
|
-
].reduce(true, &:&)
|
|
135
|
-
end
|
|
136
|
-
end
|
|
137
|
-
end
|
|
3
|
+
require 'onyxcord/events/voice/state_update'
|
|
4
|
+
require 'onyxcord/events/voice/server_update'
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'onyxcord/events/generic'
|
|
4
|
+
require 'onyxcord/models'
|
|
5
|
+
|
|
6
|
+
module OnyxCord::Events
|
|
7
|
+
# Event raised when a webhook is updated
|
|
8
|
+
class WebhookUpdateEvent < Event
|
|
9
|
+
# @return [Server] the server where the webhook updated
|
|
10
|
+
attr_reader :server
|
|
11
|
+
|
|
12
|
+
# @return [Channel] the channel the webhook is associated to
|
|
13
|
+
attr_reader :channel
|
|
14
|
+
|
|
15
|
+
# @!visibility private
|
|
16
|
+
def initialize(data, bot)
|
|
17
|
+
@bot = bot
|
|
18
|
+
|
|
19
|
+
@server = bot.server(data['guild_id'].to_i)
|
|
20
|
+
@channel = bot.channel(data['channel_id'].to_i)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Event handler for {WebhookUpdateEvent}
|
|
25
|
+
class WebhookUpdateEventHandler < EventHandler
|
|
26
|
+
def matches?(event)
|
|
27
|
+
# Check for the proper event type
|
|
28
|
+
return false unless event.is_a? WebhookUpdateEvent
|
|
29
|
+
|
|
30
|
+
[
|
|
31
|
+
matches_all(@attributes[:server], event.server) do |a, e|
|
|
32
|
+
a == case a
|
|
33
|
+
when String
|
|
34
|
+
e.name
|
|
35
|
+
when Integer
|
|
36
|
+
e.id
|
|
37
|
+
else
|
|
38
|
+
e
|
|
39
|
+
end
|
|
40
|
+
end,
|
|
41
|
+
matches_all(@attributes[:channel], event.channel) do |a, e|
|
|
42
|
+
case a
|
|
43
|
+
when String
|
|
44
|
+
# Make sure to remove the "#" from channel names in case it was specified
|
|
45
|
+
a.delete('#') == e.name
|
|
46
|
+
when Integer
|
|
47
|
+
a == e.id
|
|
48
|
+
else
|
|
49
|
+
a == e
|
|
50
|
+
end
|
|
51
|
+
end,
|
|
52
|
+
matches_all(@attributes[:webhook], event) do |a, e|
|
|
53
|
+
a == case a
|
|
54
|
+
when String
|
|
55
|
+
e.name
|
|
56
|
+
when Integer
|
|
57
|
+
e.id
|
|
58
|
+
else
|
|
59
|
+
e
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
].reduce(true, &:&)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -1,65 +1,3 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'onyxcord/events/
|
|
4
|
-
require 'onyxcord/data'
|
|
5
|
-
|
|
6
|
-
module OnyxCord::Events
|
|
7
|
-
# Event raised when a webhook is updated
|
|
8
|
-
class WebhookUpdateEvent < Event
|
|
9
|
-
# @return [Server] the server where the webhook updated
|
|
10
|
-
attr_reader :server
|
|
11
|
-
|
|
12
|
-
# @return [Channel] the channel the webhook is associated to
|
|
13
|
-
attr_reader :channel
|
|
14
|
-
|
|
15
|
-
# @!visibility private
|
|
16
|
-
def initialize(data, bot)
|
|
17
|
-
@bot = bot
|
|
18
|
-
|
|
19
|
-
@server = bot.server(data['guild_id'].to_i)
|
|
20
|
-
@channel = bot.channel(data['channel_id'].to_i)
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# Event handler for {WebhookUpdateEvent}
|
|
25
|
-
class WebhookUpdateEventHandler < EventHandler
|
|
26
|
-
def matches?(event)
|
|
27
|
-
# Check for the proper event type
|
|
28
|
-
return false unless event.is_a? WebhookUpdateEvent
|
|
29
|
-
|
|
30
|
-
[
|
|
31
|
-
matches_all(@attributes[:server], event.server) do |a, e|
|
|
32
|
-
a == case a
|
|
33
|
-
when String
|
|
34
|
-
e.name
|
|
35
|
-
when Integer
|
|
36
|
-
e.id
|
|
37
|
-
else
|
|
38
|
-
e
|
|
39
|
-
end
|
|
40
|
-
end,
|
|
41
|
-
matches_all(@attributes[:channel], event.channel) do |a, e|
|
|
42
|
-
case a
|
|
43
|
-
when String
|
|
44
|
-
# Make sure to remove the "#" from channel names in case it was specified
|
|
45
|
-
a.delete('#') == e.name
|
|
46
|
-
when Integer
|
|
47
|
-
a == e.id
|
|
48
|
-
else
|
|
49
|
-
a == e
|
|
50
|
-
end
|
|
51
|
-
end,
|
|
52
|
-
matches_all(@attributes[:webhook], event) do |a, e|
|
|
53
|
-
a == case a
|
|
54
|
-
when String
|
|
55
|
-
e.name
|
|
56
|
-
when Integer
|
|
57
|
-
e.id
|
|
58
|
-
else
|
|
59
|
-
e
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
].reduce(true, &:&)
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
3
|
+
require 'onyxcord/events/webhook/update'
|