Module: Discordrb::IDObject
- Included in:
- Application, Attachment, Channel, Emoji, GlobalEmoji, Integration, InviteChannel, InviteServer, Light::Integration, Light::LightProfile, Light::UltraLightServer, Message, Role, Server, User
- Defined in:
- lib/discordrb/data.rb
Overview
Mixin for objects that have IDs
Instance Attribute Summary collapse
-
#id ⇒ Integer
(also: #resolve_id)
readonly
The ID which uniquely identifies this object across Discord.
Class Method Summary collapse
-
.synthesise(time) ⇒ Integer
(also: synthesize)
Creates an artificial snowflake at the given point in time.
Instance Method Summary collapse
-
#==(other) ⇒ Object
ID based comparison.
-
#creation_time ⇒ Time
Estimates the time this object was generated on based on the beginning of the ID.
Instance Attribute Details
#id ⇒ Integer (readonly) Also known as: resolve_id
Returns the ID which uniquely identifies this object across Discord.
72 73 74 |
# File 'lib/discordrb/data.rb', line 72 def id @id end |
Class Method Details
.synthesise(time) ⇒ Integer Also known as: synthesize
Creates an artificial snowflake at the given point in time. Useful for comparing against.
92 93 94 95 |
# File 'lib/discordrb/data.rb', line 92 def self.synthesise(time) ms = (time.to_f * 1000).to_i (ms - DISCORD_EPOCH) << 22 end |
Instance Method Details
#==(other) ⇒ Object
ID based comparison
76 77 78 |
# File 'lib/discordrb/data.rb', line 76 def ==(other) Discordrb.id_compare(@id, other) end |
#creation_time ⇒ Time
Estimates the time this object was generated on based on the beginning of the ID. This is fairly accurate but shouldn't be relied on as Discord might change its algorithm at any time
83 84 85 86 87 |
# File 'lib/discordrb/data.rb', line 83 def creation_time # Milliseconds ms = (@id >> 22) + DISCORD_EPOCH Time.at(ms / 1000.0) end |