class Bobby

Public Class Methods

new(options) click to toggle source
# File lib/bobby-b/bobby.rb, line 6
def initialize(options)
  @queue = []
  @last_message_time = 0
  @cooldown = 0.5
  @discord_token = options.api_key
  @responses = File.readlines(options.responses_file)
end

Public Instance Methods

process_queue() click to toggle source
# File lib/bobby-b/bobby.rb, line 36
def process_queue
  now = Time.now.to_f
  return if @queue.empty? || now - @last_message_time < @cooldown

  send_newest_message
  @last_message_time = now
end
send_newest_message() click to toggle source
# File lib/bobby-b/bobby.rb, line 29
def send_newest_message
  response = @responses.sample
  event = @queue.pop
  event.respond(response)
  puts "Responded with #{response}"
end
start() click to toggle source
# File lib/bobby-b/bobby.rb, line 14
def start
  start_queue
  start_bot
end
start_bot() click to toggle source
# File lib/bobby-b/bobby.rb, line 19
def start_bot
  bot = Discordrb::Bot.new token: @discord_token

  bot.message do |event|
    @queue.unshift(event) if event.message.to_s.include? bot.bot_user.id.to_s
  end

  bot.run
end
start_queue() click to toggle source
# File lib/bobby-b/bobby.rb, line 44
def start_queue
  Thread.new do
    puts 'Message queue started'
    loop do
      sleep 0.1
      process_queue
    end
  end
end