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 +39 -8
- data/chatroid.gemspec +1 -0
- data/lib/chatroid/adapter.rb +1 -0
- data/lib/chatroid/adapter/hip_chat.rb +3 -1
- data/lib/chatroid/adapter/irc.rb +38 -0
- data/lib/chatroid/callback.rb +7 -7
- data/lib/chatroid/version.rb +1 -1
- data/spec/chatroid/adapter/irc_spec.rb +9 -0
- metadata +24 -10
data/README.md
CHANGED
@@ -8,9 +8,7 @@ $ gem "chatroid"
|
|
8
8
|
```
|
9
9
|
|
10
10
|
## Example
|
11
|
-
|
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
|
-
|
39
|
-
|
36
|
+
```ruby
|
37
|
+
require "chatroid"
|
40
38
|
|
41
|
-
|
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
|
-
|
52
|
+
on_private_message do |time, nick, text|
|
53
|
+
say "Hi, #{nick}"
|
54
|
+
end
|
55
|
+
end.run!
|
56
|
+
```
|
44
57
|
|
45
|
-
|
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
data/lib/chatroid/adapter.rb
CHANGED
@@ -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
|
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
|
data/lib/chatroid/callback.rb
CHANGED
@@ -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-
|
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
|
data/lib/chatroid/version.rb
CHANGED
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
|
+
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-
|
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: &
|
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: *
|
24
|
+
version_requirements: *70345551088060
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: twitter_oauth
|
27
|
-
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: *
|
35
|
+
version_requirements: *70345551087540
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: avalon
|
38
|
-
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: *
|
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: &
|
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: *
|
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
|