class MijDiscord::Cache::ServerCache

Public Class Methods

new(server, bot) click to toggle source
# File lib/mij-discord/cache.rb, line 157
def initialize(server, bot)
  @server, @bot = server, bot

  reset
end

Public Instance Methods

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

  channel = @bot.cache.get_channel(key, local: local)
  return nil unless channel&.server == @server

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

  begin
    response = MijDiscord::Core::API::Server.resolve_member(@bot.auth, @server.id, id)
  rescue MijDiscord::Errors::NotFound
    return nil
  end

  @members[id] = MijDiscord::Data::Member.new(JSON.parse(response), @server, @bot)
end
get_role(key, local: false) click to toggle source
# File lib/mij-discord/cache.rb, line 193
def get_role(key, local: false)
  id = key&.to_id || return
  return @roles[id] if @roles.has_key?(id)
  return nil if local

  # No API to get individual role
  nil
end
inspect() click to toggle source
# File lib/mij-discord/cache.rb, line 256
def inspect
  MijDiscord.make_inspect(self)
end
list_channels() click to toggle source
# File lib/mij-discord/cache.rb, line 175
def list_channels
  @channels.values
end
list_members() click to toggle source
# File lib/mij-discord/cache.rb, line 167
def list_members
  @members.values
end
list_roles() click to toggle source
# File lib/mij-discord/cache.rb, line 171
def list_roles
  @roles.values
end
put_channel(data, update: false) click to toggle source
# File lib/mij-discord/cache.rb, line 232
def put_channel(data, update: false)
  channel = @bot.cache.put_channel(data, @server, update: update)
  @channels[channel.id] = channel
end
put_channel!(channel) click to toggle source
# File lib/mij-discord/cache.rb, line 237
def put_channel!(channel)
  @channels[channel.id] = channel
end
put_member(data, update: false) click to toggle source
# File lib/mij-discord/cache.rb, line 212
def put_member(data, update: false)
  id = data['user']['id'].to_i
  if @members.has_key?(id)
    @members[id].update_data(data) if update
    return @members[id]
  end

  @members[id] = MijDiscord::Data::Member.new(data, @server, @bot)
end
put_role(data, update: false) click to toggle source
# File lib/mij-discord/cache.rb, line 222
def put_role(data, update: false)
  id = data['id'].to_i
  if @roles.has_key?(id)
    @roles[id].update_data(data) if update
    return @roles[id]
  end

  @roles[id] = MijDiscord::Data::Role.new(data, @server, @bot)
end
remove_channel(key) click to toggle source
# File lib/mij-discord/cache.rb, line 249
def remove_channel(key)
  channel = @channels.delete(key&.to_id)
  @bot.cache.remove_channel(key) if channel

  channel
end
remove_member(key) click to toggle source
# File lib/mij-discord/cache.rb, line 241
def remove_member(key)
  @members.delete(key&.to_id)
end
remove_role(key) click to toggle source
# File lib/mij-discord/cache.rb, line 245
def remove_role(key)
  @roles.delete(key&.to_id)
end
reset() click to toggle source
# File lib/mij-discord/cache.rb, line 163
def reset
  @channels, @members, @roles = {}, {}, {}
end