chatroid 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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