lib_discord 0.1.3 → 1.0.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/CONTRIBUTING.md +88 -0
- data/README.md +39 -65
- data/lib/lib_discord/client.rb +2665 -138
- data/lib/lib_discord/formatter.rb +108 -0
- data/lib/lib_discord/maps.rb +731 -0
- data/lib/lib_discord/permissions.rb +85 -0
- data/lib/lib_discord/urls.rb +3 -12
- data/lib/lib_discord/version.rb +1 -4
- data/lib/lib_discord.rb +3 -5
- metadata +10 -119
- data/CHANGELOG.md +0 -152
- data/lib/lib_discord/application.rb +0 -43
- data/lib/lib_discord/application_command.rb +0 -341
- data/lib/lib_discord/application_role_connection_metadata.rb +0 -52
- data/lib/lib_discord/audit_log.rb +0 -36
- data/lib/lib_discord/auto_moderation.rb +0 -106
- data/lib/lib_discord/channel.rb +0 -716
- data/lib/lib_discord/emoji.rb +0 -106
- data/lib/lib_discord/errors.rb +0 -31
- data/lib/lib_discord/guild.rb +0 -830
- data/lib/lib_discord/guild_scheduled_event.rb +0 -133
- data/lib/lib_discord/guild_template.rb +0 -128
- data/lib/lib_discord/interaction.rb +0 -163
- data/lib/lib_discord/invite.rb +0 -47
- data/lib/lib_discord/mappers/application_command_option_types.rb +0 -22
- data/lib/lib_discord/mappers/application_command_permission_types.rb +0 -14
- data/lib/lib_discord/mappers/application_command_types.rb +0 -14
- data/lib/lib_discord/mappers/application_integration_types.rb +0 -13
- data/lib/lib_discord/mappers/application_role_connection_metadata_types.rb +0 -19
- data/lib/lib_discord/mappers/audit_log_events.rb +0 -67
- data/lib/lib_discord/mappers/auto_moderation_action_types.rb +0 -14
- data/lib/lib_discord/mappers/auto_moderation_event_types.rb +0 -12
- data/lib/lib_discord/mappers/auto_moderation_keyword_preset_types.rb +0 -14
- data/lib/lib_discord/mappers/auto_moderation_trigger_types.rb +0 -15
- data/lib/lib_discord/mappers/channel_forum_layout_types.rb +0 -14
- data/lib/lib_discord/mappers/channel_message_activity_types.rb +0 -15
- data/lib/lib_discord/mappers/channel_message_types.rb +0 -42
- data/lib/lib_discord/mappers/channel_sort_order_types.rb +0 -13
- data/lib/lib_discord/mappers/channel_types.rb +0 -24
- data/lib/lib_discord/mappers/channel_video_quality_modes.rb +0 -13
- data/lib/lib_discord/mappers/guild_default_message_notification_levels.rb +0 -13
- data/lib/lib_discord/mappers/guild_explicit_content_filter_levels.rb +0 -14
- data/lib/lib_discord/mappers/guild_integration_expire_behaviors.rb +0 -13
- data/lib/lib_discord/mappers/guild_mfa_levels.rb +0 -13
- data/lib/lib_discord/mappers/guild_nsfw_levels.rb +0 -15
- data/lib/lib_discord/mappers/guild_onboarding_modes.rb +0 -13
- data/lib/lib_discord/mappers/guild_premium_tiers.rb +0 -15
- data/lib/lib_discord/mappers/guild_prompt_types.rb +0 -13
- data/lib/lib_discord/mappers/guild_scheduled_event_entity_types.rb +0 -14
- data/lib/lib_discord/mappers/guild_scheduled_event_privacy_levels.rb +0 -12
- data/lib/lib_discord/mappers/guild_scheduled_event_statuses.rb +0 -15
- data/lib/lib_discord/mappers/guild_verification_levels.rb +0 -16
- data/lib/lib_discord/mappers/interaction_callback_types.rb +0 -19
- data/lib/lib_discord/mappers/interaction_context_types.rb +0 -14
- data/lib/lib_discord/mappers/interaction_types.rb +0 -16
- data/lib/lib_discord/mappers/invite_target_types.rb +0 -13
- data/lib/lib_discord/mappers/message_component_button_styles.rb +0 -16
- data/lib/lib_discord/mappers/message_component_text_input_styles.rb +0 -13
- data/lib/lib_discord/mappers/message_component_types.rb +0 -19
- data/lib/lib_discord/mappers/poll_layout_types.rb +0 -12
- data/lib/lib_discord/mappers/stage_instance_privacy_levels.rb +0 -13
- data/lib/lib_discord/mappers/sticker_format_types.rb +0 -15
- data/lib/lib_discord/mappers/sticker_types.rb +0 -13
- data/lib/lib_discord/mappers/user_premium_types.rb +0 -15
- data/lib/lib_discord/mappers/user_visibility_types.rb +0 -13
- data/lib/lib_discord/mappers/webhooks_types.rb +0 -14
- data/lib/lib_discord/mappers.rb +0 -87
- data/lib/lib_discord/poll.rb +0 -62
- data/lib/lib_discord/resource.rb +0 -133
- data/lib/lib_discord/response.rb +0 -43
- data/lib/lib_discord/stage_instance.rb +0 -79
- data/lib/lib_discord/sticker.rb +0 -132
- data/lib/lib_discord/types.rb +0 -47
- data/lib/lib_discord/user.rb +0 -174
- data/lib/lib_discord/voice.rb +0 -29
- data/lib/lib_discord/webhook.rb +0 -299
@@ -0,0 +1,108 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "lib_discord/maps"
|
4
|
+
|
5
|
+
module LibDiscord
|
6
|
+
module Formatter
|
7
|
+
##
|
8
|
+
# Format a user ID for use in a message.
|
9
|
+
#
|
10
|
+
# @param user_id [#to_s] User ID
|
11
|
+
# @return [String] Formatted string
|
12
|
+
#
|
13
|
+
# @example
|
14
|
+
# LibDiscord.formatter.user(1234) # => "<@1234>"
|
15
|
+
def self.user(user_id) = "<@#{user_id}>"
|
16
|
+
|
17
|
+
##
|
18
|
+
# Format a channel ID for use in a message.
|
19
|
+
#
|
20
|
+
# @param channel_id [#to_s] Channel ID
|
21
|
+
# @return [String] Formatted string
|
22
|
+
#
|
23
|
+
# @example
|
24
|
+
# LibDiscord.formatter.channel(1234) # => "<#1234>"
|
25
|
+
def self.channel(channel_id) = "<##{channel_id}>"
|
26
|
+
|
27
|
+
##
|
28
|
+
# Format a role ID for use in a message.
|
29
|
+
#
|
30
|
+
# @param role_id [#to_s] Role ID
|
31
|
+
# @return [String] Formatted string
|
32
|
+
#
|
33
|
+
# @example
|
34
|
+
# LibDiscord.formatter.role(1234) # => "<@&1234>"
|
35
|
+
def self.role(role_id) = "<@&#{role_id}>"
|
36
|
+
|
37
|
+
# TODO: figure out how to do this one
|
38
|
+
# def self.slash_command
|
39
|
+
# end
|
40
|
+
|
41
|
+
# TODO: write me
|
42
|
+
# def self.custom_emoji(name, id, animated: false)
|
43
|
+
# end
|
44
|
+
|
45
|
+
##
|
46
|
+
# Format a Unix timestamp for use in a message.
|
47
|
+
#
|
48
|
+
# @param unix_ts [#to_i] Unix timestamp
|
49
|
+
# @param style [String] Single character denoting presentation style.
|
50
|
+
# @return [String] Formatted string
|
51
|
+
# @raise [RuntimeError] if +style+ is not an acceptable timestamp
|
52
|
+
# presentation style.
|
53
|
+
#
|
54
|
+
# @example
|
55
|
+
# LibDiscord.formatter.timestamp(0) # => "<t:0>"
|
56
|
+
# @example Set a style
|
57
|
+
# last_week = Date.today.to_time.to_i - (60 * 60 * 24 * 7)
|
58
|
+
# LibDiscord.formatter.timestamp(last_week, "R") # => "<t:1747972800:R>"
|
59
|
+
#
|
60
|
+
# @see https://discord.com/developers/docs/reference#message-formatting-timestamp-styles
|
61
|
+
# Discord documentation "Timestamp Styles"
|
62
|
+
# @see https://en.wikipedia.org/wiki/Unix_time
|
63
|
+
# Wikipedia "Unix time"
|
64
|
+
def self.timestamp(unix_ts, style = nil)
|
65
|
+
ts = unix_ts.to_i
|
66
|
+
return "<t:#{ts}>" unless style
|
67
|
+
|
68
|
+
accepted = MAPS.fetch(:TimestampStyles).values
|
69
|
+
unless accepted.include?(style)
|
70
|
+
raise "Unknown timestamp style: #{style}"
|
71
|
+
end
|
72
|
+
|
73
|
+
"<t:#{ts}:#{style}>"
|
74
|
+
end
|
75
|
+
|
76
|
+
##
|
77
|
+
# Format a Guild navigation link for use in a message.
|
78
|
+
#
|
79
|
+
# @param type [#to_s] Guild Navigation Type
|
80
|
+
# @return [String] Formatted string
|
81
|
+
# @raise [RuntimeError] if +type+ is not an acceptable guild navigation
|
82
|
+
# type.
|
83
|
+
#
|
84
|
+
# @see https://discord.com/developers/docs/reference#message-formatting-guild-navigation-types
|
85
|
+
# Discord documentation "Guild Navigation Types"
|
86
|
+
def self.guild_navigation(type)
|
87
|
+
accepted = MAPS.fetch(:GuildNavigationTypes).values
|
88
|
+
unless accepted.include?(type)
|
89
|
+
raise "Unknown guild navigation type: #{type}"
|
90
|
+
end
|
91
|
+
|
92
|
+
"<id:#{type}>"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
##
|
97
|
+
# Get a reference to {Formatter}.
|
98
|
+
#
|
99
|
+
# @return [Formatter]
|
100
|
+
#
|
101
|
+
# @example
|
102
|
+
# fmt = LibDiscord.formatter
|
103
|
+
# fmt.user(12345678) # => "<@12345678>"
|
104
|
+
#
|
105
|
+
# @see https://discord.com/developers/docs/reference#message-formatting
|
106
|
+
# Discord documentation "Message Formatting"
|
107
|
+
def self.formatter = Formatter
|
108
|
+
end
|