chatroid 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -8,9 +8,7 @@ $ gem "chatroid"
8
8
  ```
9
9
 
10
10
  ## Example
11
- You can create your own bot working in a chat service.
12
- The following example creates a bot,
13
- which responds to tweets including the word "yunotti" or any replies to it.
11
+ Let's create your own bot working in a chat service, and let bot do it!
14
12
 
15
13
  ```ruby
16
14
  require "chatroid"
@@ -35,12 +33,45 @@ Chatroid.new do
35
33
  end.run!
36
34
  ```
37
35
 
38
- ## Adapters
39
- Currently following services are supported:
36
+ ```ruby
37
+ require "chatroid"
40
38
 
41
- * Twitter
39
+ Chatroid.new do
40
+ set :service, "HipChat"
41
+ set :room, "12345_example@conf.hipchat.com"
42
+ set :jid, "12345_67890@chat.hipchat.com"
43
+ set :nick, "example"
44
+ set :password, "..."
45
+
46
+ on_message do |time, nick, text|
47
+ if text =~ /([\w-.]+@[\w-.]+)/
48
+ invite $1
49
+ end
50
+ end
42
51
 
43
- I plan to support following services:
52
+ on_private_message do |time, nick, text|
53
+ say "Hi, #{nick}"
54
+ end
55
+ end.run!
56
+ ```
44
57
 
45
- * IRC
58
+ ```ruby
59
+ require "chatroid"
60
+
61
+ Chatroid.new do
62
+ set :service, "Irc"
63
+ set :server, "example.com"
64
+ set :port, "6667"
65
+ set :channel, "#chatroid"
66
+ set :username, "chatroid"
67
+
68
+ on_privmsg do |message|
69
+ privmsg "#chatroid", ":" + "hi, i am a chatroid"
70
+ end
71
+ end.run!
72
+ ```
73
+
74
+ ## Adapters
75
+ * Twitter
46
76
  * HipChat
77
+ * IRC
data/chatroid.gemspec CHANGED
@@ -18,5 +18,6 @@ Gem::Specification.new do |gem|
18
18
  gem.add_dependency "twitter-stream"
19
19
  gem.add_dependency "twitter_oauth"
20
20
  gem.add_dependency "avalon"
21
+ gem.add_dependency "zircon"
21
22
  gem.add_development_dependency "rspec"
22
23
  end
@@ -1,3 +1,4 @@
1
+ require "chatroid/adapter/irc"
1
2
  require "chatroid/adapter/twitter"
2
3
  require "chatroid/adapter/hip_chat"
3
4
 
@@ -23,6 +23,8 @@ class Chatroid
23
23
  :subject,
24
24
  ].freeze
25
25
 
26
+ SLEEP_INTERVAL_SEC = 1
27
+
26
28
  def self.extended(chatroid)
27
29
  REQUIRED_CONFIG_KEYS.each do |key|
28
30
  Avalon.validate(chatroid.config[key], String)
@@ -88,7 +90,7 @@ class Chatroid
88
90
 
89
91
  def persist
90
92
  trap(:INT) { Kernel.exit }
91
- loop { sleep 1 }
93
+ loop { sleep SLEEP_INTERVAL_SEC }
92
94
  end
93
95
 
94
96
  def client
@@ -0,0 +1,38 @@
1
+ require "zircon"
2
+
3
+ class Chatroid
4
+ module Adapter
5
+ module Irc
6
+ private
7
+
8
+ def connect
9
+ observe
10
+ client.run!
11
+ end
12
+
13
+ def client
14
+ @client ||= Zircon.new(
15
+ :server => config[:server],
16
+ :port => config[:port],
17
+ :channel => config[:channel],
18
+ :password => config[:password],
19
+ :username => config[:username],
20
+ :nickname => config[:nickname],
21
+ :realname => config[:realname]
22
+ )
23
+ end
24
+
25
+ def observe
26
+ client.on_message do |message|
27
+ send("trigger_#{message.type}", message)
28
+ end
29
+ end
30
+
31
+ Zircon::COMMAND_NAMES.each do |name|
32
+ define_method(name.downcase) do |*args|
33
+ client.send(name.downcase, *args)
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -5,7 +5,7 @@ class Chatroid
5
5
  # * on_message : store a given block as callback for "message"
6
6
  # * trigger_message : trigger callbacks for "message" with given args
7
7
  def method_missing(method_name, *args, &block)
8
- if method_name =~ /(list|on|trigger)_([a-z]+)/
8
+ if method_name =~ /(list|on|trigger)_([a-z0-9]+)/
9
9
  send($1, $2, *args, &block)
10
10
  else
11
11
  super
@@ -14,12 +14,6 @@ class Chatroid
14
14
 
15
15
  private
16
16
 
17
- def callbacks
18
- @callbacks ||= Hash.new do |hash, key|
19
- hash[key] = []
20
- end
21
- end
22
-
23
17
  def list(type)
24
18
  callbacks[type]
25
19
  end
@@ -33,5 +27,11 @@ class Chatroid
33
27
  callback.call(*args)
34
28
  end
35
29
  end
30
+
31
+ def callbacks
32
+ @callbacks ||= Hash.new do |hash, key|
33
+ hash[key] = []
34
+ end
35
+ end
36
36
  end
37
37
  end
@@ -1,3 +1,3 @@
1
1
  class Chatroid
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -0,0 +1,9 @@
1
+ require "spec_helper"
2
+
3
+ describe Chatroid::Adapter::Irc do
4
+ let(:chatroid) do
5
+ Chatroid.new do
6
+ extend Chatroid::Adapter::Irc
7
+ end
8
+ end
9
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chatroid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-20 00:00:00.000000000 Z
12
+ date: 2012-09-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: twitter-stream
16
- requirement: &70201732417940 !ruby/object:Gem::Requirement
16
+ requirement: &70345551088060 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70201732417940
24
+ version_requirements: *70345551088060
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: twitter_oauth
27
- requirement: &70201732417360 !ruby/object:Gem::Requirement
27
+ requirement: &70345551087540 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70201732417360
35
+ version_requirements: *70345551087540
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: avalon
38
- requirement: &70201732416700 !ruby/object:Gem::Requirement
38
+ requirement: &70345551086840 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,21 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70201732416700
46
+ version_requirements: *70345551086840
47
+ - !ruby/object:Gem::Dependency
48
+ name: zircon
49
+ requirement: &70345551086180 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70345551086180
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: rspec
49
- requirement: &70201732416060 !ruby/object:Gem::Requirement
60
+ requirement: &70345551085540 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ! '>='
@@ -54,7 +65,7 @@ dependencies:
54
65
  version: '0'
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *70201732416060
68
+ version_requirements: *70345551085540
58
69
  description: Chatroid is a gem for quickly creating chatterbot in Ruby
59
70
  email:
60
71
  - r7kamura@gmail.com
@@ -71,11 +82,13 @@ files:
71
82
  - lib/chatroid.rb
72
83
  - lib/chatroid/adapter.rb
73
84
  - lib/chatroid/adapter/hip_chat.rb
85
+ - lib/chatroid/adapter/irc.rb
74
86
  - lib/chatroid/adapter/twitter.rb
75
87
  - lib/chatroid/adapter/twitter/event.rb
76
88
  - lib/chatroid/callback.rb
77
89
  - lib/chatroid/version.rb
78
90
  - spec/chatroid/adapter/hip_chat_spec.rb
91
+ - spec/chatroid/adapter/irc_spec.rb
79
92
  - spec/chatroid/adapter/twitter/event_spec.rb
80
93
  - spec/chatroid/adapter/twitter_spec.rb
81
94
  - spec/chatroid/adapter_spec.rb
@@ -108,6 +121,7 @@ specification_version: 3
108
121
  summary: Chatterbot builder
109
122
  test_files:
110
123
  - spec/chatroid/adapter/hip_chat_spec.rb
124
+ - spec/chatroid/adapter/irc_spec.rb
111
125
  - spec/chatroid/adapter/twitter/event_spec.rb
112
126
  - spec/chatroid/adapter/twitter_spec.rb
113
127
  - spec/chatroid/adapter_spec.rb