ika_bot/lib/ika/plugin/drill_plugin.rb

58 lines
1.0 KiB
Ruby
Raw Permalink Normal View History

2025-08-28 21:02:26 -04:00
require_relative "../../drill"
class Plugin
class DrillPlugin < Plugin
attr_reader :drills
def initialize(ika)
super
@drills = {}
end
def handle_message(message)
return false unless super
Message.new(self, message).handle
end
def can_handle_message?(message)
return true if message.content == "!drill"
drills[message.channel.id]&.can_handle_message?(message)
end
class Message
attr_reader :plugin, :message
def initialize(plugin, message)
@plugin = plugin
@message = message
end
def content
message.content
end
def responder
message.responder
end
def respond(response)
responder.call response
end
def handle
drill.handle_message(message)
end
def drill
drl = plugin.drills[message.channel.id]
return drl if drl
drl = Drill.new responder: responder
plugin.drills[message.channel.id] = drl
end
end
end
end