chatterbot 2.0.3 → 2.0.4
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 +4 -4
- data/.travis.yml +3 -5
- data/Gemfile +9 -17
- data/Rakefile +2 -18
- data/chatterbot.gemspec +10 -11
- data/docs/Gemfile +3 -0
- data/docs/README.md +3 -0
- data/docs/_config.yml +37 -0
- data/docs/_includes/footer.html +3 -0
- data/docs/_includes/header.html +4 -0
- data/docs/_includes/navigation.html +23 -0
- data/docs/_layouts/default.html +98 -0
- data/docs/_layouts/page.html +11 -0
- data/docs/_posts/.gitkeep +0 -0
- data/docs/_site/Gemfile +3 -0
- data/docs/_site/advanced.html +476 -0
- data/docs/_site/configuration.html +456 -0
- data/docs/_site/contributing.html +433 -0
- data/docs/_site/css/main.css +58 -0
- data/docs/_site/css/syntax.css +61 -0
- data/docs/_site/deploying.html +468 -0
- data/docs/_site/examples.html +574 -0
- data/docs/_site/features.html +497 -0
- data/docs/_site/images/01-create-application.png +0 -0
- data/docs/_site/images/02-application-permissions.png +0 -0
- data/docs/_site/images/03-mobile-number.png +0 -0
- data/docs/_site/images/04-access-token.png +0 -0
- data/docs/_site/index.html +482 -0
- data/docs/_site/javascripts/main.js +1 -0
- data/docs/_site/other-tools.html +438 -0
- data/docs/_site/params.json +1 -0
- data/docs/_site/rdoc.html +428 -0
- data/docs/_site/setup.html +500 -0
- data/docs/_site/streaming.html +506 -0
- data/docs/_site/stylesheets/pygment_trac.css +68 -0
- data/docs/_site/stylesheets/stylesheet.css +247 -0
- data/docs/_site/tut.html +422 -0
- data/docs/_site/twitter-docs.html +428 -0
- data/docs/_site/walkthrough.html +463 -0
- data/docs/advanced.md +67 -0
- data/docs/basics.md +12 -0
- data/docs/bin/jekyll-page +109 -0
- data/docs/configuration.md +32 -0
- data/docs/contributing.md +14 -0
- data/docs/css/main.css +58 -0
- data/docs/css/syntax.css +61 -0
- data/docs/deploying.md +53 -0
- data/docs/examples.md +168 -0
- data/docs/features.md +88 -0
- data/docs/images/01-create-application.png +0 -0
- data/docs/images/02-application-permissions.png +0 -0
- data/docs/images/03-mobile-number.png +0 -0
- data/docs/images/04-access-token.png +0 -0
- data/docs/index.md +70 -0
- data/docs/javascripts/main.js +1 -0
- data/docs/other-tools.md +17 -0
- data/docs/params.json +1 -0
- data/docs/rdoc.md +6 -0
- data/docs/setup.md +84 -0
- data/docs/streaming.md +98 -0
- data/docs/stylesheets/pygment_trac.css +68 -0
- data/docs/stylesheets/stylesheet.css +247 -0
- data/docs/tips.md +22 -0
- data/docs/tut.md +6 -0
- data/docs/twitter-docs.md +6 -0
- data/docs/walkthrough.md +46 -0
- data/examples/streaming_bot.rb +11 -10
- data/ext/mkrf_conf.rb +28 -0
- data/lib/chatterbot/bot.rb +5 -1
- data/lib/chatterbot/config.rb +1 -1
- data/lib/chatterbot/home_timeline.rb +1 -1
- data/lib/chatterbot/streaming.rb +11 -1
- data/lib/chatterbot/version.rb +1 -1
- data/spec/spec_helper.rb +1 -4
- metadata +71 -122
- data/examples/tweet_logger.rb +0 -68
@@ -0,0 +1,574 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
6
|
+
<meta name="viewport" content="width=device-width">
|
7
|
+
|
8
|
+
<title>chatterbot : Examples</title>
|
9
|
+
<meta name="description" content="twitter bots in ruby">
|
10
|
+
|
11
|
+
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.no-icons.min.css" rel="stylesheet">
|
12
|
+
<link rel="stylesheet" href="/css/syntax.css">
|
13
|
+
<link rel="stylesheet" href="/css/main.css">
|
14
|
+
</head>
|
15
|
+
<body>
|
16
|
+
|
17
|
+
<div class="container">
|
18
|
+
<div class=row-fluid>
|
19
|
+
<div id=header class=span12>
|
20
|
+
<h4><a class=brand href="/">chatterbot</a>
|
21
|
+
<small>twitter bots in ruby</small>
|
22
|
+
</h4>
|
23
|
+
|
24
|
+
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<div class=row-fluid>
|
29
|
+
|
30
|
+
|
31
|
+
<div id=navigation class=span2>
|
32
|
+
<ul class="nav nav-list">
|
33
|
+
<li><a href="/">Home</a></li>
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
<li class=nav-header>Getting Started</li>
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
<li data-order="">
|
58
|
+
|
59
|
+
<a href="/examples.html">Examples</a>
|
60
|
+
|
61
|
+
</li>
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
<li data-order="">
|
84
|
+
|
85
|
+
<a href="/setup.html">Authorizing Your Bot</a>
|
86
|
+
|
87
|
+
</li>
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
<li data-order="">
|
106
|
+
|
107
|
+
<a href="/walkthrough.html">Walkthrough</a>
|
108
|
+
|
109
|
+
</li>
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
<li class=nav-header>Documentation</li>
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
<li data-order="">
|
121
|
+
|
122
|
+
<a href="/advanced.html">Advanced Features</a>
|
123
|
+
|
124
|
+
</li>
|
125
|
+
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
|
130
|
+
<li data-order="">
|
131
|
+
|
132
|
+
<a href="/configuration.html">Configuration</a>
|
133
|
+
|
134
|
+
</li>
|
135
|
+
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
|
144
|
+
<li data-order="">
|
145
|
+
|
146
|
+
<a href="/deploying.html">Running your Bot</a>
|
147
|
+
|
148
|
+
</li>
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
|
158
|
+
<li data-order="">
|
159
|
+
|
160
|
+
<a href="/features.html">Basic Features</a>
|
161
|
+
|
162
|
+
</li>
|
163
|
+
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
|
184
|
+
<li data-order="">
|
185
|
+
|
186
|
+
<a href="/streaming.html">Streaming API</a>
|
187
|
+
|
188
|
+
</li>
|
189
|
+
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
<li class=nav-header>Developers</li>
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
<li data-order="">
|
220
|
+
|
221
|
+
<a href="/contributing.html">Contributing</a>
|
222
|
+
|
223
|
+
</li>
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
|
230
|
+
|
231
|
+
|
232
|
+
|
233
|
+
|
234
|
+
|
235
|
+
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
|
256
|
+
|
257
|
+
|
258
|
+
|
259
|
+
|
260
|
+
|
261
|
+
|
262
|
+
|
263
|
+
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
|
272
|
+
|
273
|
+
|
274
|
+
<li class=nav-header>Resources</li>
|
275
|
+
|
276
|
+
|
277
|
+
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
|
283
|
+
|
284
|
+
|
285
|
+
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
|
290
|
+
|
291
|
+
|
292
|
+
|
293
|
+
|
294
|
+
|
295
|
+
|
296
|
+
|
297
|
+
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
|
302
|
+
|
303
|
+
|
304
|
+
|
305
|
+
|
306
|
+
<li data-order="">
|
307
|
+
|
308
|
+
<a href="/other-tools.html">Other Tools</a>
|
309
|
+
|
310
|
+
</li>
|
311
|
+
|
312
|
+
|
313
|
+
|
314
|
+
|
315
|
+
|
316
|
+
<li data-order="">
|
317
|
+
|
318
|
+
<a href="http://rubydoc.info/gems/chatterbot">rdoc</a>
|
319
|
+
|
320
|
+
</li>
|
321
|
+
|
322
|
+
|
323
|
+
|
324
|
+
|
325
|
+
|
326
|
+
|
327
|
+
|
328
|
+
|
329
|
+
|
330
|
+
|
331
|
+
|
332
|
+
|
333
|
+
|
334
|
+
|
335
|
+
|
336
|
+
|
337
|
+
|
338
|
+
<li data-order="">
|
339
|
+
|
340
|
+
<a href="https://dev.twitter.com/rest/public">Twitter API docs</a>
|
341
|
+
|
342
|
+
</li>
|
343
|
+
|
344
|
+
|
345
|
+
|
346
|
+
|
347
|
+
|
348
|
+
|
349
|
+
|
350
|
+
|
351
|
+
<!-- List additional links. It is recommended to add a divider
|
352
|
+
e.g. <li class=divider></li> first to break up the content. -->
|
353
|
+
</ul>
|
354
|
+
|
355
|
+
</div>
|
356
|
+
|
357
|
+
<div id=content class=span10>
|
358
|
+
<div class=page-header>
|
359
|
+
<h2>Examples
|
360
|
+
|
361
|
+
</h2>
|
362
|
+
</div>
|
363
|
+
|
364
|
+
<p>Here's a couple examples of working bots.</p>
|
365
|
+
|
366
|
+
<h2 id="@echoes_bot">@echoes_bot</h2>
|
367
|
+
|
368
|
+
<p>This is a working bot. It responds to any mentions with the incoming
|
369
|
+
text:</p>
|
370
|
+
|
371
|
+
<blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/muffinista">@muffinista</a> hello there!</p>— Echo Echo (@echoes_bot) <a href="https://twitter.com/echoes_bot/status/515166110950256640">September 25, 2014</a></blockquote>
|
372
|
+
|
373
|
+
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
|
374
|
+
|
375
|
+
<p>Here's the code. This is right out of the git repo for chatterbot:</p>
|
376
|
+
<div class="highlight"><pre><code class="language-text" data-lang="text">## This is a very simple working example of a bot you can build with
|
377
|
+
## chatterbot. It looks for mentions of '@echoes_bot' (the twitter
|
378
|
+
## handle the bot uses), and sends replies with the name switched to
|
379
|
+
## the handle of the sending user
|
380
|
+
|
381
|
+
#
|
382
|
+
# require the dsl lib to include all the methods you see below.
|
383
|
+
#
|
384
|
+
require 'rubygems'
|
385
|
+
require 'chatterbot/dsl'
|
386
|
+
|
387
|
+
puts "Loading echoes_bot.rb"
|
388
|
+
|
389
|
+
##
|
390
|
+
## If I wanted to exclude some terms from triggering this bot, I would list them here.
|
391
|
+
## For now, we'll block URLs to keep this from being a source of spam
|
392
|
+
##
|
393
|
+
exclude "http://"
|
394
|
+
|
395
|
+
blacklist "mean_user, private_user"
|
396
|
+
|
397
|
+
puts "checking for replies to me"
|
398
|
+
replies do |tweet|
|
399
|
+
# replace the incoming username with #USER#, which will be replaced
|
400
|
+
# with the handle of the user who tweeted us by the
|
401
|
+
# replace_variables helper
|
402
|
+
src = tweet.text.gsub(/@echoes_bot/, "#USER#")
|
403
|
+
|
404
|
+
# send it back!
|
405
|
+
reply src, tweet
|
406
|
+
end
|
407
|
+
</code></pre></div>
|
408
|
+
<h2 id="@spacejamcheck">@SpaceJamCheck</h2>
|
409
|
+
|
410
|
+
<p>This is another working bot. It checks the website for the movie Space
|
411
|
+
Jam to see if it is still online (it does this by using the spacejam
|
412
|
+
gem), and tweets the results of that check.</p>
|
413
|
+
<div class="highlight"><pre><code class="language-text" data-lang="text">#!/usr/bin/env ruby
|
414
|
+
|
415
|
+
require 'rubygems'
|
416
|
+
require 'bundler/setup'
|
417
|
+
|
418
|
+
require 'chatterbot/dsl'
|
419
|
+
require 'spacejam'
|
420
|
+
|
421
|
+
#
|
422
|
+
# this is the script for the twitter bot SpaceJamCheck
|
423
|
+
# generated on 2013-11-04 16:24:46 -0500
|
424
|
+
#
|
425
|
+
|
426
|
+
consumer_key 'key'
|
427
|
+
consumer_secret 'secret'
|
428
|
+
|
429
|
+
secret 'secret'
|
430
|
+
token 'token'
|
431
|
+
|
432
|
+
|
433
|
+
check_url = "http://www2.warnerbros.com/spacejam/movie/jam.htm"
|
434
|
+
check_string = "<title>Space Jam</title>"
|
435
|
+
|
436
|
+
uptime_messages = [
|
437
|
+
"Hooray! Space Jam is still online!",
|
438
|
+
"It's #{Time.now.year} and the Space Jam website is still online",
|
439
|
+
"In case you were worried, Space Jam is still online",
|
440
|
+
"Looks like the Space Jam website is still there",
|
441
|
+
"Yes",
|
442
|
+
"Yep",
|
443
|
+
"Still Kickin",
|
444
|
+
"The Space Jam website is still online",
|
445
|
+
"Still Online"
|
446
|
+
]
|
447
|
+
|
448
|
+
downtime_messages = [
|
449
|
+
"Hmm, looks like Space Jam isn't online. Hopefully it's a fluke ;("
|
450
|
+
]
|
451
|
+
|
452
|
+
|
453
|
+
x = Spacejam::HTTPCheck.new(url:check_url, body:check_string)
|
454
|
+
|
455
|
+
# pick a random tweet according to the website status
|
456
|
+
result = if x.online?
|
457
|
+
uptime_messages
|
458
|
+
else
|
459
|
+
downtime_messages
|
460
|
+
end.sample
|
461
|
+
|
462
|
+
# add a timestamp. this helps to prevent duplicate tweet issues
|
463
|
+
result << " (#{Time.now.utc})"
|
464
|
+
|
465
|
+
# tweet it out!
|
466
|
+
tweet result
|
467
|
+
</code></pre></div>
|
468
|
+
<h2 id="streaming-bot">Streaming Bot</h2>
|
469
|
+
<div class="highlight"><pre><code class="language-text" data-lang="text">#!/usr/bin/env ruby
|
470
|
+
|
471
|
+
## This is a very simple working example of a bot using the streaming
|
472
|
+
## API. It's basically a copy of echoes_bot.rb, just using streaming.
|
473
|
+
|
474
|
+
#
|
475
|
+
# require the dsl lib to include all the methods you see below.
|
476
|
+
#
|
477
|
+
require 'rubygems'
|
478
|
+
require 'chatterbot/dsl'
|
479
|
+
|
480
|
+
consumer_secret 'foo'
|
481
|
+
secret 'bar'
|
482
|
+
token 'biz'
|
483
|
+
consumer_key 'bam'
|
484
|
+
|
485
|
+
|
486
|
+
puts "Loading echoes_bot.rb using the streaming API"
|
487
|
+
|
488
|
+
exclude "http://", "https://"
|
489
|
+
|
490
|
+
blacklist "mean_user, private_user"
|
491
|
+
|
492
|
+
streaming do
|
493
|
+
favorited do |user, tweet|
|
494
|
+
reply "@#{user.screen_name} thanks for the fave!", tweet
|
495
|
+
end
|
496
|
+
|
497
|
+
followed do |user|
|
498
|
+
tweet "@#{user.screen_name} just followed me!"
|
499
|
+
follow user
|
500
|
+
end
|
501
|
+
|
502
|
+
replies do |tweet|
|
503
|
+
favorite tweet
|
504
|
+
|
505
|
+
puts "It's a tweet!"
|
506
|
+
src = tweet.text.gsub(/@echoes_bot/, "#USER#")
|
507
|
+
reply src, tweet
|
508
|
+
end
|
509
|
+
end
|
510
|
+
</code></pre></div>
|
511
|
+
|
512
|
+
</div>
|
513
|
+
|
514
|
+
</div>
|
515
|
+
|
516
|
+
<div class=row-fluid>
|
517
|
+
<div id=footer class=span12>
|
518
|
+
Documentation for <a href="https://github.com/muffinista/chatterbot">chatterbot</a>
|
519
|
+
|
520
|
+
</div>
|
521
|
+
</div>
|
522
|
+
</div>
|
523
|
+
|
524
|
+
<script>
|
525
|
+
function orderNav() {
|
526
|
+
var list,
|
527
|
+
section,
|
528
|
+
header,
|
529
|
+
sections = [],
|
530
|
+
lists = {},
|
531
|
+
headers = {};
|
532
|
+
|
533
|
+
var navUl = document.querySelectorAll('#navigation ul')[0],
|
534
|
+
navLis = document.querySelectorAll('#navigation ul li');
|
535
|
+
|
536
|
+
if (!navUl) return;
|
537
|
+
|
538
|
+
for (var i = 0; i < navLis.length; i++) {
|
539
|
+
var order, li = navLis[i];
|
540
|
+
|
541
|
+
if (li.classList.contains('nav-header')) {
|
542
|
+
section = li.textContent || li.innerText;
|
543
|
+
sections.push(section);
|
544
|
+
headers[section] = li;
|
545
|
+
continue;
|
546
|
+
}
|
547
|
+
|
548
|
+
if (!lists[section]) {
|
549
|
+
lists[section] = [];
|
550
|
+
}
|
551
|
+
|
552
|
+
order = parseFloat(li.getAttribute('data-order'))
|
553
|
+
lists[section].push([order, li]);
|
554
|
+
}
|
555
|
+
|
556
|
+
for (var i = 0; i < sections.length; i++) {
|
557
|
+
section = sections[i];
|
558
|
+
list = lists[section].sort(function(a, b) {
|
559
|
+
return a[0] - b[0];
|
560
|
+
});
|
561
|
+
|
562
|
+
if (header = headers[section]) {
|
563
|
+
navUl.appendChild(header);
|
564
|
+
}
|
565
|
+
for (var j = 0; j < list.length; j++) {
|
566
|
+
navUl.appendChild(list[j][1]);
|
567
|
+
}
|
568
|
+
}
|
569
|
+
}
|
570
|
+
|
571
|
+
if (document.querySelectorAll) orderNav();
|
572
|
+
</script>
|
573
|
+
</body>
|
574
|
+
</html>
|