lib_discord 0.1.0.pre2
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 +7 -0
- data/lib/lib_discord/client.rb +99 -0
- data/lib/lib_discord/errors.rb +7 -0
- data/lib/lib_discord/resource.rb +65 -0
- data/lib/lib_discord/resources/application.rb +15 -0
- data/lib/lib_discord/resources/application_command.rb +71 -0
- data/lib/lib_discord/resources/application_role_connection_metadata.rb +15 -0
- data/lib/lib_discord/resources/audit_log.rb +11 -0
- data/lib/lib_discord/resources/auto_moderation.rb +27 -0
- data/lib/lib_discord/resources/channel.rb +168 -0
- data/lib/lib_discord/resources/emoji.rb +27 -0
- data/lib/lib_discord/resources/guild.rb +196 -0
- data/lib/lib_discord/resources/guild_scheduled_event.rb +31 -0
- data/lib/lib_discord/resources/guild_template.rb +35 -0
- data/lib/lib_discord/resources/interaction.rb +39 -0
- data/lib/lib_discord/resources/invite.rb +15 -0
- data/lib/lib_discord/resources/stage_instance.rb +23 -0
- data/lib/lib_discord/resources/sticker.rb +35 -0
- data/lib/lib_discord/resources/user.rb +51 -0
- data/lib/lib_discord/resources/voice.rb +11 -0
- data/lib/lib_discord/resources/webhook.rb +67 -0
- data/lib/lib_discord/resources.rb +19 -0
- data/lib/lib_discord/response.rb +11 -0
- data/lib/lib_discord/types.rb +21 -0
- data/lib/lib_discord/urls.rb +19 -0
- data/lib/lib_discord/version.rb +7 -0
- data/lib/lib_discord.rb +3 -0
- metadata +116 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0ae3f9c953b2390c8747f37d3d70fb8169a694a81469eba034a343badfffd1e7
|
4
|
+
data.tar.gz: a7f5b5cf92875e3911973f25b7a1bd1ddab7351c9c9f6aad2c2d5c0bbcdfa44d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e7310c98cfbf7f99ef6cb655172295347ca32ff03840e9c6ad3f3310ad7f27640661047b398139cae38704d2fe57b71e6d779c8a1ba9f9e4e4e1e64667c70c28
|
7
|
+
data.tar.gz: c29182660904ea451dfd131b3118b5d65b587e1966469a52ff818209dcdf18bab49a9c9191a4eac8fcf83ac7d306601739378ae1d4d3ea6271fe0df1333de9e5
|
@@ -0,0 +1,99 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "dry-container"
|
4
|
+
require "forwardable"
|
5
|
+
require "logger"
|
6
|
+
|
7
|
+
require "lib_discord/resources"
|
8
|
+
require "lib_discord/types"
|
9
|
+
require "lib_discord/urls"
|
10
|
+
require "lib_discord/version"
|
11
|
+
|
12
|
+
module LibDiscord
|
13
|
+
class Client
|
14
|
+
extend Forwardable
|
15
|
+
|
16
|
+
def initialize(auth_header:, base_url: nil, user_agent: nil, logger: nil)
|
17
|
+
auth_header = Types::Strict::String[auth_header]
|
18
|
+
base_url = Types::Strict::String[base_url || "https://discord.com/api/v10"]
|
19
|
+
user_agent = Types::Strict::String[user_agent || "LibDiscord (#{LibDiscord.project_url}, #{LibDiscord.version})"]
|
20
|
+
|
21
|
+
unless logger
|
22
|
+
logger = Logger.new($stdout)
|
23
|
+
logger.level = :info
|
24
|
+
end
|
25
|
+
|
26
|
+
@container = Dry::Container.new
|
27
|
+
|
28
|
+
@container.register("application") do
|
29
|
+
Application.new(auth_header, base_url, user_agent, logger)
|
30
|
+
end
|
31
|
+
|
32
|
+
@container.register("application.command") do
|
33
|
+
ApplicationCommand.new(auth_header, base_url, user_agent, logger)
|
34
|
+
end
|
35
|
+
|
36
|
+
@container.register("application.role_connection_metadata") do
|
37
|
+
ApplicationRoleConnectionMetadata.new(auth_header, base_url, user_agent, logger)
|
38
|
+
end
|
39
|
+
|
40
|
+
@container.register("audit_log") do
|
41
|
+
AuditLog.new(auth_header, base_url, user_agent, logger)
|
42
|
+
end
|
43
|
+
|
44
|
+
@container.register("auto_moderation") do
|
45
|
+
AutoModeration.new(auth_header, base_url, user_agent, logger)
|
46
|
+
end
|
47
|
+
|
48
|
+
@container.register("channel") do
|
49
|
+
Channel.new(auth_header, base_url, user_agent, logger)
|
50
|
+
end
|
51
|
+
|
52
|
+
@container.register("emoji") do
|
53
|
+
Emoji.new(auth_header, base_url, user_agent, logger)
|
54
|
+
end
|
55
|
+
|
56
|
+
@container.register("guild") do
|
57
|
+
Guild.new(auth_header, base_url, user_agent, logger)
|
58
|
+
end
|
59
|
+
|
60
|
+
@container.register("guild.scheduled_event") do
|
61
|
+
GuildScheduledEvent.new(auth_header, base_url, user_agent, logger)
|
62
|
+
end
|
63
|
+
|
64
|
+
@container.register("guild.template") do
|
65
|
+
GuildTemplate.new(auth_header, base_url, user_agent, logger)
|
66
|
+
end
|
67
|
+
|
68
|
+
@container.register("interaction") do
|
69
|
+
Interaction.new(auth_header, base_url, user_agent, logger)
|
70
|
+
end
|
71
|
+
|
72
|
+
@container.register("invite") do
|
73
|
+
Invite.new(auth_header, base_url, user_agent, logger)
|
74
|
+
end
|
75
|
+
|
76
|
+
@container.register("stage_instance") do
|
77
|
+
StageInstance.new(auth_header, base_url, user_agent, logger)
|
78
|
+
end
|
79
|
+
|
80
|
+
@container.register("sticker") do
|
81
|
+
Sticker.new(auth_header, base_url, user_agent, logger)
|
82
|
+
end
|
83
|
+
|
84
|
+
@container.register("user") do
|
85
|
+
User.new(auth_header, base_url, user_agent, logger)
|
86
|
+
end
|
87
|
+
|
88
|
+
@container.register("voice") do
|
89
|
+
Voice.new(auth_header, base_url, user_agent, logger)
|
90
|
+
end
|
91
|
+
|
92
|
+
@container.register("webhook") do
|
93
|
+
Webhook.new(auth_header, base_url, user_agent, logger)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def_delegators :@container, :[], :keys
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "http"
|
4
|
+
require "logger"
|
5
|
+
|
6
|
+
require "lib_discord/errors"
|
7
|
+
require "lib_discord/response"
|
8
|
+
require "lib_discord/types"
|
9
|
+
|
10
|
+
module LibDiscord
|
11
|
+
class Resource
|
12
|
+
def initialize(auth_header, base_url, user_agent, logger)
|
13
|
+
@auth_header = Types::Strict::String[auth_header]
|
14
|
+
@base_url = Types::Strict::String[base_url]
|
15
|
+
|
16
|
+
@default_headers = {user_agent: Types::Strict::String[user_agent]}
|
17
|
+
@logger = logger
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def clientjson = client(content_type: "application/json")
|
23
|
+
|
24
|
+
def client(**additional_headers)
|
25
|
+
headers = @default_headers.merge(
|
26
|
+
Types::Resource::ClientHeaders[additional_headers]
|
27
|
+
)
|
28
|
+
HTTP.use(logging: {logger: @logger}).auth(@auth_header).headers(**headers)
|
29
|
+
end
|
30
|
+
|
31
|
+
def request_url(path)
|
32
|
+
@base_url + Types::Strict::String[path]
|
33
|
+
end
|
34
|
+
|
35
|
+
def send_request(verb, relative_path, http_client: clientjson, **kwargs)
|
36
|
+
# TODO: account for any reasonable errors that HTTP may throw
|
37
|
+
discord_response = http_client.send(
|
38
|
+
Types::Strict::Symbol[verb],
|
39
|
+
request_url(relative_path),
|
40
|
+
**Types::Resource::HttpKwargs[kwargs]
|
41
|
+
)
|
42
|
+
|
43
|
+
resp = Response.new(
|
44
|
+
code: discord_response.code,
|
45
|
+
headers: discord_response.headers.to_h,
|
46
|
+
body_raw: discord_response.to_s
|
47
|
+
)
|
48
|
+
|
49
|
+
begin
|
50
|
+
resp.body_parsed = discord_response.parse
|
51
|
+
rescue HTTP::Error
|
52
|
+
# we'll get here if HTTP doesn't have a parser for the response's mime
|
53
|
+
# type. we simply want to try to parse it, and skip over it if it
|
54
|
+
# fails.
|
55
|
+
|
56
|
+
msg = "Could not parse HTTP response body with content-type #{resp.headers["Content-Type"]}."
|
57
|
+
@logger.add(Logger::DEBUG, msg, "lib_discord")
|
58
|
+
end
|
59
|
+
|
60
|
+
resp
|
61
|
+
rescue HTTP::TimeoutError => e
|
62
|
+
raise TimeoutError.new(e.message)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/resource"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
class Application < Resource
|
7
|
+
def get_current_application
|
8
|
+
send_request(:get, "/applications/@me")
|
9
|
+
end
|
10
|
+
|
11
|
+
def edit_current_application(json:)
|
12
|
+
send_request(:patch, "/applications/@me", json:)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/resource"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
class ApplicationCommand < Resource
|
7
|
+
def get_global_application_commands(application_id:, params: {})
|
8
|
+
send_request(:get, "/applications/#{application_id}/commands", params:)
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_global_application_command(application_id:, json:)
|
12
|
+
send_request(:post, "/applications/#{application_id}/commands", json:)
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_global_application_command(application_id:, command_id:)
|
16
|
+
send_request(:get, "/applications/#{application_id}/commands/#{command_id}")
|
17
|
+
end
|
18
|
+
|
19
|
+
def edit_global_application_command(application_id:, command_id:, json:)
|
20
|
+
send_request(:patch, "/applications/#{application_id}/commands/#{command_id}", json:)
|
21
|
+
end
|
22
|
+
|
23
|
+
def delete_global_application_command(application_id:, command_id:)
|
24
|
+
send_request(:delete, "/applications/#{application_id}/commands/#{command_id}")
|
25
|
+
end
|
26
|
+
|
27
|
+
def bulk_overwrite_global_application_commands(application_id:, json:)
|
28
|
+
send_request(:put, "/applications/#{application_id}/commands", json:)
|
29
|
+
end
|
30
|
+
|
31
|
+
def get_guild_application_commands(application_id:, guild_id:, params: {})
|
32
|
+
send_request(:get, "/applications/#{application_id}/guilds/#{guild_id}/commands", params:)
|
33
|
+
end
|
34
|
+
|
35
|
+
def create_guild_application_command(application_id:, guild_id:, json:)
|
36
|
+
send_request(:post, "/applications/#{application_id}/guilds/#{guild_id}/commands", json:)
|
37
|
+
end
|
38
|
+
|
39
|
+
def get_guild_application_command(application_id:, guild_id:, command_id:)
|
40
|
+
send_request(:get, "/applications/#{application_id}/guilds/#{guild_id}/commands/#{command_id}")
|
41
|
+
end
|
42
|
+
|
43
|
+
def edit_guild_application_command(application_id:, guild_id:, command_id:, json:)
|
44
|
+
send_request(:patch, "/applications/#{application_id}/guilds/#{guild_id}/commands/#{command_id}", json:)
|
45
|
+
end
|
46
|
+
|
47
|
+
def delete_guild_application_command(application_id:, guild_id:, command_id:)
|
48
|
+
send_request(:delete, "/applications/#{application_id}/guilds/#{guild_id}/commands/#{command_id}")
|
49
|
+
end
|
50
|
+
|
51
|
+
def bulk_overwrite_guild_application_commands(application_id:, guild_id:, json:)
|
52
|
+
send_request(:put, "/applications/#{application_id}/guilds/#{guild_id}/commands", json:)
|
53
|
+
end
|
54
|
+
|
55
|
+
def get_guild_application_command_permissions(application_id:, guild_id:)
|
56
|
+
send_request(:get, "/applications/#{application_id}/guilds/#{guild_id}/commands/permissions")
|
57
|
+
end
|
58
|
+
|
59
|
+
def get_application_command_permissions(application_id:, guild_id:, command_id:)
|
60
|
+
send_request(:get, "/applications/#{application_id}/guilds/#{guild_id}/commands/#{command_id}/permissions")
|
61
|
+
end
|
62
|
+
|
63
|
+
def edit_application_command_permissions(application_id:, guild_id:, command_id:, json:)
|
64
|
+
send_request(:put, "/applications/#{application_id}/guilds/#{guild_id}/commands/#{command_id}/permissions", json:)
|
65
|
+
end
|
66
|
+
|
67
|
+
def batch_edit_application_command_permissions(application_id:, guild_id:, json:)
|
68
|
+
send_request(:put, "/applications/#{application_id}/guilds/#{guild_id}/commands/permissions", json:)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/resource"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
class ApplicationRoleConnectionMetadata < Resource
|
7
|
+
def get_application_role_connection_metadata_records(application_id:)
|
8
|
+
send_request(:get, "/applications/#{application_id}/role-connections/metadata")
|
9
|
+
end
|
10
|
+
|
11
|
+
def update_application_role_connection_metadata_records(application_id:, json:)
|
12
|
+
send_request(:put, "/applications/#{application_id}/role-connections/metadata", json:)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/resource"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
class AutoModeration < Resource
|
7
|
+
def list_auto_moderation_rules_for_guild(guild_id:)
|
8
|
+
send_request(:get, "/guilds/#{guild_id}/auto-moderation/rules")
|
9
|
+
end
|
10
|
+
|
11
|
+
def get_auto_moderation_rule(guild_id:, auto_moderation_rule_id:)
|
12
|
+
send_request(:get, "/guilds/#{guild_id}/auto-moderation/rules/#{auto_moderation_rule_id}")
|
13
|
+
end
|
14
|
+
|
15
|
+
def create_auto_moderation_rule(guild_id:, json:)
|
16
|
+
send_request(:post, "/guilds/#{guild_id}/auto-moderation/rules", json:)
|
17
|
+
end
|
18
|
+
|
19
|
+
def modify_auto_moderation_rule(guild_id:, auto_moderation_rule_id:, json:)
|
20
|
+
send_request(:patch, "/guilds/#{guild_id}/auto-moderation/rules/#{auto_moderation_rule_id}", json:)
|
21
|
+
end
|
22
|
+
|
23
|
+
def delete_auto_moderation_rule(guild_id:, auto_moderation_rule_id:)
|
24
|
+
send_request(:delete, "/guilds/#{guild_id}/auto-moderation/rules/#{auto_moderation_rule_id}")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,168 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/resource"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
class Channel < Resource
|
7
|
+
def get_channel(channel_id:)
|
8
|
+
send_request(:get, "/channels/#{channel_id}")
|
9
|
+
end
|
10
|
+
|
11
|
+
def modify_channel(channel_id:, json:)
|
12
|
+
send_request(:patch, "/channels/#{channel_id}", json:)
|
13
|
+
end
|
14
|
+
|
15
|
+
def delete_channel(channel_id:)
|
16
|
+
send_request(:delete, "/channels/#{channel_id}")
|
17
|
+
end
|
18
|
+
|
19
|
+
alias_method :close_channel, :delete_channel
|
20
|
+
|
21
|
+
def get_channel_messages(channel_id:, params: {})
|
22
|
+
send_request(:get, "/channels/#{channel_id}/messages", params:)
|
23
|
+
end
|
24
|
+
|
25
|
+
def get_channel_message(channel_id:, message_id:)
|
26
|
+
send_request(:get, "/channels/#{channel_id}/messages/#{message_id}")
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_message(channel_id:, json:)
|
30
|
+
send_request(:post, "/channels/#{channel_id}/messages", json:)
|
31
|
+
end
|
32
|
+
|
33
|
+
def crosspost_message(channel_id:, message_id:)
|
34
|
+
send_request(:post, "/channels/#{channel_id}/messages/#{message_id}/crosspost")
|
35
|
+
end
|
36
|
+
|
37
|
+
def create_reaction(channel_id:, message_id:, emoji:)
|
38
|
+
send_request(:put, "/channels/#{channel_id}/messages/#{message_id}/reactions/#{emoji}/@me")
|
39
|
+
end
|
40
|
+
|
41
|
+
def delete_own_reaction(channel_id:, message_id:, emoji:)
|
42
|
+
send_request(:delete, "/channels/#{channel_id}/messages/#{message_id}/reactions/#{emoji}/@me")
|
43
|
+
end
|
44
|
+
|
45
|
+
def delete_user_reaction(channel_id:, message_id:, emoji:, user_id:)
|
46
|
+
send_request(:delete, "/channels/#{channel_id}/messages/#{message_id}/reactions/#{emoji}/#{user_id}")
|
47
|
+
end
|
48
|
+
|
49
|
+
def get_reactions(channel_id:, message_id:, emoji:, params: {})
|
50
|
+
send_request(:get, "/channels/#{channel_id}/messages/#{message_id}/reactions/#{emoji}", params:)
|
51
|
+
end
|
52
|
+
|
53
|
+
def delete_all_reactions(channel_id:, message_id:)
|
54
|
+
send_request(:delete, "/channels/#{channel_id}/messages/#{message_id}/reactions")
|
55
|
+
end
|
56
|
+
|
57
|
+
def delete_all_reactions_for_emoji(channel_id:, message_id:, emoji:)
|
58
|
+
send_request(:delete, "/channels/#{channel_id}/messages/#{message_id}/reactions/#{emoji}")
|
59
|
+
end
|
60
|
+
|
61
|
+
def edit_message(channel_id:, message_id:, json:)
|
62
|
+
send_request(:patch, "/channels/#{channel_id}/messages/#{message_id}", json:)
|
63
|
+
end
|
64
|
+
|
65
|
+
def delete_message(channel_id:, message_id:)
|
66
|
+
send_request(:delete, "/channels/#{channel_id}/messages/#{message_id}")
|
67
|
+
end
|
68
|
+
|
69
|
+
def bulk_delete_messages(channel_id:, json:)
|
70
|
+
send_request(:post, "/channels/#{channel_id}/messages/bulk-delete", json:)
|
71
|
+
end
|
72
|
+
|
73
|
+
def edit_channel_permissions(channel_id:, overwrite_id:, json:)
|
74
|
+
send_request(:put, "/channels/#{channel_id}/permissions/#{overwrite_id}", json:)
|
75
|
+
end
|
76
|
+
|
77
|
+
def get_channel_invites(channel_id:)
|
78
|
+
send_request(:get, "/channels/#{channel_id}/invites")
|
79
|
+
end
|
80
|
+
|
81
|
+
def create_channel_invite(channel_id:, json:)
|
82
|
+
send_request(:post, "/channels/#{channel_id}/invites", json:)
|
83
|
+
end
|
84
|
+
|
85
|
+
def delete_channel_permission(channel_id:, overwrite_id:)
|
86
|
+
send_request(:delete, "/channels/#{channel_id}/permissions/#{overwrite_id}")
|
87
|
+
end
|
88
|
+
|
89
|
+
def follow_announcement_channel(channel_id:, json:)
|
90
|
+
send_request(:post, "/channels/#{channel_id}/followers", json:)
|
91
|
+
end
|
92
|
+
|
93
|
+
def trigger_typing_indicator(channel_id:)
|
94
|
+
send_request(:post, "/channels/#{channel_id}/typing")
|
95
|
+
end
|
96
|
+
|
97
|
+
def get_pinned_messages(channel_id:)
|
98
|
+
send_request(:get, "/channels/#{channel_id}/pins")
|
99
|
+
end
|
100
|
+
|
101
|
+
def pin_message(channel_id:, message_id:)
|
102
|
+
send_request(:put, "/channels/#{channel_id}/pins/#{message_id}")
|
103
|
+
end
|
104
|
+
|
105
|
+
def unpin_message(channel_id:, message_id:)
|
106
|
+
send_request(:delete, "/channels/#{channel_id}/pins/#{message_id}")
|
107
|
+
end
|
108
|
+
|
109
|
+
def group_dm_add_recipient(channel_id:, user_id:, json:)
|
110
|
+
send_request(:put, "/channels/#{channel_id}/recipients/#{user_id}", json:)
|
111
|
+
end
|
112
|
+
|
113
|
+
def group_dm_remove_recipient(channel_id:, user_id:)
|
114
|
+
send_request(:delete, "/channels/#{channel_id}/recipients/#{user_id}")
|
115
|
+
end
|
116
|
+
|
117
|
+
def start_thread_from_message(channel_id:, message_id:, json:)
|
118
|
+
send_request(:post, "/channels/#{channel_id}/messages/#{message_id}/threads", json:)
|
119
|
+
end
|
120
|
+
|
121
|
+
def start_thread_without_message(channel_id:, json:)
|
122
|
+
send_request(:post, "/channels/#{channel_id}/threads", json:)
|
123
|
+
end
|
124
|
+
|
125
|
+
# NOTE: this is clearly identical to `start_thread_without_message`, but i
|
126
|
+
# guess Discord treats the action differently based on what's in the JSON
|
127
|
+
# payload?
|
128
|
+
def start_thread_in_forum_or_media_channel(channel_id:, json:)
|
129
|
+
send_request(:post, "/channels/#{channel_id}/threads", json:)
|
130
|
+
end
|
131
|
+
|
132
|
+
def join_thread(channel_id:)
|
133
|
+
send_request(:put, "/channels/#{channel_id}/thread-members/@me")
|
134
|
+
end
|
135
|
+
|
136
|
+
def add_thread_member(channel_id:, user_id:)
|
137
|
+
send_request(:put, "/channels/#{channel_id}/thread-members/#{user_id}")
|
138
|
+
end
|
139
|
+
|
140
|
+
def leave_thread(channel_id:)
|
141
|
+
send_request(:delete, "/channels/#{channel_id}/thread-members/@me")
|
142
|
+
end
|
143
|
+
|
144
|
+
def remove_thread_member(channel_id:, user_id:)
|
145
|
+
send_request(:delete, "/channels/#{channel_id}/thread-members/#{user_id}")
|
146
|
+
end
|
147
|
+
|
148
|
+
def get_thread_member(channel_id:, user_id:, params: {})
|
149
|
+
send_request(:get, "/channels/#{channel_id}/thread-members/#{user_id}", params:)
|
150
|
+
end
|
151
|
+
|
152
|
+
def list_thread_members(channel_id:, params: {})
|
153
|
+
send_request(:get, "/channels/#{channel_id}/thread-members", params:)
|
154
|
+
end
|
155
|
+
|
156
|
+
def list_public_archived_threads(channel_id:, params: {})
|
157
|
+
send_request(:get, "/channels/#{channel_id}/threads/archived/public", params:)
|
158
|
+
end
|
159
|
+
|
160
|
+
def list_private_archived_threads(channel_id:, params: {})
|
161
|
+
send_request(:get, "/channels/#{channel_id}/threads/archived/private", params:)
|
162
|
+
end
|
163
|
+
|
164
|
+
def list_joined_private_archived_threads(channel_id:, params: {})
|
165
|
+
send_request(:get, "/channels/#{channel_id}/users/@me/threads/archived/private", params:)
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/resource"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
class Emoji < Resource
|
7
|
+
def list_guild_emojis(guild_id:)
|
8
|
+
send_request(:get, "/guilds/#{guild_id}/emojis")
|
9
|
+
end
|
10
|
+
|
11
|
+
def get_guild_emoji(guild_id:, emoji_id:)
|
12
|
+
send_request(:get, "/guilds/#{guild_id}/emojis/#{emoji_id}")
|
13
|
+
end
|
14
|
+
|
15
|
+
def create_guild_emoji(guild_id:, json:)
|
16
|
+
send_request(:post, "/guilds/#{guild_id}/emojis", json:)
|
17
|
+
end
|
18
|
+
|
19
|
+
def modify_guild_emoji(guild_id:, emoji_id:, json:)
|
20
|
+
send_request(:patch, "/guilds/#{guild_id}/emojis/#{emoji_id}", json:)
|
21
|
+
end
|
22
|
+
|
23
|
+
def delete_guild_emoji(guild_id:, emoji_id:)
|
24
|
+
send_request(:delete, "/guilds/#{guild_id}/emojis/#{emoji_id}")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,196 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/resource"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
class Guild < Resource
|
7
|
+
def create_guild(json:)
|
8
|
+
send_request(:post, "/guilds", json:)
|
9
|
+
end
|
10
|
+
|
11
|
+
def get_guild(guild_id:, params: {})
|
12
|
+
send_request(:get, "/guilds/#{guild_id}", params:)
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_guild_preview(guild_id:)
|
16
|
+
send_request(:get, "/guilds/#{guild_id}/preview")
|
17
|
+
end
|
18
|
+
|
19
|
+
def modify_guild(guild_id:, json:)
|
20
|
+
send_request(:patch, "/guilds/#{guild_id}", json:)
|
21
|
+
end
|
22
|
+
|
23
|
+
def delete_guild(guild_id:)
|
24
|
+
send_request(:delete, "/guilds/#{guild_id}")
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_guild_channels(guild_id:)
|
28
|
+
send_request(:get, "/guilds/#{guild_id}/channels")
|
29
|
+
end
|
30
|
+
|
31
|
+
def create_guild_channel(guild_id:, json:)
|
32
|
+
send_request(:post, "/guilds/#{guild_id}/channels", json:)
|
33
|
+
end
|
34
|
+
|
35
|
+
def modify_guild_channel_positions(guild_id:, json:)
|
36
|
+
send_request(:patch, "/guilds/#{guild_id}/channels", json:)
|
37
|
+
end
|
38
|
+
|
39
|
+
def list_active_guild_threads(guild_id:)
|
40
|
+
send_request(:get, "/guilds/#{guild_id}/threads/active")
|
41
|
+
end
|
42
|
+
|
43
|
+
def get_guild_member(guild_id:, user_id:)
|
44
|
+
send_request(:get, "/guilds/#{guild_id}/members/#{user_id}")
|
45
|
+
end
|
46
|
+
|
47
|
+
def list_guild_members(guild_id:, params: {})
|
48
|
+
send_request(:get, "/guilds/#{guild_id}/members", params:)
|
49
|
+
end
|
50
|
+
|
51
|
+
def search_guild_members(guild_id:, params: {})
|
52
|
+
send_request(:get, "/guilds/#{guild_id}/members/search", params:)
|
53
|
+
end
|
54
|
+
|
55
|
+
def add_guild_member(guild_id:, user_id:, json:)
|
56
|
+
send_request(:put, "/guilds/#{guild_id}/members/#{user_id}", json:)
|
57
|
+
end
|
58
|
+
|
59
|
+
def modify_guild_member(guild_id:, user_id:, json:)
|
60
|
+
send_request(:patch, "/guilds/#{guild_id}/members/#{user_id}", json:)
|
61
|
+
end
|
62
|
+
|
63
|
+
def modify_current_member(guild_id:, json:)
|
64
|
+
send_request(:patch, "/guilds/#{guild_id}/members/@me", json:)
|
65
|
+
end
|
66
|
+
|
67
|
+
# NOTE: deprecated in favor of `modify_current_member`
|
68
|
+
def modify_current_user_nick(guild_id:, json:)
|
69
|
+
send_request(:patch, "/guilds/#{guild_id}/members/@me/nick", json:)
|
70
|
+
end
|
71
|
+
|
72
|
+
def add_guild_member_role(guild_id:, user_id:, role_id:)
|
73
|
+
send_request(:put, "/guilds/#{guild_id}/members/#{user_id}/roles/#{role_id}")
|
74
|
+
end
|
75
|
+
|
76
|
+
def remove_guild_member_role(guild_id:, user_id:, role_id:)
|
77
|
+
send_request(:delete, "/guilds/#{guild_id}/members/#{user_id}/roles/#{role_id}")
|
78
|
+
end
|
79
|
+
|
80
|
+
def remove_guild_member(guild_id:, user_id:)
|
81
|
+
send_request(:delete, "/guilds/#{guild_id}/members/#{user_id}")
|
82
|
+
end
|
83
|
+
|
84
|
+
def get_guild_bans(guild_id:, params: {})
|
85
|
+
send_request(:get, "/guilds/#{guild_id}/bans", params:)
|
86
|
+
end
|
87
|
+
|
88
|
+
def get_guild_ban(guild_id:, user_id:)
|
89
|
+
send_request(:get, "/guilds/#{guild_id}/bans/#{user_id}")
|
90
|
+
end
|
91
|
+
|
92
|
+
def create_guild_ban(guild_id:, user_id:, json:)
|
93
|
+
send_request(:put, "/guilds/#{guild_id}/bans/#{user_id}", json:)
|
94
|
+
end
|
95
|
+
|
96
|
+
def remove_guild_ban(guild_id:, user_id:)
|
97
|
+
send_request(:delete, "/guilds/#{guild_id}/bans/#{user_id}")
|
98
|
+
end
|
99
|
+
|
100
|
+
def bulk_guild_ban(guild_id:, json:)
|
101
|
+
send_request(:post, "/guilds/#{guild_id}/bulk-ban", json:)
|
102
|
+
end
|
103
|
+
|
104
|
+
def get_guild_roles(guild_id:)
|
105
|
+
send_request(:get, "/guilds/#{guild_id}/roles")
|
106
|
+
end
|
107
|
+
|
108
|
+
def create_guild_role(guild_id:, json:)
|
109
|
+
send_request(:post, "/guilds/#{guild_id}/roles", json:)
|
110
|
+
end
|
111
|
+
|
112
|
+
def modify_guild_role_positions(guild_id:, json:)
|
113
|
+
send_request(:patch, "/guilds/#{guild_id}/roles", json:)
|
114
|
+
end
|
115
|
+
|
116
|
+
def modify_guild_role(guild_id:, role_id:, json:)
|
117
|
+
send_request(:patch, "/guilds/#{guild_id}/roles/#{role_id}", json:)
|
118
|
+
end
|
119
|
+
|
120
|
+
def modify_guild_mfa_level(guild_id:, json:)
|
121
|
+
send_request(:post, "/guilds/#{guild_id}/mfa", json:)
|
122
|
+
end
|
123
|
+
|
124
|
+
def delete_guild_role(guild_id:, role_id:)
|
125
|
+
send_request(:delete, "/guilds/#{guild_id}/roles/#{role_id}")
|
126
|
+
end
|
127
|
+
|
128
|
+
def get_guild_prune_count(guild_id:, params: {})
|
129
|
+
send_request(:get, "/guilds/#{guild_id}/prune", params:)
|
130
|
+
end
|
131
|
+
|
132
|
+
def begin_guild_prune(guild_id:, json:)
|
133
|
+
send_request(:post, "/guilds/#{guild_id}/prune", json:)
|
134
|
+
end
|
135
|
+
|
136
|
+
def get_guild_voice_regions(guild_id:)
|
137
|
+
send_request(:get, "/guilds/#{guild_id}/regions")
|
138
|
+
end
|
139
|
+
|
140
|
+
def get_guild_invites(guild_id:)
|
141
|
+
send_request(:get, "/guilds/#{guild_id}/invites")
|
142
|
+
end
|
143
|
+
|
144
|
+
def get_guild_integrations(guild_id:)
|
145
|
+
send_request(:get, "/guilds/#{guild_id}/integrations")
|
146
|
+
end
|
147
|
+
|
148
|
+
def delete_guild_integration(guild_id:, integration_id:)
|
149
|
+
send_request(:delete, "/guilds/#{guild_id}/integrations/#{integration_id}")
|
150
|
+
end
|
151
|
+
|
152
|
+
def get_guild_widget_settings(guild_id:)
|
153
|
+
send_request(:get, "/guilds/#{guild_id}/widget")
|
154
|
+
end
|
155
|
+
|
156
|
+
def modify_guild_widget(guild_id:, json:)
|
157
|
+
send_request(:patch, "/guilds/#{guild_id}/widget", json:)
|
158
|
+
end
|
159
|
+
|
160
|
+
def get_guild_widget(guild_id:)
|
161
|
+
send_request(:get, "/guilds/#{guild_id}/widget.json")
|
162
|
+
end
|
163
|
+
|
164
|
+
def get_guild_vanity_url(guild_id:)
|
165
|
+
send_request(:get, "/guilds/#{guild_id}/vanity-url")
|
166
|
+
end
|
167
|
+
|
168
|
+
def get_guild_widget_image(guild_id:, params: {})
|
169
|
+
send_request(:get, "/guilds/#{guild_id}/widget.png", params:)
|
170
|
+
end
|
171
|
+
|
172
|
+
def get_guild_welcome_screen(guild_id:)
|
173
|
+
send_request(:get, "/guilds/#{guild_id}/welcome-screen")
|
174
|
+
end
|
175
|
+
|
176
|
+
def modify_guild_welcome_screen(guild_id:, json:)
|
177
|
+
send_request(:patch, "/guilds/#{guild_id}/welcome-screen", json:)
|
178
|
+
end
|
179
|
+
|
180
|
+
def get_guild_onboarding(guild_id:)
|
181
|
+
send_request(:get, "/guilds/#{guild_id}/onboarding")
|
182
|
+
end
|
183
|
+
|
184
|
+
def modify_guild_onboarding(guild_id:, json:)
|
185
|
+
send_request(:put, "/guilds/#{guild_id}/onboarding", json:)
|
186
|
+
end
|
187
|
+
|
188
|
+
def modify_current_user_voice_state(guild_id:, json:)
|
189
|
+
send_request(:patch, "/guilds/#{guild_id}/voice-states/@me", json:)
|
190
|
+
end
|
191
|
+
|
192
|
+
def modify_user_voice_state(guild_id:, user_id:, json:)
|
193
|
+
send_request(:patch, "/guilds/#{guild_id}/voice-states/#{user_id}", json:)
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/resource"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
class GuildScheduledEvent < Resource
|
7
|
+
def list_scheduled_events_for_guild(guild_id:, params: {})
|
8
|
+
send_request(:get, "/guilds/#{guild_id}/scheduled-events", params:)
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_guild_scheduled_event(guild_id:, json:)
|
12
|
+
send_request(:post, "/guilds/#{guild_id}/scheduled-events", json:)
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_guild_scheduled_event(guild_id:, guild_scheduled_event_id:, params: {})
|
16
|
+
send_request(:get, "/guilds/#{guild_id}/scheduled-events/#{guild_scheduled_event_id}", params:)
|
17
|
+
end
|
18
|
+
|
19
|
+
def modify_guild_scheduled_event(guild_id:, guild_scheduled_event_id:, json:)
|
20
|
+
send_request(:patch, "/guilds/#{guild_id}/scheduled-events/#{guild_scheduled_event_id}", json:)
|
21
|
+
end
|
22
|
+
|
23
|
+
def delete_guild_scheduled_event(guild_id:, guild_scheduled_event_id:)
|
24
|
+
send_request(:delete, "/guilds/#{guild_id}/scheduled-events/#{guild_scheduled_event_id}")
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_guild_scheduled_event_users(guild_id:, guild_scheduled_event_id:, params: {})
|
28
|
+
send_request(:get, "/guilds/#{guild_id}/scheduled-events/#{guild_scheduled_event_id}/users", params:)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/resource"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
class GuildTemplate < Resource
|
7
|
+
def get_guild_template(template_code:)
|
8
|
+
send_request(:get, "/guilds/templates/#{template_code}")
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_guild_from_template(template_code:, json:)
|
12
|
+
send_request(:post, "/guilds/templates/#{template_code}", json:)
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_guild_templates(guild_id:)
|
16
|
+
send_request(:get, "/guilds/#{guild_id}/templates")
|
17
|
+
end
|
18
|
+
|
19
|
+
def create_guild_template(guild_id:, json:)
|
20
|
+
send_request(:post, "/guilds/#{guild_id}/templates", json:)
|
21
|
+
end
|
22
|
+
|
23
|
+
def sync_guild_template(guild_id:, template_code:)
|
24
|
+
send_request(:put, "/guilds/#{guild_id}/templates/#{template_code}")
|
25
|
+
end
|
26
|
+
|
27
|
+
def modify_guild_template(guild_id:, template_code:, json:)
|
28
|
+
send_request(:patch, "/guilds/#{guild_id}/templates/#{template_code}", json:)
|
29
|
+
end
|
30
|
+
|
31
|
+
def delete_guild_template(guild_id:, template_code:)
|
32
|
+
send_request(:delete, "/guilds/#{guild_id}/templates/#{template_code}")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/resource"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
class Interaction < Resource
|
7
|
+
def create_interaction_response(interaction_id:, interaction_token:, json:)
|
8
|
+
send_request(:post, "/interactions/#{interaction_id}/#{interaction_token}/callback", json:)
|
9
|
+
end
|
10
|
+
|
11
|
+
def get_original_interaction_response(application_id:, interaction_token:)
|
12
|
+
send_request(:get, "/webhooks/#{application_id}/#{interaction_token}/messages/@original")
|
13
|
+
end
|
14
|
+
|
15
|
+
def edit_original_interaction_response(application_id:, interaction_token:, json:)
|
16
|
+
send_request(:patch, "/webhooks/#{application_id}/#{interaction_token}/messages/@original", json:)
|
17
|
+
end
|
18
|
+
|
19
|
+
def delete_original_interaction_response(application_id:, interaction_token:)
|
20
|
+
send_request(:delete, "/webhooks/#{application_id}/#{interaction_token}/messages/@original")
|
21
|
+
end
|
22
|
+
|
23
|
+
def create_followup_message(application_id:, interaction_token:, json:)
|
24
|
+
send_request(:post, "/webhooks/#{application_id}/#{interaction_token}", json:)
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_followup_message(application_id:, interaction_token:, message_id:)
|
28
|
+
send_request(:get, "/webhooks/#{application_id}/#{interaction_token}/messages/#{message_id}")
|
29
|
+
end
|
30
|
+
|
31
|
+
def edit_followup_message(application_id:, interaction_token:, message_id:, json:)
|
32
|
+
send_request(:patch, "/webhooks/#{application_id}/#{interaction_token}/messages/#{message_id}", json:)
|
33
|
+
end
|
34
|
+
|
35
|
+
def delete_followup_message(application_id:, interaction_token:, message_id:)
|
36
|
+
send_request(:delete, "/webhooks/#{application_id}/#{interaction_token}/messages/#{message_id}")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/resource"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
class Invite < Resource
|
7
|
+
def get_invite(invite_code:, params: {})
|
8
|
+
send_request(:get, "/invites/#{invite_code}", params:)
|
9
|
+
end
|
10
|
+
|
11
|
+
def delete_invite(invite_code:)
|
12
|
+
send_request(:delete, "/invites/#{invite_code}")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/resource"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
class StageInstance < Resource
|
7
|
+
def create_stage_instance(json:)
|
8
|
+
send_request(:post, "/stage-instances", json:)
|
9
|
+
end
|
10
|
+
|
11
|
+
def get_stage_instance(channel_id:)
|
12
|
+
send_request(:get, "/stage-instances/#{channel_id}")
|
13
|
+
end
|
14
|
+
|
15
|
+
def modify_stage_instance(channel_id:, json:)
|
16
|
+
send_request(:patch, "/stage-instances/#{channel_id}", json:)
|
17
|
+
end
|
18
|
+
|
19
|
+
def delete_stage_instance(channel_id:)
|
20
|
+
send_request(:delete, "/stage-instances/#{channel_id}")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/resource"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
class Sticker < Resource
|
7
|
+
def get_sticker(sticker_id:)
|
8
|
+
send_request(:get, "/stickers/#{sticker_id}")
|
9
|
+
end
|
10
|
+
|
11
|
+
def list_sticker_packs
|
12
|
+
send_request(:get, "/sticker-packs")
|
13
|
+
end
|
14
|
+
|
15
|
+
def list_guild_stickers(guild_id:)
|
16
|
+
send_request(:get, "/guilds/#{guild_id}/stickers")
|
17
|
+
end
|
18
|
+
|
19
|
+
def get_guild_sticker(guild_id:, sticker_id:)
|
20
|
+
send_request(:get, "/guilds/#{guild_id}/stickers/#{sticker_id}")
|
21
|
+
end
|
22
|
+
|
23
|
+
def create_guild_sticker(guild_id:, json:)
|
24
|
+
send_request(:post, "/guilds/#{guild_id}/stickers", json:)
|
25
|
+
end
|
26
|
+
|
27
|
+
def modify_guild_sticker(guild_id:, sticker_id:, json:)
|
28
|
+
send_request(:patch, "/guilds/#{guild_id}/stickers/#{sticker_id}", json:)
|
29
|
+
end
|
30
|
+
|
31
|
+
def delete_guild_sticker(guild_id:, sticker_id:)
|
32
|
+
send_request(:delete, "/guilds/#{guild_id}/stickers/#{sticker_id}")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/resource"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
class User < Resource
|
7
|
+
def get_current_user
|
8
|
+
send_request(:get, "/users/@me")
|
9
|
+
end
|
10
|
+
|
11
|
+
def get_user(user_id:)
|
12
|
+
send_request(:get, "/users/#{user_id}")
|
13
|
+
end
|
14
|
+
|
15
|
+
def modify_current_user(json:)
|
16
|
+
send_request(:patch, "/users/@me", json:)
|
17
|
+
end
|
18
|
+
|
19
|
+
def get_current_user_guilds(params: {})
|
20
|
+
send_request(:get, "/users/@me/guilds", params:)
|
21
|
+
end
|
22
|
+
|
23
|
+
def get_current_user_guild_member(guild_id:)
|
24
|
+
send_request(:get, "/users/@me/guilds/#{guild_id}/member")
|
25
|
+
end
|
26
|
+
|
27
|
+
def leave_guild(guild_id:)
|
28
|
+
send_request(:delete, "/users/@me/guilds/#{guild_id}")
|
29
|
+
end
|
30
|
+
|
31
|
+
def create_dm(json:)
|
32
|
+
send_request(:post, "/users/@me/channels", json:)
|
33
|
+
end
|
34
|
+
|
35
|
+
def create_group_dm(json:)
|
36
|
+
send_request(:post, "/users/@me/channels", json:)
|
37
|
+
end
|
38
|
+
|
39
|
+
def get_current_user_connections
|
40
|
+
send_request(:get, "/users/@me/connections")
|
41
|
+
end
|
42
|
+
|
43
|
+
def get_current_user_application_role_connection(application_id:)
|
44
|
+
send_request(:get, "/users/@me/applications/#{application_id}/role-connections")
|
45
|
+
end
|
46
|
+
|
47
|
+
def update_current_user_application_role_connection(application_id:, json:)
|
48
|
+
send_request(:put, "/users/@me/applications/#{application_id}/role-connection", json:)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/resource"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
class Webhook < Resource
|
7
|
+
def create_webhook(channel_id:, json:)
|
8
|
+
send_request(:post, "/channels/#{channel_id}/webhooks", json:)
|
9
|
+
end
|
10
|
+
|
11
|
+
def get_channel_webhooks(channel_id:)
|
12
|
+
send_request(:get, "/channels/#{channel_id}/webhooks")
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_guild_webhooks(guild_id:)
|
16
|
+
send_request(:get, "/guilds/#{guild_id}/webhooks")
|
17
|
+
end
|
18
|
+
|
19
|
+
def get_webhook(webhook_id:)
|
20
|
+
send_request(:get, "/webhooks/#{webhook_id}")
|
21
|
+
end
|
22
|
+
|
23
|
+
def get_webhook_with_token(webhook_id:, webhook_token:)
|
24
|
+
send_request(:get, "/webhooks/#{webhook_id}/#{webhook_token}")
|
25
|
+
end
|
26
|
+
|
27
|
+
def modify_webhook(webhook_id:, json:)
|
28
|
+
send_request(:patch, "/webhooks/#{webhook_id}", json:)
|
29
|
+
end
|
30
|
+
|
31
|
+
def modify_webhook_with_token(webhook_id:, webhook_token:, json:)
|
32
|
+
send_request(:patch, "/webhooks/#{webhook_id}/#{webhook_token}", json:)
|
33
|
+
end
|
34
|
+
|
35
|
+
def delete_webhook(webhook_id:)
|
36
|
+
send_request(:delete, "/webhooks/#{webhook_id}")
|
37
|
+
end
|
38
|
+
|
39
|
+
def delete_webhook_with_token(webhook_id:, webhook_token:)
|
40
|
+
send_request(:delete, "/webhooks/#{webhook_id}/#{webhook_token}")
|
41
|
+
end
|
42
|
+
|
43
|
+
def execute_webhook(webhook_id:, webhook_token:, json:, params: {})
|
44
|
+
send_request(:post, "/webhooks/#{webhook_id}/#{webhook_token}", json:, params:)
|
45
|
+
end
|
46
|
+
|
47
|
+
def execute_slack_compatible_webhook(webhook_id:, webhook_token:, params: {})
|
48
|
+
send_request(:post, "/webhooks/#{webhook_id}/#{webhook_token}/slack", params:)
|
49
|
+
end
|
50
|
+
|
51
|
+
def execute_github_compatible_webhook(webhook_id:, webhook_token:, params: {})
|
52
|
+
send_request(:post, "/webhooks/#{webhook_id}/#{webhook_token}/github", params:)
|
53
|
+
end
|
54
|
+
|
55
|
+
def get_webhook_message(webhook_id:, webhook_token:, message_id:, params: {})
|
56
|
+
send_request(:get, "/webhooks/#{webhook_id}/#{webhook_token}/messages/#{message_id}", params:)
|
57
|
+
end
|
58
|
+
|
59
|
+
def edit_webhook_message(webhook_id:, webhook_token:, message_id:, json:, params: {})
|
60
|
+
send_request(:patch, "/webhooks/#{webhook_id}/#{webhook_token}/messages/#{message_id}", json:, params:)
|
61
|
+
end
|
62
|
+
|
63
|
+
def delete_webhook_message(webhook_id:, webhook_token:, message_id:)
|
64
|
+
send_request(:delete, "/webhooks/#{webhook_id}/#{webhook_token}/messages/#{message_id}")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/resources/application"
|
4
|
+
require "lib_discord/resources/application_command"
|
5
|
+
require "lib_discord/resources/application_role_connection_metadata"
|
6
|
+
require "lib_discord/resources/audit_log"
|
7
|
+
require "lib_discord/resources/auto_moderation"
|
8
|
+
require "lib_discord/resources/channel"
|
9
|
+
require "lib_discord/resources/emoji"
|
10
|
+
require "lib_discord/resources/guild"
|
11
|
+
require "lib_discord/resources/guild_scheduled_event"
|
12
|
+
require "lib_discord/resources/guild_template"
|
13
|
+
require "lib_discord/resources/interaction"
|
14
|
+
require "lib_discord/resources/invite"
|
15
|
+
require "lib_discord/resources/stage_instance"
|
16
|
+
require "lib_discord/resources/sticker"
|
17
|
+
require "lib_discord/resources/user"
|
18
|
+
require "lib_discord/resources/voice"
|
19
|
+
require "lib_discord/resources/webhook"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "dry/types"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
module Types
|
7
|
+
include Dry::Types()
|
8
|
+
|
9
|
+
module Resource
|
10
|
+
HttpKwargs = Types::Hash.schema(
|
11
|
+
params?: Types::Params::Hash,
|
12
|
+
json?: Types::JSON::Hash
|
13
|
+
)
|
14
|
+
|
15
|
+
ClientHeaders = Types::Hash.map(
|
16
|
+
Types::Strict::Symbol,
|
17
|
+
Types::Strict::String
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module LibDiscord
|
4
|
+
def self.project_url
|
5
|
+
"https://sr.ht/~komidore64/lib_discord"
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.source_url
|
9
|
+
"https://git.sr.ht/~komidore64/lib_discord"
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.bug_tracker_url
|
13
|
+
"https://todo.sr.ht/~komidore64/lib_discord"
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.mailing_list_url
|
17
|
+
"https://sr.ht/~komidore64/lib_discord/lists"
|
18
|
+
end
|
19
|
+
end
|
data/lib/lib_discord.rb
ADDED
metadata
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lib_discord
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0.pre2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Adam Price
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-04-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: dry-container
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.11'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.11'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: dry-types
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.7'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.7'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: http
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '5.1'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.1'
|
55
|
+
description:
|
56
|
+
email:
|
57
|
+
- komidore64@gmail.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- lib/lib_discord.rb
|
63
|
+
- lib/lib_discord/client.rb
|
64
|
+
- lib/lib_discord/errors.rb
|
65
|
+
- lib/lib_discord/resource.rb
|
66
|
+
- lib/lib_discord/resources.rb
|
67
|
+
- lib/lib_discord/resources/application.rb
|
68
|
+
- lib/lib_discord/resources/application_command.rb
|
69
|
+
- lib/lib_discord/resources/application_role_connection_metadata.rb
|
70
|
+
- lib/lib_discord/resources/audit_log.rb
|
71
|
+
- lib/lib_discord/resources/auto_moderation.rb
|
72
|
+
- lib/lib_discord/resources/channel.rb
|
73
|
+
- lib/lib_discord/resources/emoji.rb
|
74
|
+
- lib/lib_discord/resources/guild.rb
|
75
|
+
- lib/lib_discord/resources/guild_scheduled_event.rb
|
76
|
+
- lib/lib_discord/resources/guild_template.rb
|
77
|
+
- lib/lib_discord/resources/interaction.rb
|
78
|
+
- lib/lib_discord/resources/invite.rb
|
79
|
+
- lib/lib_discord/resources/stage_instance.rb
|
80
|
+
- lib/lib_discord/resources/sticker.rb
|
81
|
+
- lib/lib_discord/resources/user.rb
|
82
|
+
- lib/lib_discord/resources/voice.rb
|
83
|
+
- lib/lib_discord/resources/webhook.rb
|
84
|
+
- lib/lib_discord/response.rb
|
85
|
+
- lib/lib_discord/types.rb
|
86
|
+
- lib/lib_discord/urls.rb
|
87
|
+
- lib/lib_discord/version.rb
|
88
|
+
homepage:
|
89
|
+
licenses:
|
90
|
+
- AGPL-3.0-only
|
91
|
+
metadata:
|
92
|
+
rubygems_mfa_required: 'true'
|
93
|
+
bug_tracker_uri: https://todo.sr.ht/~komidore64/lib_discord
|
94
|
+
homepage_uri: https://sr.ht/~komidore64/lib_discord
|
95
|
+
mailing_list_uri: https://sr.ht/~komidore64/lib_discord/lists
|
96
|
+
source_code_uri: https://git.sr.ht/~komidore64/lib_discord
|
97
|
+
post_install_message:
|
98
|
+
rdoc_options: []
|
99
|
+
require_paths:
|
100
|
+
- lib
|
101
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '3.2'
|
106
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
requirements: []
|
112
|
+
rubygems_version: 3.5.8
|
113
|
+
signing_key:
|
114
|
+
specification_version: 4
|
115
|
+
summary: Unfancy Discord API Ruby-bindings
|
116
|
+
test_files: []
|