Module: Discordrb::IDObject

Overview

Mixin for objects that have IDs

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#idInteger (readonly) Also known as: resolve_id, hash


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.


95
96
97
98
# File 'lib/discordrb/data.rb', line 95

def self.synthesise(time)
  ms = (time.to_f * 1000).to_i
  (ms - DISCORD_EPOCH) << 22
end

Instance Method Details

#==(other) ⇒ Object Also known as: eql?

ID based comparison


77
78
79
# File 'lib/discordrb/data.rb', line 77

def ==(other)
  Discordrb.id_compare(@id, other)
end

#creation_timeTime

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


86
87
88
89
90
# File 'lib/discordrb/data.rb', line 86

def creation_time  # Milliseconds

  ms = (@id >> 22) + DISCORD_EPOCH
  Time.at(ms / 1000.0)
end