class MijDiscord::Cache::ChannelCache

Constants

MAX_MESSAGES

Public Class Methods

new(channel, bot, max_messages: MAX_MESSAGES) click to toggle source
# File lib/mij-discord/cache.rb, line 264
def initialize(channel, bot, max_messages: MAX_MESSAGES)
  @channel, @bot = channel, bot
  @max_messages = max_messages

  reset
end

Public Instance Methods

get_message(key, local: false) click to toggle source
# File lib/mij-discord/cache.rb, line 275
def get_message(key, local: false)
  id = key&.to_id || return
  return @messages[id] if @messages.has_key?(id)
  return nil if local

  begin
    response = case @bot.auth.type
      when :bot then MijDiscord::Core::API::Channel.message(@bot.auth, @channel.id, key)
      when :user then MijDiscord::Core::API::Channel.messages(@bot.auth, @channel.id, 1, nil, nil, key)
    end
  rescue MijDiscord::Errors::NotFound
    return nil
  end

  message = @messages.store(id, MijDiscord::Data::Message.new(JSON.parse(response), @bot))
  @messages.shift while @messages.length > @max_messages

  message
end
inspect() click to toggle source
# File lib/mij-discord/cache.rb, line 312
def inspect
  MijDiscord.make_inspect(self)
end
put_message(data, update: false) click to toggle source
# File lib/mij-discord/cache.rb, line 295
def put_message(data, update: false)
  id = data['id'].to_i
  if @messages.has_key?(id)
    @messages[id].update_data(data) if update
    return @messages[id]
  end

  message = @messages.store(id, MijDiscord::Data::Message.new(data, @bot))
  @messages.shift while @messages.length > @max_messages

  message
end
remove_message(key) click to toggle source
# File lib/mij-discord/cache.rb, line 308
def remove_message(key)
  @messages.delete(key&.to_id)
end
reset() click to toggle source
# File lib/mij-discord/cache.rb, line 271
def reset
  @messages = {}
end