class MijDiscord::Cache::BotCache
Public Class Methods
new(bot)
click to toggle source
# File lib/mij-discord/cache.rb, line 5 def initialize(bot) @bot = bot reset end
Public Instance Methods
get_channel(key, server, local: false)
click to toggle source
# File lib/mij-discord/cache.rb, line 42 def get_channel(key, server, local: false) id = key&.to_id || return return @channels[id] if @channels.has_key?(id) raise MijDiscord::Errors::Forbidden if @restricted_channels[id] return nil if local begin response = MijDiscord::Core::API::Channel.resolve(@bot.auth, id) rescue MijDiscord::Errors::NotFound return nil rescue MijDiscord::Errors::Forbidden @restricted_channels[id] = true raise end channel = @channels[id] = MijDiscord::Data::Channel.create(JSON.parse(response), @bot, server) @pm_channels[channel.recipient.id] = channel if channel.pm? if (server = channel.server) server.cache.put_channel!(channel) end channel end
get_pm_channel(key, local: false)
click to toggle source
# File lib/mij-discord/cache.rb, line 67 def get_pm_channel(key, local: false) id = key&.to_id || return return @pm_channels[id] if @pm_channels.has_key?(id) return nil if local response = MijDiscord::Core::API::User.create_pm(@bot.auth, id) channel = MijDiscord::Data::Channel.create(JSON.parse(response), @bot, nil) @channels[channel.id] = @pm_channels[id] = channel end
get_server(key, local: false)
click to toggle source
# File lib/mij-discord/cache.rb, line 28 def get_server(key, local: false) id = key&.to_id || return return @servers[id] if @servers.has_key?(id) return nil if local begin response = MijDiscord::Core::API::Server.resolve(@bot.auth, id) rescue MijDiscord::Errors::NotFound return nil end @servers[id] = MijDiscord::Data::Server.new(JSON.parse(response), @bot) end
get_user(key, local: false)
click to toggle source
# File lib/mij-discord/cache.rb, line 78 def get_user(key, local: false) id = key&.to_id || return return @users[id] if @users.has_key?(id) return nil if local begin response = case @bot.auth.type when :bot then MijDiscord::Core::API::User.resolve(@bot.auth, id) when :user then MijDiscord::Core::API::User.resolve2(@bot.auth, id) end rescue MijDiscord::Errors::NotFound return nil end @users[id] = MijDiscord::Data::User.new(JSON.parse(response), @bot) end
inspect()
click to toggle source
# File lib/mij-discord/cache.rb, line 151 def inspect MijDiscord.make_inspect(self) end
list_channels()
click to toggle source
# File lib/mij-discord/cache.rb, line 20 def list_channels @channels.values end
list_servers()
click to toggle source
# File lib/mij-discord/cache.rb, line 16 def list_servers @servers.values end
list_users()
click to toggle source
# File lib/mij-discord/cache.rb, line 24 def list_users @users.values end
put_channel(data, server, update: false)
click to toggle source
# File lib/mij-discord/cache.rb, line 105 def put_channel(data, server, update: false) id = data['id'].to_i if @channels.has_key?(id) @channels[id].update_data(data) if update return @channels[id] end channel = @channels[id] = MijDiscord::Data::Channel.create(data, @bot, server) @pm_channels[channel.recipient.id] = channel if channel.pm? if (server = channel.server) server.cache.put_channel!(channel) end channel end
put_server(data, update: false)
click to toggle source
# File lib/mij-discord/cache.rb, line 95 def put_server(data, update: false) id = data['id'].to_i if @servers.has_key?(id) @servers[id].update_data(data) if update return @servers[id] end @servers[id] = MijDiscord::Data::Server.new(data, @bot) end
put_user(data, update: false)
click to toggle source
# File lib/mij-discord/cache.rb, line 122 def put_user(data, update: false) id = data['id'].to_i if @users.has_key?(id) @users[id].update_data(data) if update return @users[id] end @users[id] = MijDiscord::Data::User.new(data, @bot) end
remove_channel(key)
click to toggle source
# File lib/mij-discord/cache.rb, line 136 def remove_channel(key) channel = @channels.delete(key&.to_id) @pm_channels.delete(channel.recipient.id) if channel&.pm? if (server = channel&.server) server.cache.remove_channel(key) end channel end
remove_server(key)
click to toggle source
# File lib/mij-discord/cache.rb, line 132 def remove_server(key) @servers.delete(key&.to_id) end
remove_user(key)
click to toggle source
# File lib/mij-discord/cache.rb, line 147 def remove_user(key) @users.delete(key&.to_id) end
reset()
click to toggle source
# File lib/mij-discord/cache.rb, line 11 def reset @servers, @channels, @users = {}, {}, {} @pm_channels, @restricted_channels = {}, {} end