chatroid 0.1.2 → 0.1.3
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.
- checksums.yaml +6 -6
- data/README.md +15 -27
- data/chatroid.gemspec +3 -2
- data/lib/chatroid/adapter/twitter/event.rb +6 -0
- data/lib/chatroid/adapter/xmpp.rb +10 -0
- data/lib/chatroid/callback.rb +1 -1
- data/lib/chatroid/version.rb +1 -1
- data/spec/chatroid/adapter/twitter/event_spec.rb +14 -0
- data/spec/chatroid/callback_spec.rb +10 -0
- metadata +23 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
5
|
-
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ed33cf56b42c7384dc3d1480c838016f87f7c3a7
|
4
|
+
data.tar.gz: 7d3cf465882d9f195f4045a8c57246dfad5c77a3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 19e8cb14ebbd811986bf49af560b5c1a8f8bebd0a748d2da212f32aebfe02d5f0a8dedda3d46c55ad6928a7fd72b86411266f9015e065c1c8b64504cc3fe98a5
|
7
|
+
data.tar.gz: 3b3325761dda3369916dddebf43d81cf39b4f647f843d709775e3b49c642b4518732064a55a13554538f57344abc09eb36335425145b61979d9a59bfc33bdaf5
|
data/README.md
CHANGED
@@ -4,13 +4,16 @@ Chatroid is a gem for quickly creating chatterbot in Ruby.
|
|
4
4
|
## Installation
|
5
5
|
|
6
6
|
```
|
7
|
-
$ gem
|
7
|
+
$ gem install chatroid
|
8
8
|
```
|
9
9
|
|
10
|
+
## Requirements
|
11
|
+
* Ruby >= 1.9
|
12
|
+
|
10
13
|
## Supported
|
11
14
|
* IRC
|
12
15
|
* Twitter
|
13
|
-
*
|
16
|
+
* Campfire
|
14
17
|
* xmpp (Google Talk, HipChat, ...)
|
15
18
|
|
16
19
|
## Example
|
@@ -21,10 +24,10 @@ require "chatroid"
|
|
21
24
|
|
22
25
|
Chatroid.new do
|
23
26
|
set :service, "Twitter"
|
24
|
-
set :consumer_key, "
|
25
|
-
set :consumer_secret, "
|
26
|
-
set :access_key, "
|
27
|
-
set :access_secret, "
|
27
|
+
set :consumer_key, ENV["CONSUMER_KEY"]
|
28
|
+
set :consumer_secret, ENV["CONSUMER_SECRET"]
|
29
|
+
set :access_key, ENV["ACCESS_KEY"]
|
30
|
+
set :access_secret, ENV["ACCESS_SECRET"]
|
28
31
|
|
29
32
|
on_tweet do |event|
|
30
33
|
if event["text"] =~ /chatroid/
|
@@ -43,6 +46,11 @@ end.run!
|
|
43
46
|
```
|
44
47
|
|
45
48
|
## Deploy to Heroku
|
49
|
+
1. Create Procfile, Gemfile, and bot.rb
|
50
|
+
2. Execute `bundle install`
|
51
|
+
3. Create app on Heroku
|
52
|
+
4. Configure environment variables
|
53
|
+
5. Deploy app
|
46
54
|
|
47
55
|
```
|
48
56
|
$ gem install heroku
|
@@ -53,28 +61,8 @@ $ cd !$
|
|
53
61
|
$ echo "bot: bundle exec ruby bot.rb" >> Procfile
|
54
62
|
$ echo "source :rubygems" >> Gemfile
|
55
63
|
$ echo "gem 'chatroid'" >> Gemfile
|
56
|
-
$ bundle install
|
57
64
|
$ vim bot.rb
|
58
|
-
|
59
|
-
require "chatroid"
|
60
|
-
|
61
|
-
Chatroid.new do
|
62
|
-
set :service, "Twitter"
|
63
|
-
set :filter, "chatroid,Chatroid"
|
64
|
-
set :consumer_key, ENV["CONSUMER_KEY"]
|
65
|
-
set :consumer_secret, ENV["CONSUMER_SECRET"]
|
66
|
-
set :access_key, ENV["ACCESS_KEY"]
|
67
|
-
set :access_secret, ENV["ACCESS_SECRET"]
|
68
|
-
|
69
|
-
on_tweet do |event|
|
70
|
-
favorite event
|
71
|
-
end
|
72
|
-
|
73
|
-
on_reply do |event|
|
74
|
-
favorite event
|
75
|
-
end
|
76
|
-
end.run!
|
77
|
-
|
65
|
+
$ bundle install
|
78
66
|
$ heroku create your_favorite_bot_name --stack cedar
|
79
67
|
$ heroku config:add CONSUMER_KEY=... CONSUMER_SECRET=... ACCESS_KEY=... ACCESS_SECRET=...
|
80
68
|
$ git push heroku master
|
data/chatroid.gemspec
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
require File.expand_path(
|
1
|
+
# coding: utf-8
|
2
|
+
require File.expand_path("../lib/chatroid/version", __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.authors = ["Ryo NAKAMURA"]
|
@@ -14,6 +14,7 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.name = "chatroid"
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
gem.version = Chatroid::VERSION
|
17
|
+
gem.license = "MIT"
|
17
18
|
|
18
19
|
gem.add_dependency "twitter-stream"
|
19
20
|
gem.add_dependency "twitter_oauth"
|
@@ -29,6 +29,8 @@ class Chatroid
|
|
29
29
|
"reply"
|
30
30
|
elsif tweet?
|
31
31
|
"tweet"
|
32
|
+
elsif favorite?
|
33
|
+
"favorite_other"
|
32
34
|
else
|
33
35
|
"unknown"
|
34
36
|
end
|
@@ -51,6 +53,10 @@ class Chatroid
|
|
51
53
|
def tweet?
|
52
54
|
@params["text"]
|
53
55
|
end
|
56
|
+
|
57
|
+
def favorite?
|
58
|
+
@params["event"] == "favorite"
|
59
|
+
end
|
54
60
|
end
|
55
61
|
end
|
56
62
|
end
|
@@ -2,6 +2,16 @@ require "avalon"
|
|
2
2
|
require "xmpp4r"
|
3
3
|
require "xmpp4r/muc/helper/simplemucclient"
|
4
4
|
require "logger"
|
5
|
+
require "rexml/source"
|
6
|
+
|
7
|
+
# Support multybyte characters.
|
8
|
+
class REXML::IOSource
|
9
|
+
def read
|
10
|
+
@buffer << readline.force_encoding("utf-8")
|
11
|
+
rescue Exception, NameError
|
12
|
+
@source = nil
|
13
|
+
end
|
14
|
+
end
|
5
15
|
|
6
16
|
class Chatroid
|
7
17
|
module Adapter
|
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-z0-
|
8
|
+
if method_name =~ /(list|on|trigger)_([a-z0-9_]+)/
|
9
9
|
send($1, $2, *args, &block)
|
10
10
|
else
|
11
11
|
super
|
data/lib/chatroid/version.rb
CHANGED
@@ -14,6 +14,10 @@ describe Chatroid::Adapter::Twitter::Event do
|
|
14
14
|
1
|
15
15
|
end
|
16
16
|
|
17
|
+
let (:other_id) do
|
18
|
+
2
|
19
|
+
end
|
20
|
+
|
17
21
|
context "when favorited" do
|
18
22
|
let(:args) do
|
19
23
|
{ "event" => "favorite", "target" => { "id" => user_id } }
|
@@ -24,6 +28,16 @@ describe Chatroid::Adapter::Twitter::Event do
|
|
24
28
|
end
|
25
29
|
end
|
26
30
|
|
31
|
+
context "when user favorited other's tweet" do
|
32
|
+
let(:args) do
|
33
|
+
{ "event" => "favorite", "target" => { "id" => other_id } }
|
34
|
+
end
|
35
|
+
|
36
|
+
it do
|
37
|
+
should == "favorite_other"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
27
41
|
context "when unfavorited" do
|
28
42
|
let(:args) do
|
29
43
|
{ "event" => "unfavorite", "target" => { "id" => user_id } }
|
@@ -56,4 +56,14 @@ describe Chatroid::Callback do
|
|
56
56
|
instance.trigger_xxx(args)
|
57
57
|
end
|
58
58
|
end
|
59
|
+
|
60
|
+
describe "#method_missing" do
|
61
|
+
it "should hundle under_score event like x_x" do
|
62
|
+
callback = proc {}
|
63
|
+
callback.should_receive(:call)
|
64
|
+
instance.on_x_x(&callback)
|
65
|
+
instance.send(:list, 'x_x').should_not be_empty
|
66
|
+
instance.trigger_x_x
|
67
|
+
end
|
68
|
+
end
|
59
69
|
end
|
metadata
CHANGED
@@ -1,111 +1,111 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chatroid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryo NAKAMURA
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: twitter-stream
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: twitter_oauth
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: xmpp4r
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: avalon
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: zircon
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - '>='
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: tinder
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - '>='
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - '>='
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rspec
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - '>='
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - '>='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
description: Chatroid is a gem for quickly creating chatterbot in Ruby
|
@@ -115,7 +115,7 @@ executables: []
|
|
115
115
|
extensions: []
|
116
116
|
extra_rdoc_files: []
|
117
117
|
files:
|
118
|
-
-
|
118
|
+
- .gitignore
|
119
119
|
- Gemfile
|
120
120
|
- LICENSE
|
121
121
|
- README.md
|
@@ -148,7 +148,8 @@ files:
|
|
148
148
|
- spec/chatroid_spec.rb
|
149
149
|
- spec/spec_helper.rb
|
150
150
|
homepage: https://github.com/r7kamura/chatroid
|
151
|
-
licenses:
|
151
|
+
licenses:
|
152
|
+
- MIT
|
152
153
|
metadata: {}
|
153
154
|
post_install_message:
|
154
155
|
rdoc_options: []
|
@@ -156,17 +157,17 @@ require_paths:
|
|
156
157
|
- lib
|
157
158
|
required_ruby_version: !ruby/object:Gem::Requirement
|
158
159
|
requirements:
|
159
|
-
- -
|
160
|
+
- - '>='
|
160
161
|
- !ruby/object:Gem::Version
|
161
162
|
version: '0'
|
162
163
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
164
|
requirements:
|
164
|
-
- -
|
165
|
+
- - '>='
|
165
166
|
- !ruby/object:Gem::Version
|
166
167
|
version: '0'
|
167
168
|
requirements: []
|
168
169
|
rubyforge_project:
|
169
|
-
rubygems_version: 2.0.0
|
170
|
+
rubygems_version: 2.0.0
|
170
171
|
signing_key:
|
171
172
|
specification_version: 4
|
172
173
|
summary: Chatterbot builder
|
@@ -180,3 +181,4 @@ test_files:
|
|
180
181
|
- spec/chatroid/callback_spec.rb
|
181
182
|
- spec/chatroid_spec.rb
|
182
183
|
- spec/spec_helper.rb
|
184
|
+
has_rdoc:
|