Module: Brainiac::Plugins::Discord::Config
- Defined in:
- lib/brainiac/plugins/discord/config.rb
Overview
Discord configuration — loads ~/.brainiac/discord.json. Provides channel mappings, authorization, user mappings, and project routing.
Constant Summary collapse
- DISCORD_CONFIG_FILE =
File.join( ENV.fetch("BRAINIAC_DIR", File.join(Dir.home, ".brainiac")), "discord.json" )
- DISCORD_THREAD_MAP_FILE =
File.join( ENV.fetch("BRAINIAC_DIR", File.join(Dir.home, ".brainiac")), "discord_thread_map.json" )
Class Attribute Summary collapse
-
.config ⇒ Object
readonly
Returns the value of attribute config.
-
.thread_map_mutex ⇒ Object
readonly
Returns the value of attribute thread_map_mutex.
Class Method Summary collapse
- .authorized_role_ids ⇒ Object
- .authorized_user_ids ⇒ Object
- .channel_mappings ⇒ Object
- .current ⇒ Object
- .dashboard_token ⇒ Object
- .default_project ⇒ Object
-
.find_project_for_channel(channel_id) ⇒ Object
Find the project for a given Discord channel.
- .giphy_api_key ⇒ Object
- .load! ⇒ Object
-
.load_thread_map ⇒ Object
--- Thread Map Persistence ---.
- .owner_discord_id ⇒ Object
- .reload! ⇒ Object
- .save_thread_map(map) ⇒ Object
- .user_mappings ⇒ Object
Class Attribute Details
.config ⇒ Object (readonly)
Returns the value of attribute config.
23 24 25 |
# File 'lib/brainiac/plugins/discord/config.rb', line 23 def config @config end |
.thread_map_mutex ⇒ Object (readonly)
Returns the value of attribute thread_map_mutex.
23 24 25 |
# File 'lib/brainiac/plugins/discord/config.rb', line 23 def thread_map_mutex @thread_map_mutex end |
Class Method Details
.authorized_role_ids ⇒ Object
68 69 70 71 72 73 74 75 76 |
# File 'lib/brainiac/plugins/discord/config.rb', line 68 def if @config["role_mappings"] @config["role_mappings"].values elsif @config["authorized_role_ids"].is_a?(Hash) @config["authorized_role_ids"].values else @config["authorized_role_ids"] || [] end.map(&:to_s) end |
.authorized_user_ids ⇒ Object
78 79 80 |
# File 'lib/brainiac/plugins/discord/config.rb', line 78 def @config["authorized_user_ids"] || [] end |
.channel_mappings ⇒ Object
60 61 62 |
# File 'lib/brainiac/plugins/discord/config.rb', line 60 def channel_mappings @config["channel_mappings"] || {} end |
.current ⇒ Object
40 41 42 |
# File 'lib/brainiac/plugins/discord/config.rb', line 40 def current @config end |
.dashboard_token ⇒ Object
52 53 54 |
# File 'lib/brainiac/plugins/discord/config.rb', line 52 def dashboard_token @config["dashboard_token"] end |
.default_project ⇒ Object
44 45 46 |
# File 'lib/brainiac/plugins/discord/config.rb', line 44 def default_project @config["default_project"] end |
.find_project_for_channel(channel_id) ⇒ Object
Find the project for a given Discord channel. Returns [project_key, project_config, mapping] or nil.
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/brainiac/plugins/discord/config.rb', line 84 def find_project_for_channel(channel_id) mapping = channel_mappings[channel_id] unless mapping default = default_project mapping = { "project" => default } if default end return nil unless mapping project_key = mapping["project"] project_config = PROJECTS[project_key] return nil unless project_config [project_key, project_config, mapping] end |
.giphy_api_key ⇒ Object
56 57 58 |
# File 'lib/brainiac/plugins/discord/config.rb', line 56 def giphy_api_key @config["giphy_api_key"] end |
.load! ⇒ Object
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/brainiac/plugins/discord/config.rb', line 25 def load! @config = if File.exist?(DISCORD_CONFIG_FILE) JSON.parse(File.read(DISCORD_CONFIG_FILE)) else { "channel_mappings" => {}, "authorized_role_ids" => [], "authorized_user_ids" => [] } end rescue JSON::ParserError => e LOG.error "[Discord] Failed to parse discord.json: #{e.}" if defined?(LOG) @config = { "channel_mappings" => {}, "authorized_role_ids" => [], "authorized_user_ids" => [] } end |
.load_thread_map ⇒ Object
--- Thread Map Persistence ---
103 104 105 106 107 108 109 |
# File 'lib/brainiac/plugins/discord/config.rb', line 103 def load_thread_map return {} unless File.exist?(DISCORD_THREAD_MAP_FILE) JSON.parse(File.read(DISCORD_THREAD_MAP_FILE)) rescue JSON::ParserError {} end |
.owner_discord_id ⇒ Object
48 49 50 |
# File 'lib/brainiac/plugins/discord/config.rb', line 48 def owner_discord_id @config["owner_discord_id"] end |
.reload! ⇒ Object
36 37 38 |
# File 'lib/brainiac/plugins/discord/config.rb', line 36 def reload! load! end |
.save_thread_map(map) ⇒ Object
111 112 113 |
# File 'lib/brainiac/plugins/discord/config.rb', line 111 def save_thread_map(map) File.write(DISCORD_THREAD_MAP_FILE, JSON.pretty_generate(map)) end |
.user_mappings ⇒ Object
64 65 66 |
# File 'lib/brainiac/plugins/discord/config.rb', line 64 def user_mappings @config["user_mappings"] || {} end |