Class: MijDiscord::Cache::BotCache
- Inherits:
-
Object
- Object
- MijDiscord::Cache::BotCache
- Defined in:
- lib/mij-discord/cache.rb
Instance Method Summary collapse
- #get_channel(key, server, local: false) ⇒ Object
- #get_pm_channel(key, local: false) ⇒ Object
- #get_server(key, local: false) ⇒ Object
- #get_user(key, local: false) ⇒ Object
-
#initialize(bot) ⇒ BotCache
constructor
A new instance of BotCache.
- #inspect ⇒ Object
- #list_channels ⇒ Object
- #list_servers ⇒ Object
- #list_users ⇒ Object
- #put_channel(data, server, update: false) ⇒ Object
- #put_server(data, update: false) ⇒ Object
- #put_user(data, update: false) ⇒ Object
- #remove_channel(key) ⇒ Object
- #remove_server(key) ⇒ Object
- #remove_user(key) ⇒ Object
- #reset ⇒ Object
Constructor Details
#initialize(bot) ⇒ BotCache
Returns a new instance of BotCache.
5 6 7 8 9 |
# File 'lib/mij-discord/cache.rb', line 5 def initialize(bot) @bot = bot reset end |
Instance Method Details
#get_channel(key, server, local: false) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# 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) ⇒ Object
67 68 69 70 71 72 73 74 75 76 |
# 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) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 |
# 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) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# 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 ⇒ Object
151 152 153 |
# File 'lib/mij-discord/cache.rb', line 151 def inspect MijDiscord.make_inspect(self) end |
#list_channels ⇒ Object
20 21 22 |
# File 'lib/mij-discord/cache.rb', line 20 def list_channels @channels.values end |
#list_servers ⇒ Object
16 17 18 |
# File 'lib/mij-discord/cache.rb', line 16 def list_servers @servers.values end |
#list_users ⇒ Object
24 25 26 |
# File 'lib/mij-discord/cache.rb', line 24 def list_users @users.values end |
#put_channel(data, server, update: false) ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# 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) ⇒ Object
95 96 97 98 99 100 101 102 103 |
# 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) ⇒ Object
122 123 124 125 126 127 128 129 130 |
# 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) ⇒ Object
136 137 138 139 140 141 142 143 144 145 |
# 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) ⇒ Object
132 133 134 |
# File 'lib/mij-discord/cache.rb', line 132 def remove_server(key) @servers.delete(key&.to_id) end |
#remove_user(key) ⇒ Object
147 148 149 |
# File 'lib/mij-discord/cache.rb', line 147 def remove_user(key) @users.delete(key&.to_id) end |
#reset ⇒ Object
11 12 13 14 |
# File 'lib/mij-discord/cache.rb', line 11 def reset @servers, @channels, @users = {}, {}, {} @pm_channels, @restricted_channels = {}, {} end |