lib_discord 0.1.3 → 1.0.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.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +88 -0
  3. data/README.md +40 -67
  4. data/lib/lib_discord/client.rb +2667 -138
  5. data/lib/lib_discord/formatter.rb +108 -0
  6. data/lib/lib_discord/maps.rb +730 -0
  7. data/lib/lib_discord/permissions.rb +84 -0
  8. data/lib/lib_discord/urls.rb +9 -15
  9. data/lib/lib_discord/version.rb +1 -4
  10. data/lib/lib_discord.rb +3 -5
  11. metadata +12 -120
  12. data/CHANGELOG.md +0 -152
  13. data/lib/lib_discord/application.rb +0 -43
  14. data/lib/lib_discord/application_command.rb +0 -341
  15. data/lib/lib_discord/application_role_connection_metadata.rb +0 -52
  16. data/lib/lib_discord/audit_log.rb +0 -36
  17. data/lib/lib_discord/auto_moderation.rb +0 -106
  18. data/lib/lib_discord/channel.rb +0 -716
  19. data/lib/lib_discord/emoji.rb +0 -106
  20. data/lib/lib_discord/errors.rb +0 -31
  21. data/lib/lib_discord/guild.rb +0 -830
  22. data/lib/lib_discord/guild_scheduled_event.rb +0 -133
  23. data/lib/lib_discord/guild_template.rb +0 -128
  24. data/lib/lib_discord/interaction.rb +0 -163
  25. data/lib/lib_discord/invite.rb +0 -47
  26. data/lib/lib_discord/mappers/application_command_option_types.rb +0 -22
  27. data/lib/lib_discord/mappers/application_command_permission_types.rb +0 -14
  28. data/lib/lib_discord/mappers/application_command_types.rb +0 -14
  29. data/lib/lib_discord/mappers/application_integration_types.rb +0 -13
  30. data/lib/lib_discord/mappers/application_role_connection_metadata_types.rb +0 -19
  31. data/lib/lib_discord/mappers/audit_log_events.rb +0 -67
  32. data/lib/lib_discord/mappers/auto_moderation_action_types.rb +0 -14
  33. data/lib/lib_discord/mappers/auto_moderation_event_types.rb +0 -12
  34. data/lib/lib_discord/mappers/auto_moderation_keyword_preset_types.rb +0 -14
  35. data/lib/lib_discord/mappers/auto_moderation_trigger_types.rb +0 -15
  36. data/lib/lib_discord/mappers/channel_forum_layout_types.rb +0 -14
  37. data/lib/lib_discord/mappers/channel_message_activity_types.rb +0 -15
  38. data/lib/lib_discord/mappers/channel_message_types.rb +0 -42
  39. data/lib/lib_discord/mappers/channel_sort_order_types.rb +0 -13
  40. data/lib/lib_discord/mappers/channel_types.rb +0 -24
  41. data/lib/lib_discord/mappers/channel_video_quality_modes.rb +0 -13
  42. data/lib/lib_discord/mappers/guild_default_message_notification_levels.rb +0 -13
  43. data/lib/lib_discord/mappers/guild_explicit_content_filter_levels.rb +0 -14
  44. data/lib/lib_discord/mappers/guild_integration_expire_behaviors.rb +0 -13
  45. data/lib/lib_discord/mappers/guild_mfa_levels.rb +0 -13
  46. data/lib/lib_discord/mappers/guild_nsfw_levels.rb +0 -15
  47. data/lib/lib_discord/mappers/guild_onboarding_modes.rb +0 -13
  48. data/lib/lib_discord/mappers/guild_premium_tiers.rb +0 -15
  49. data/lib/lib_discord/mappers/guild_prompt_types.rb +0 -13
  50. data/lib/lib_discord/mappers/guild_scheduled_event_entity_types.rb +0 -14
  51. data/lib/lib_discord/mappers/guild_scheduled_event_privacy_levels.rb +0 -12
  52. data/lib/lib_discord/mappers/guild_scheduled_event_statuses.rb +0 -15
  53. data/lib/lib_discord/mappers/guild_verification_levels.rb +0 -16
  54. data/lib/lib_discord/mappers/interaction_callback_types.rb +0 -19
  55. data/lib/lib_discord/mappers/interaction_context_types.rb +0 -14
  56. data/lib/lib_discord/mappers/interaction_types.rb +0 -16
  57. data/lib/lib_discord/mappers/invite_target_types.rb +0 -13
  58. data/lib/lib_discord/mappers/message_component_button_styles.rb +0 -16
  59. data/lib/lib_discord/mappers/message_component_text_input_styles.rb +0 -13
  60. data/lib/lib_discord/mappers/message_component_types.rb +0 -19
  61. data/lib/lib_discord/mappers/poll_layout_types.rb +0 -12
  62. data/lib/lib_discord/mappers/stage_instance_privacy_levels.rb +0 -13
  63. data/lib/lib_discord/mappers/sticker_format_types.rb +0 -15
  64. data/lib/lib_discord/mappers/sticker_types.rb +0 -13
  65. data/lib/lib_discord/mappers/user_premium_types.rb +0 -15
  66. data/lib/lib_discord/mappers/user_visibility_types.rb +0 -13
  67. data/lib/lib_discord/mappers/webhooks_types.rb +0 -14
  68. data/lib/lib_discord/mappers.rb +0 -87
  69. data/lib/lib_discord/poll.rb +0 -62
  70. data/lib/lib_discord/resource.rb +0 -133
  71. data/lib/lib_discord/response.rb +0 -43
  72. data/lib/lib_discord/stage_instance.rb +0 -79
  73. data/lib/lib_discord/sticker.rb +0 -132
  74. data/lib/lib_discord/types.rb +0 -47
  75. data/lib/lib_discord/user.rb +0 -174
  76. data/lib/lib_discord/voice.rb +0 -29
  77. 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