class RBotKit::CommandManager
Public Class Methods
new(state_provider, caces, inlinecases, locale_provider = nil)
click to toggle source
# File lib/RBotKit.rb, line 88 def initialize(state_provider, caces, inlinecases, locale_provider = nil) @state_provider = state_provider @caces = caces @inlinecases = inlinecases @locale_provider = locale_provider == nil ? LocaleProvider.new : locale_provider end
set_cmd_classprefix(kp)
click to toggle source
# File lib/RBotKit.rb, line 80 def self.set_cmd_classprefix(kp) @@cmd_classprefix = kp end
set_is_test_mode()
click to toggle source
# File lib/RBotKit.rb, line 84 def self.set_is_test_mode() @@is_test_mode = true end
Public Instance Methods
process_request(req)
click to toggle source
# File lib/RBotKit.rb, line 95 def process_request(req) return if @state_provider.is_req_already_processed(req.chat_id, req.id) @state_provider.update_last_processed_req_id(req.chat_id, req.id) state = @state_provider.get_current_state(req.chat_id) cmdCase = nil arrs = req.class == RequestCallback ? @inlinecases : @caces arrs.each do |cc| in_state = cc.state.class == Array ? cc.state.include?(state) : cc.state == state if in_state || cc.state == :any if cc.cmdtext.class == Hash regexp = cc.cmdtext[:regexp] cmdCase = cc if regexp != nil && regexp.match(req.text) elsif cc.cmdtext.class == Symbol && cc.cmdtext == :any cmdCase = cc elsif cc.cmdtext.class == Symbol && cc.cmdtext == :hasphoto && req.photo_id != nil cmdCase = cc else cmdCase = cc if cc.cmdtext == req.text end end break if cmdCase != nil end return if cmdCase == nil begin cmdHandel = Object::const_get("#{@@cmd_classprefix}#{cmdCase.cmdclass}").new cmdHandel.request = req cmdHandel.state_provider = @state_provider cmdHandel.before_init() cmdHandel.before_validate() cmdHandel.handle() responces = cmdHandel.responces return if responces == nil || responces.empty? responces.each do |res| locale = @locale_provider.get_locale_for(res.chat_id) res.set_test_mode(@@is_test_mode) res.call(locale) end rescue UserError => e p "UserError #{e.message} " eresp = TRep.new(req.chat_id) eresp.txt(e.message) locale = @locale_provider.get_locale(req.chat_id) eresp.set_test_mode(@@is_test_mode) eresp.call(locale) return rescue => e p "Exc #{e} " return end end