class Qbot::Base
Public Class Methods
cron(pattern, &block)
click to toggle source
# File lib/qbot/base.rb, line 22 def cron(pattern, &block) schedule(pattern, &block) end
help(usages)
click to toggle source
# File lib/qbot/base.rb, line 26 def help(usages) Qbot.app.help_text(usages) end
new(pattern, **options, &block)
click to toggle source
# File lib/qbot/base.rb, line 50 def initialize(pattern, **options, &block) @pattern = pattern @options = options @callback = block end
on(pattern, **options, &block)
click to toggle source
# File lib/qbot/base.rb, line 16 def on(pattern, **options, &block) pattern = Regexp.new("\b#{pattern}\b") unless Regexp === pattern instance = new(pattern, **options, &block) Qbot.app.add_bot(instance) end
Private Class Methods
schedule(pattern, &block)
click to toggle source
# File lib/qbot/base.rb, line 31 def schedule(pattern, &block) parser = CronParser.new(pattern) current = Time.now delay = parser.next(current) - current Qbot.app.timers.after(delay) do begin instance = new(pattern) instance.instance_eval(&block) rescue => e Qbot.app.logger.error("#{instance.class} - Error: #{e}") end schedule(pattern, &block) end end
Public Instance Methods
cache()
click to toggle source
# File lib/qbot/base.rb, line 76 def cache Qbot.app.storage.namespace(self.class.name) end
listen(message)
click to toggle source
# File lib/qbot/base.rb, line 56 def listen(message) if @options[:global] return unless message.match(@pattern) else return unless message.mentioned? return unless message.match(@pattern, prefix: message.mention) end Qbot.app.logger.debug("#{self.class} - Recieve message: '#{message.text}'") @message = message instance_exec(@message, &@callback) rescue => e Qbot.app.logger.error("#{self.class} - Error: #{e}") end
post(text, **options)
click to toggle source
# File lib/qbot/base.rb, line 72 def post(text, **options) Qbot.app.adapter.post(text, reply_to: @message, **options) end