diff --git a/ika.rb b/ika.rb index 9461e0b..94af2d1 100644 --- a/ika.rb +++ b/ika.rb @@ -1,30 +1,8 @@ - require 'discordrb' - require_relative './session' - require_relative './lesson' +require 'discordrb' +require_relative './src/ika' - token = File.read("./token") +token = File.read("./token") - bot = Discordrb::Bot.new(token:) +ika = Ika.new Discordrb::Bot.new(token:) - current_session = nil - current_lesson = Lesson.new - - bot.message do |event| - if event.message.content == "!init" - next event.respond("There's already a session running") unless current_session.nil? - - next current_session = Session.new(event, event.message.author) - elsif event.message.content == "!lesson" - next event.respond("There's already a lesson running") if current_lesson.running? - event.respond("Starting a lesson now!") - next current_lesson.start!(event.channel) - elsif event.message.content == "!stoplesson" - next event.respond("There's no lesson running") unless current_lesson.running? - event.respond("Ending the current lesson!") - next current_lesson.stop! - end - - current_session&.respond_to event - end - - bot.run +ika.start! diff --git a/src/ika.rb b/src/ika.rb new file mode 100644 index 0000000..78a10bd --- /dev/null +++ b/src/ika.rb @@ -0,0 +1,48 @@ +require_relative './session' + require_relative './lesson' + +class Ika + attr_reader :bot + attr_reader :lessons, :sessions + attr_accessor :current_lesson, :current_session + + def initialize(bot) + @bot = bot + @lessons = {} + @sessions = {} + @current_session = nil + @current_lesson = Lesson.new + end + + def start! + bot.remove_handler @message_handler if @message_handler + + @message_handler = bot.message do |message| + handle_message message + end + + bot.run # you can run this in the background, idk + end + + def end! + bot.remove_handler @message_handler if @message_handler + end + + def handle_message message + if message.message.content == "!init" + return message.respond("There's already a session running") unless current_session.nil? + + return current_session = Session.new(message, event.message.author) + elsif message.message.content == "!lesson" + return message.respond("There's already a lesson running") if current_lesson.running? + + message.respond("Starting a lesson now!") + return current_lesson.start!(message.channel) + elsif message.message.content == "!stoplesson" + return message.respond("There's no lesson running") unless current_lesson.running? + + message.respond("Ending the current lesson!") + return current_lesson.stop! + end + end +end diff --git a/lesson.rb b/src/lesson.rb similarity index 100% rename from lesson.rb rename to src/lesson.rb diff --git a/session.rb b/src/session.rb similarity index 100% rename from session.rb rename to src/session.rb