jabber-bot 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/HISTORY +4 -0
  2. data/LICENSE +1 -1
  3. data/{README → README.rdoc} +20 -19
  4. data/lib/jabber/bot.rb +23 -24
  5. metadata +75 -48
data/HISTORY CHANGED
@@ -1,5 +1,9 @@
1
1
  Jabber::Bot Release History
2
2
 
3
+ Version 1.2.0 (23 April 2011)
4
+ * Optionally specify a startup message. (nstielau)
5
+ * Optionally disable the misunderstood command reply. (nstielau)
6
+
3
7
  Version 1.1.1 (26 May 2007)
4
8
  * Minor change to the listener thread that should improve CPU usage.
5
9
 
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2007 Brett Stimmerman <brettstimmerman@gmail.com>
1
+ Copyright (c) 2009 Brett Stimmerman <brettstimmerman@gmail.com>
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without
@@ -1,30 +1,31 @@
1
1
  = Jabber::Bot
2
2
 
3
- Easily create powerful Jabber bots to do your bidding.
3
+ Easily create simple regex powered Jabber bots.
4
4
 
5
- Jabber::Bot makes it simple to create and command your own Jabber bot with
6
- little fuss. By adding custom commands powered by regular expressions to your
7
- bot's repertoire, you and your new bot will be able to accomplish nearly
8
- anything.
5
+ Jabber::Bot makes it simple to create and command your own Jabber bot. Bots
6
+ are created by defining commands powered by regular expressions and Ruby.
9
7
 
