Class: Jabber::Framework::Bot
Overview
Abstract handler methods that may be implemented by a deriving class:
- 
on_message(text) 
- 
on_message_xhtml(html_body, text) 
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
- 
  
    
      #accept_subscription_from?(jid)  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    Front-end for Roster::Helper#add_subscription_request_callback. 
- 
  
    
      #add_cap(capability)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Add feature namespace to Capabilities Discovery. 
- #add_pep_notification(node, &callback) ⇒ Object
- 
  
    
      #initialize(jid, password)  ⇒ Bot 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of Bot. 
- 
  
    
      #send_message(to, text)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Send a simple text chat message. 
- 
  
    
      #send_message_xhtml(to, xhtml_contents, text = nil)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    - Send an XHTML chat message text
- String
- 
alternate plain text body, generated from xhtml_contents if nil. 
 
 
- 
  
    
      #set_presence(show = nil, status = nil)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Set and send a Presence. 
Methods inherited from Base
Constructor Details
#initialize(jid, password) ⇒ Bot
Returns a new instance of Bot.
| 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | # File 'lib/xmpp4r/framework/bot.rb', line 30 def initialize(jid, password) cl = Jabber::Client.new(jid) cl.connect cl.auth(password) super(cl) roster.add_subscription_request_callback do |item,presence| if accept_subscription_from?(presence.from.strip) roster.accept_subscription(presence.from.strip) else roster.decline_subscription(presence.from.strip) end end @pep_notifications = [] cl. do |msg| if msg.type != :error and msg.body if (html = msg.first_element('html')) and respond_to? :on_message_xhtml (html.body, msg.body) elsif respond_to? :on_message (msg.body) end elsif msg.type != :error and (event = msg.first_element('event')) event.each_element('items') do |items| node = items.attributes['node'] items.each_element('item') do |item| @pep_notifications.each { |notification_node,callback| if node == notification_node callback.call(msg.from, item) end } end end else false end end add_cap('presence') add_cap(Caps::NS_CAPS) add_cap('message') if respond_to? :on_message add_cap(XHTML::NS_XHTML_IM) if respond_to? :on_message_xhtml @presence_show = nil @presence_status = nil end | 
Instance Method Details
#accept_subscription_from?(jid) ⇒ Boolean
Front-end for Roster::Helper#add_subscription_request_callback
Can be overwritten, must return true or false
| 89 90 91 | # File 'lib/xmpp4r/framework/bot.rb', line 89 def accept_subscription_from?(jid) true end | 
#add_cap(capability) ⇒ Object
Add feature namespace to Capabilities Discovery
| 80 81 82 83 | # File 'lib/xmpp4r/framework/bot.rb', line 80 def add_cap(capability) disco_default.add_feature(capability) disco_caps.add_feature(capability) end | 
#add_pep_notification(node, &callback) ⇒ Object
| 141 142 143 144 | # File 'lib/xmpp4r/framework/bot.rb', line 141 def add_pep_notification(node, &callback) add_cap("#{node}+notify") @pep_notifications << [node, callback] end | 
#send_message(to, text) ⇒ Object
Send a simple text chat message
| 95 96 97 98 99 100 101 | # File 'lib/xmpp4r/framework/bot.rb', line 95 def (to, text) msg = Message.new msg.type = :chat msg.to = to msg.body = text @stream.send(msg) end | 
#send_message_xhtml(to, xhtml_contents, text = nil) ⇒ Object
Send an XHTML chat message
- text
- String
- 
alternate plain text body, generated from xhtml_contents if nil 
 
| 106 107 108 109 110 111 112 113 | # File 'lib/xmpp4r/framework/bot.rb', line 106 def (to, xhtml_contents, text=nil) msg = Message.new msg.type = :chat msg.to = to html = msg.add(XHTML::HTML.new(xhtml_contents)) msg.body = text ? text : html.to_text @stream.send(msg) end | 
#set_presence(show = nil, status = nil) ⇒ Object
Set and send a Presence
| 117 118 119 120 121 | # File 'lib/xmpp4r/framework/bot.rb', line 117 def set_presence(show=nil, status=nil) @presence_show = show @presence_status = status send_presence end |