Module: Brainiac::Plugins::Discord

Defined in:
lib/brainiac/plugins/discord.rb,
lib/brainiac/plugins/discord/api.rb,
lib/brainiac/plugins/discord/cli.rb,
lib/brainiac/plugins/discord/config.rb,
lib/brainiac/plugins/discord/gateway.rb,
lib/brainiac/plugins/discord/message.rb,
lib/brainiac/plugins/discord/prompts.rb,
lib/brainiac/plugins/discord/version.rb,
lib/brainiac/plugins/discord/delivery.rb,
lib/brainiac/plugins/discord/metadata.rb,
lib/brainiac/plugins/discord/reactions.rb

Defined Under Namespace

Modules: Api, Cli, Config, Delivery, Gateway, Message, Prompts, Reactions

Constant Summary collapse

VERSION =
"0.0.1"

Class Method Summary collapse

Class Method Details

.cli(args) ⇒ Object

Plugin CLI entry point — called by brainiac core's plugin delegation.



264
265
266
# File 'lib/brainiac/plugins/discord/cli.rb', line 264

def self.cli(args)
  Cli.run(args)
end

.completionsObject

Subcommand names for bash completion.



269
270
271
# File 'lib/brainiac/plugins/discord/cli.rb', line 269

def self.completions
  %w[setup config default map owner token status]
end

.configured?Boolean

Returns true if Discord has at least one bot token configured.

Returns:

  • (Boolean)


12
13
14
15
16
17
18
19
20
# File 'lib/brainiac/plugins/discord/metadata.rb', line 12

def self.configured?
  registry_file = File.join(ENV.fetch("BRAINIAC_DIR", File.join(Dir.home, ".brainiac")), "agents.json")
  return false unless File.exist?(registry_file)

  registry = JSON.parse(File.read(registry_file))
  registry.any? { |_k, v| v.is_a?(Hash) && v.dig("env", "DISCORD_BOT_TOKEN") }
rescue StandardError
  false
end

.help_textObject

Help text shown in brainiac help when the plugin is installed.



23
24
25
# File 'lib/brainiac/plugins/discord/metadata.rb', line 23

def self.help_text
  "    brainiac discord <command>    Manage Discord bots (config, token, status, map)"
end

.register(app) ⇒ Object

Called by Brainiac plugin system during server startup.

Parameters:

  • app (Sinatra::Application)

    The running Brainiac server



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/brainiac/plugins/discord.rb', line 21

def register(app)
  # Load Discord config
  Brainiac::Plugins::Discord::Config.load!

  # Register channel prompt
  Brainiac.register_channel_prompt(:discord, Brainiac::Plugins::Discord::Prompts::CHANNEL)

  # Register as notification provider
  register_notification_handler!

  # Register crash handler
  register_crash_handler!

  # Start all per-agent Discord bot gateway connections
  Brainiac::Plugins::Discord::Gateway.start_all!

  # Start draft delivery poller
  Brainiac::Plugins::Discord::Delivery.start_poller!

  # Set up API routes
  setup_routes(app)

  LOG.info "[Discord] Plugin registered (#{Brainiac::Plugins::Discord::Gateway.bot_count} bots)"
end