10
- Author:: Brett Stimmerman (mailto:brettstimmerman@gmail.com)
11
- Version:: 1.1.1
12
- Copyright:: Copyright (c) 2007 Brett Stimmerman. All rights reserved.
13
- License:: New BSD License (http://opensource.org/licenses/bsd-license.php)
14
- Website:: http://socket7.net/software/jabber-bot
8
+ *Author*:: Brett Stimmerman (mailto:brettstimmerman@gmail.com)
9
+ *Version*:: 1.2.0 (2011-04-23)
10
+ *Copyright*:: Copyright (c) 2011 Brett Stimmerman. All rights reserved.
11
+ *License*:: New BSD License (http://opensource.org/licenses/bsd-license.php)
12
+ *Website*:: http://github.com/brettstimmerman/jabber-bot
15
13
 
16
- == Dependencies
14
+ == Requires
17
15
 
18
- - Ruby[http://www.ruby-lang.org] 1.8.4+
19
- - xmpp4r-simple[http://xmpp4r-simple.rubyforge.org/] 0.8.7+
16
+ * RubyGems
17
+ * Jabber::Simple 0.8.7+
20
18
 
21
- == Basic Usage
19
+ == Usage
22
20
 
23
- # Create a public Jabber::Bot to do your bidding
21
+ require 'rubygems'
22
+ require 'jabber/bot'
23
+
24
+ # Create a public Jabber::Bot
24
25
  config = {
25
- :name => 'SampleBot'
26
+ :name => 'SampleBot',
26
27
  :jabber_id => 'bot@example.com',
27
- :password => 'password',
28
+ :password => 'secret',
28
29
  :master => 'master@example.com',
29
30
  :is_public => true
30
31
  }
@@ -46,9 +47,9 @@ Website:: http://socket7.net/software/jabber-bot
46
47
  :alias => [ :alias => 'p <string>', :regex => /^p\s+.+$/ ],
47
48
  :is_public => true
48
49
  ) do |sender, message|
49
- puts "#{sender} says '#{message'"
50
+ puts "#{sender} says '#{message}'"
50
51
  "'#{message}' written to $stdout"
51
52
  end
52
53
 
53
54
  # Bring your new bot to life
54
- bot.connect
55
+ bot.connect
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2007 Brett Stimmerman <brettstimmerman@gmail.com>
2
+ # Copyright (c) 2009 Brett Stimmerman <brettstimmerman@gmail.com>
3
3
  # All rights reserved.
4
4
  #
5
5
  # Redistribution and use in source and binary forms, with or without
@@ -31,22 +31,9 @@ require 'xmpp4r-simple'
31
31
 
32
32
  module Jabber
33
33
 
34
- # = Jabber::Bot
35
- #
36
- # Jabber::Bot makes it simple to create and command a Jabber bot with little
37
- # fuss. By adding custom commands powered by regular expressions to your bot's
38
- # repertoire, you and your new bot will be able to accomplish nearly anything.
39
- #
40
- # Author:: Brett Stimmerman (mailto:brettstimmerman@gmail.com)
41
- # Version:: 1.1.1
42
- # Copyright:: Copyright (c) 2007 Brett Stimmerman. All rights reserved.
43
- # License:: New BSD License (http://opensource.org/licenses/bsd-license.php)
44
- # Website:: http://socket7.net/software/jabber-bot
45
- #
46
34
  class Bot
47
35
 
48
- # Direct access to the underlying
49
- # Jabber::Simple[http://xmpp4r-simple.rubyforge.org/] object.
36
+ # Direct access to the underlying Jabber::Simple object.
50
37
  attr_reader :jabber
51
38
 
52
39
  # Creates a new Jabber::Bot object with the specified +config+ Hash, which
@@ -71,7 +58,7 @@ module Jabber
71
58
  # # A minimally confiugured private bot with a single master.
72
59
  # bot = Jabber::Bot.new(
73
60
  # :jabber_id => 'bot@example.com',
74
- # :password => 'password',
61
+ # :password => 'secret',
75
62
  # :master => 'master@example.com'
76
63
  # )
77
64
  #
@@ -82,7 +69,7 @@ module Jabber
82
69
  # bot = Jabber::Bot.new(
83
70
  # :name => 'PublicBot',
84
71
  # :jabber_id => 'bot@example.com',
85
- # :password => 'password',
72
+ # :password => 'secret',
86
73
  # :master => masters,
87
74
  # :is_public => true,
88
75
  # :presence => :chat,
@@ -105,6 +92,10 @@ module Jabber
105
92
 
106
93
  @commands = { :spec => [], :meta => {} }
107
94
 
95
+ # Default to asking about unknown commands.
96
+ @config[:misunderstood_message] = @config[:misunderstood_message].nil? ? true : @config[:misunderstood_message]
97
+
98
+ # Add the help command
108
99
  add_command(
109
100
  :syntax => 'help [<command>]',
110
101
  :description => 'Display help for the given command, or all commands' +
@@ -136,7 +127,7 @@ module Jabber
136
127
  # The specified callback block will be triggered when the bot receives a
137
128
  # message that matches the given command regex (or an alias regex). The
138
129
  # callback block will have access to the sender and the message text (not
139
- # including the command itsef), and should either return a String response
130
+ # including the command itsef), and should either return a String response
140
131
  # or +nil+. If a callback block returns a String response, the response will
141
132
  # be delivered to the Jabber id that issued the command.
142
133
  #
@@ -160,7 +151,7 @@ module Jabber
160
151
  # :syntax => 'puts! <string>',
161
152
  # :description => 'Write something to $stdout (without response)',
162
153
  # :regex => /^puts!\s+.+$/,
163
- # :alias => [
154
+ # :alias => [
164
155
  # { :syntax => 'p! <string>', :regex => /^p!\s+.+$/ },
165
156
  # { :syntax => '! <string>', :regex => /^!\s+/.+$/ }
166
157
  # ]
@@ -193,12 +184,14 @@ module Jabber
193
184
  end
194
185
 
195
186
  # Connect the bot, making it available to accept commands.
187
+ # You can specify a custom startup message with the ':startup_message'
188
+ # configuration setting.
196
189
  def connect
197
190
  @jabber = Jabber::Simple.new(@config[:jabber_id], @config[:password])
198
191
 
199
192
  presence(@config[:presence], @config[:status], @config[:priority])
200
193
 
201
- deliver(@config[:master], "#{@config[:name]} reporting for duty.")
194
+ deliver(@config[:master], (@config[:startup_message] || "NAME reporting for duty.").gsub("NAME", @config[:name]))
202
195
 
203
196
  start_listener_thread
204
197
  end
@@ -355,6 +348,10 @@ module Jabber
355
348
  # the command trigger. If a String result is present it is delivered to the
356
349
  # sender.
357
350
  #
351
+ # If an unkown command is found, the bot will default to displaying the
352
+ # help message. You can disable this by setting the configuration
353
+ # setting ':misunderstood_message' to false.
354
+ #
358
355
  # If the bot has not been made public, commands from anyone other than the
359
356
  # bot master(s) will be silently ignored.
360
357
  def parse_command(sender, message) #:nodoc:
@@ -372,15 +369,17 @@ module Jabber
372
369
 
373
370
  response = command[:callback].call(sender, params)
374
371
  deliver(sender, response) unless response.nil?
375
-
372
+
376
373
  return
377
374
  end
378
375
  end
379
376
  end
380
377
 
381
- response = "I don't understand '#{message.strip}' Try saying 'help' " +
382
- "to see what commands I understand."
383
- deliver(sender, response)
378
+ if @config[:misunderstood_message]
379
+ response = "I don't understand '#{message.strip}' Try saying 'help' " +
380
+ "to see what commands I understand."
381
+ deliver(sender, response)
382
+ end
384
383
  end
385
384
  end
386
385
 
metadata CHANGED
@@ -1,64 +1,91 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.2
3
- specification_version: 1
4
2
  name: jabber-bot
5
3
  version: !ruby/object:Gem::Version
6
- version: 1.1.1
7
- date: 2007-05-26 00:00:00 -07:00
8
- summary: Jabber::Bot makes it simple to create and command your own Jabber bot with little fuss. By adding custom commands powered by regular expressions to your bot's repertoire, you and your new bot will be able to accomplish nearly anything.
9
- require_paths:
10
- - lib
11
- email: brettstimmerman@gmail.com
12
- homepage: http://socket7.net/software/jabber-bot
13
- rubyforge_project: jabber-bot
14
- description:
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 1.8.4
24
- version:
4
+ hash: 31
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 2
9
+ - 0
10
+ version: 1.2.0
25
11
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
12
  authors:
30
13
  - Brett Stimmerman
31
- files:
32
- - lib/jabber
33
- - lib/jabber/bot.rb
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-04-23 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: xmpp4r-simple
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 49
29
+ segments:
30
+ - 0
31
+ - 8
32
+ - 7
33
+ version: 0.8.7
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ description:
37
+ email: brettstimmerman@gmail.com
38
+ executables: []
39
+
40
+ extensions: []
41
+
42
+ extra_rdoc_files:
43
+ - README.rdoc
34
44
  - LICENSE
35
- - README
36
45
  - HISTORY
37
- test_files: []
46
+ files:
47
+ - HISTORY
48
+ - LICENSE
49
+ - README.rdoc
50
+ - lib/jabber/bot.rb
51
+ homepage: http://github.com/brettstimmerman/jabber-bot
52
+ licenses: []
38
53
 
54
+ post_install_message:
39
55
  rdoc_options:
40
56
  - --title
41
57
  - Jabber::Bot Documentation
42
58
  - --main
43
- - README
59
+ - README.rdoc
44
60
  - --line-numbers
45
- extra_rdoc_files:
46
- - README
47
- - LICENSE
48
- - HISTORY
49
- executables: []
50
-
51
- extensions: []
52
-
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ hash: 63
69
+ segments:
70
+ - 1
71
+ - 8
72
+ - 4
73
+ version: 1.8.4
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ hash: 3
80
+ segments:
81
+ - 0
82
+ version: "0"
53
83
  requirements: []
54
84
 
55
- dependencies:
56
- - !ruby/object:Gem::Dependency
57
- name: xmpp4r-simple
58
- version_requirement:
59
- version_requirements: !ruby/object:Gem::Version::Requirement
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- version: 0.8.7
64
- version:
85
+ rubyforge_project: jabber-bot
86
+ rubygems_version: 1.7.2
87
+ signing_key:
88
+ specification_version: 3
89
+ summary: Easily create simple regex powered Jabber bots.
90
+ test_files: []
91
+