MetalAdventures/src/discord/bot.rb

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