lita-ai 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2931af0b523c0e3e4ffd89b5bc0aaaac5422ae40
4
- data.tar.gz: be07695ab49fee17646e53625280eccbb0de6dfa
3
+ metadata.gz: 962088ee29c13008e2aebcfff430e6afc206bcca
4
+ data.tar.gz: 361a60ed9bc1b7db0e4b5b69bc1afaf61a9ab66e
5
5
  SHA512:
6
- metadata.gz: 2b64d9274a6955b626b6b6cd6fbfcfdc3f178d0983965b3b70e29dc9467d1a741337ea9a1ef0e8ffb1692eae75ba5dd043bc77e73ba32ead49d751236167e677
7
- data.tar.gz: 09fc0d1d3d421e5a257d7077d4c42b59df17cecbc6c9a381d125ab98025662356e01d053070cbe8ab1673baaaba05ccace35cfc7aca6ec8e1c590cbc08ea1d1f
6
+ metadata.gz: 7e3901a4ff474c95006edd23f5267d517d43a8caeae001101f951ad917e9e7df1d826d8da92a58a95828233b4da949c9275578b0ff90abefef91052494624e2a
7
+ data.tar.gz: f8ecc9edeb4dd2965cab37bf2b8346b95ca0880ed6e68e0b6e7d4a2fe9abff92c4c0fa87a011eed9db228313e3713bbf3094e60c94950f89441ee29acf377900
@@ -8,18 +8,23 @@ module Lita
8
8
  end
9
9
 
10
10
  def chat(payload)
11
- return unless chatting?(payload[:message])
12
- message = extract_aliases(payload[:message])
13
- reply = self.class.cleverbot.think(message.body)
14
- robot.send_message(message.source, reply)
11
+ message = payload[:message]
12
+ return unless should_reply?(message)
13
+ robot.send_message(message.source, build_response(message))
15
14
  end
16
15
 
17
16
  private
18
17
 
19
- def chatting?(message)
18
+ def should_reply?(message)
20
19
  message.command? || message.body =~ /#{aliases.join('|')}/i
21
20
  end
22
21
 
22
+ def build_response(message)
23
+ message = extract_aliases(message)
24
+ reply = self.class.cleverbot.think(message.body)
25
+ reply.to_s.gsub(/\|([0-9A-F]{4})/) { ["#{$1}".hex].pack("U") } if reply
26
+ end
27
+
23
28
  def extract_aliases(message)
24
29
  body = message.body.sub(/#{aliases.join('|')}/i, '').strip
25
30
  Message.new(robot, body, message.source)
data/lita-ai.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "lita-ai"
3
- spec.version = "0.1.0"
3
+ spec.version = "0.1.1"
4
4
  spec.authors = ["Tom Beynon"]
5
5
  spec.email = ["tom@tombeynon.co.uk"]
6
6
  spec.description = "Makes lita respond to unhandled messages using Cleverbot"
@@ -1,7 +1,7 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Lita::Handlers::Ai, lita_handler: true do
4
- describe 'handling unhandled_message' do
4
+ describe 'handling unhandled_message' do
5
5
  context 'unhandled directed at lita' do
6
6
  it 'uses cleverbot to reply' do
7
7
  allow(subject.class.cleverbot).to receive(:think){ 'Hello' }
@@ -21,7 +21,7 @@ describe Lita::Handlers::Ai, lita_handler: true do
21
21
  let(:cleverbot){ double(:cleverbot) }
22
22
  let(:source){ double(:source) }
23
23
  context 'commanding lita' do
24
- let(:message){ double(:message, body: 'Hello', command?: true, source: source) }
24
+ let(:message){ double(:message, body: 'Hello', command?: true, source: source) }
25
25
 
26
26
  it 'strips out the robot name' do
27
27
  expect(subject.class.cleverbot).to receive(:think).with('Hello')
@@ -36,15 +36,22 @@ describe Lita::Handlers::Ai, lita_handler: true do
36
36
  end
37
37
 
38
38
  it 'sends a message with cleverbot\'s response' do
39
- reply = double(:reply)
40
- expect(subject.class.cleverbot).to receive(:think).with('Hello'){ reply }
41
- expect(subject.robot).to receive(:send_message).with(source, reply)
39
+ expect(subject.class.cleverbot).to receive(:think).with('Hello'){ 'Hi' }
40
+ expect(subject.robot).to receive(:send_message).with(source, 'Hi')
42
41
  subject.chat(message: message)
43
42
  end
43
+
44
+ end
45
+
46
+ context 'unicode format reply' do
47
+ let(:message){ double(:message, body: '中文', command?: true, source: source) }
48
+ before { allow(described_class.cleverbot).to receive(:think).and_return("|56E0|4E3A|6211|4E0D|61C2...") }
49
+
50
+ it { expect(subject.chat(message: message)[0]).to eq "因为我不懂..." }
44
51
  end
45
52
 
46
53
  context 'mentioning lita' do
47
- let(:message){ double(:message, body: 'Hi lita', command?: false, source: source) }
54
+ let(:message){ double(:message, body: 'Hi lita', command?: false, source: source) }
48
55
 
49
56
  it 'strips out the robot name' do
50
57
  expect(subject.class.cleverbot).to receive(:think).with('Hi')
@@ -59,15 +66,14 @@ describe Lita::Handlers::Ai, lita_handler: true do
59
66
  end
60
67
 
61
68
  it 'sends a message with cleverbot\'s response' do
62
- reply = double(:reply)
63
- expect(subject.class.cleverbot).to receive(:think).with('Hi'){ reply }
64
- expect(subject.robot).to receive(:send_message).with(source, reply)
69
+ expect(subject.class.cleverbot).to receive(:think).with('Hi'){ 'Hello' }
70
+ expect(subject.robot).to receive(:send_message).with(source, 'Hello')
65
71
  subject.chat(message: message)
66
72
  end
67
73
  end
68
74
 
69
75
  context 'is not chatting' do
70
- let(:message){ double(:message, body: 'Not talking to you', command?: false, source: source) }
76
+ let(:message){ double(:message, body: 'Not talking to you', command?: false, source: source) }
71
77
 
72
78
  it 'Doesn\'t call cleverbot' do
73
79
  expect(subject.class.cleverbot).to_not receive(:think)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-ai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Beynon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-20 00:00:00.000000000 Z
11
+ date: 2016-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lita