Class: Joggle::Engine
- Inherits:
-
Object
- Object
- Joggle::Engine
- Includes:
- Commands, Pablotron::Observable
- Defined in:
- lib/joggle/engine.rb
Overview
Joggle engine object. This is where the magic happens.
Constant Summary collapse
- DEFAULTS =
{ # output time format 'engine.time_format' => '%H:%M', # enable sanity checks 'engine.message_sanity_checks' => true, # update every 60 minutes by default 'engine.update.default' => 60, # time ranges for updates 'engine.update.range' => { # from 8am until 3pm, update every 10 minutes '8-15' => 10, # from 3pm until 10pm, update every 5 minutes '15-22' => 5, # from 10pm until midnight, update every 10 minutes '22-24' => 10, # from midnight until 2am, update every 20 minutes '0-2' => 20, }, }
- COMMAND_REGEX =
client listeners #
/^\s*\.(\w+)\s*(\S.*|)\s*$/
Constants included from Commands
Commands::EGGS, Commands::HELP
Instance Method Summary collapse
-
#initialize(client, tweeter, opt = nil) ⇒ Engine
constructor
Create a new Joggle engine object.
-
#on_before_jabber_client_accept_subscription(client, who) ⇒ Object
Jabber subscription listener callback.
-
#on_jabber_client_message(client, msg) ⇒ Object
Jabber message listener callback.
-
#reply(who, msg) ⇒ Object
Reply to a user with the given message.
-
#run ⇒ Object
Run forever.
Methods included from Commands
#do_easteregg, #do_help, #do_list, #do_register, #do_unregister
Methods included from Pablotron::Observable
Constructor Details
#initialize(client, tweeter, opt = nil) ⇒ Engine
Create a new Joggle engine object.
41 42 43 44 45 46 47 48 |
# File 'lib/joggle/engine.rb', line 41 def initialize(client, tweeter, opt = nil) @opt = DEFAULTS.merge(opt || {}) @client = client @client.on(self) @tweeter = tweeter end |
Instance Method Details
#on_before_jabber_client_accept_subscription(client, who) ⇒ Object
Jabber subscription listener callback.
113 114 115 116 117 118 |
# File 'lib/joggle/engine.rb', line 113 def on_before_jabber_client_accept_subscription(client, who) unless allowed?(who) fire('engine_ignored_subscription', who) raise Joggle::Pablotron::Observable::StopEvent, "denied subscription: #{who}" end end |
#on_jabber_client_message(client, msg) ⇒ Object
Jabber message listener callback.
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/joggle/engine.rb', line 93 def (client, msg) # get the message source who = msg.from.to_s # only listen to allowed users if allowed?(who) if md = msg.body.match(COMMAND_REGEX) cmd = md[1].downcase handle_command(who, cmd, md[2]) else (who, msg.body) end else fire('engine_ignored_message', who, msg) end end |
#reply(who, msg) ⇒ Object
Reply to a user with the given message.
71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/joggle/engine.rb', line 71 def reply(who, msg) begin if fire('engine_before_reply', who, msg) @client.deliver(who, msg) fire('engine_reply', who, msg) else fire('engine_reply_stopped', who, msg, err) end rescue Exception => err fire('engine_reply_error', who, msg, err) end end |
#run ⇒ Object
Run forever.
53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/joggle/engine.rb', line 53 def run loop { # check for updates (if we need to) if need_update? update end # fire idle method fire('engine_idle') # sleep for thirty seconds sleep 30 } end |