51 lines
1.0 KiB
Ruby
Executable File
51 lines
1.0 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
|
|
require "dotenv"
|
|
require "discordrb"
|
|
require "pry"
|
|
require "active_support/all"
|
|
|
|
Dotenv.load!(".env")
|
|
|
|
require_relative "../logger"
|
|
require_relative "../metal_adventures"
|
|
|
|
module MetalAdventuresDiscord
|
|
end
|
|
|
|
module MetalAdventuresDiscord
|
|
class Bot < Discordrb::Bot
|
|
# singleton system
|
|
def self.instance
|
|
@bot ||= new(token: ENV["DISCORD_TOKEN"])
|
|
end
|
|
|
|
def plug(plugin)
|
|
plugin.new(self)
|
|
logger.info("Pluggin #{plugin} enabled")
|
|
end
|
|
|
|
require_relative "./dice_plugin"
|
|
require_relative "./scenes_plugin"
|
|
require_relative "./refs_plugin"
|
|
require_relative "./clean_plugin"
|
|
|
|
instance.plug MetalAdventuresDiscord::DicePlugin
|
|
instance.plug MetalAdventuresDiscord::ScenesPlugin
|
|
instance.plug MetalAdventuresDiscord::RefsPlugin
|
|
instance.plug MetalAdventuresDiscord::CleanPlugin
|
|
|
|
at_exit do
|
|
logger.info "at exit"
|
|
instance.stop
|
|
end
|
|
|
|
Signal.trap("INT") do
|
|
instance.stop
|
|
exit
|
|
end
|
|
end
|
|
end
|
|
|
|
MetalAdventuresDiscord::Bot.instance.run
|