Class: Jabber::Framework::Bot
- Defined in:
- lib/vendor/xmpp4r/lib/xmpp4r/framework/bot.rb
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/vendor/xmpp4r/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/vendor/xmpp4r/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/vendor/xmpp4r/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/vendor/xmpp4r/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/vendor/xmpp4r/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/vendor/xmpp4r/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/vendor/xmpp4r/lib/xmpp4r/framework/bot.rb', line 117 def set_presence(show=nil, status=nil) @presence_show = show @presence_status = status send_presence end |