rbot 0.9.9

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.
Files changed (76) hide show
  1. data/AUTHORS +16 -0
  2. data/COPYING +21 -0
  3. data/ChangeLog +418 -0
  4. data/INSTALL +8 -0
  5. data/README +44 -0
  6. data/REQUIREMENTS +34 -0
  7. data/TODO +5 -0
  8. data/Usage_en.txt +129 -0
  9. data/bin/rbot +81 -0
  10. data/data/rbot/contrib/plugins/figlet.rb +20 -0
  11. data/data/rbot/contrib/plugins/ri.rb +83 -0
  12. data/data/rbot/contrib/plugins/stats.rb +232 -0
  13. data/data/rbot/contrib/plugins/vandale.rb +49 -0
  14. data/data/rbot/languages/dutch.lang +73 -0
  15. data/data/rbot/languages/english.lang +75 -0
  16. data/data/rbot/languages/french.lang +39 -0
  17. data/data/rbot/languages/german.lang +67 -0
  18. data/data/rbot/plugins/autoop.rb +68 -0
  19. data/data/rbot/plugins/autorejoin.rb +16 -0
  20. data/data/rbot/plugins/cal.rb +15 -0
  21. data/data/rbot/plugins/dice.rb +81 -0
  22. data/data/rbot/plugins/eightball.rb +19 -0
  23. data/data/rbot/plugins/excuse.rb +470 -0
  24. data/data/rbot/plugins/fish.rb +61 -0
  25. data/data/rbot/plugins/fortune.rb +22 -0
  26. data/data/rbot/plugins/freshmeat.rb +98 -0
  27. data/data/rbot/plugins/google.rb +51 -0
  28. data/data/rbot/plugins/host.rb +14 -0
  29. data/data/rbot/plugins/httpd.rb.disabled +35 -0
  30. data/data/rbot/plugins/insult.rb +258 -0
  31. data/data/rbot/plugins/karma.rb +85 -0
  32. data/data/rbot/plugins/lart.rb +181 -0
  33. data/data/rbot/plugins/math.rb +122 -0
  34. data/data/rbot/plugins/nickserv.rb +89 -0
  35. data/data/rbot/plugins/nslookup.rb +43 -0
  36. data/data/rbot/plugins/opme.rb +19 -0
  37. data/data/rbot/plugins/quakeauth.rb +51 -0
  38. data/data/rbot/plugins/quotes.rb +321 -0
  39. data/data/rbot/plugins/remind.rb +228 -0
  40. data/data/rbot/plugins/roshambo.rb +54 -0
  41. data/data/rbot/plugins/rot13.rb +10 -0
  42. data/data/rbot/plugins/roulette.rb +147 -0
  43. data/data/rbot/plugins/rss.rb.disabled +414 -0
  44. data/data/rbot/plugins/seen.rb +89 -0
  45. data/data/rbot/plugins/slashdot.rb +94 -0
  46. data/data/rbot/plugins/spell.rb +36 -0
  47. data/data/rbot/plugins/tube.rb +71 -0
  48. data/data/rbot/plugins/url.rb +88 -0
  49. data/data/rbot/plugins/weather.rb +649 -0
  50. data/data/rbot/plugins/wserver.rb +71 -0
  51. data/data/rbot/plugins/xmlrpc.rb.disabled +52 -0
  52. data/data/rbot/templates/keywords.rbot +4 -0
  53. data/data/rbot/templates/lart/larts +98 -0
  54. data/data/rbot/templates/lart/praises +5 -0
  55. data/data/rbot/templates/levels.rbot +30 -0
  56. data/data/rbot/templates/users.rbot +1 -0
  57. data/lib/rbot/auth.rb +203 -0
  58. data/lib/rbot/channel.rb +54 -0
  59. data/lib/rbot/config.rb +363 -0
  60. data/lib/rbot/dbhash.rb +112 -0
  61. data/lib/rbot/httputil.rb +141 -0
  62. data/lib/rbot/ircbot.rb +808 -0
  63. data/lib/rbot/ircsocket.rb +185 -0
  64. data/lib/rbot/keywords.rb +433 -0
  65. data/lib/rbot/language.rb +69 -0
  66. data/lib/rbot/message.rb +256 -0
  67. data/lib/rbot/messagemapper.rb +262 -0
  68. data/lib/rbot/plugins.rb +291 -0
  69. data/lib/rbot/post-install.rb +8 -0
  70. data/lib/rbot/rbotconfig.rb +36 -0
  71. data/lib/rbot/registry.rb +271 -0
  72. data/lib/rbot/rfc2812.rb +1104 -0
  73. data/lib/rbot/timer.rb +201 -0
  74. data/lib/rbot/utils.rb +83 -0
  75. data/setup.rb +1360 -0
  76. metadata +129 -0
@@ -0,0 +1,49 @@
1
+ #----------------------------------------------------------------#
2
+ # Filename: vandale.rb
3
+ # Description: Rbot plugin. Looks up a word in the Dutch VanDale
4
+ # dictionary
5
+ # Author: eWoud - ewoud.nuyts<AT>student.kuleuven.ac.be
6
+ # requires GnuVD www.djcbsoftware.nl/projecten/gnuvd/
7
+ #----------------------------------------------------------------#
8
+
9
+ class VanDalePlugin < Plugin
10
+ def help(plugin, topic="")
11
+ "vandale [<word>] => Look up in the VanDale dictionary"
12
+ end
13
+ def privmsg(m)
14
+ case m.params
15
+ when (/^([\w-]+)$/)
16
+ ret = Array.new
17
+ Utils.safe_exec("/usr/local/bin/gnuvd", m.params).each{|line| if line.length > 5 then ret << line end}
18
+ m.reply ret.delete_at(0)
19
+ while ret[0] =~ /^[[:alpha:]_]*[0-9]/
20
+ m.reply ret.delete_at(0)
21
+ end
22
+ while ret[0] =~ /^[0-9]/
23
+ m.reply ret.delete_at(0)
24
+ end
25
+ i = 0
26
+ while i < ret.length
27
+ ret[i] = ret[i].slice(/^[[:graph:]_]*/)
28
+ if ret[i].length == 0 or ret[i] =~ /^[0-9]/
29
+ then
30
+ ret.delete_at(i)
31
+ else
32
+ i = i+1
33
+ end
34
+ end
35
+ if ret.length != 0 then
36
+ m.reply "zie ook " + ret.join(", ")
37
+ end
38
+ return
39
+ when nil
40
+ m.reply "incorrect usage: " + help(m.plugin)
41
+ return
42
+ else
43
+ m.reply "incorrect usage: " + help(m.plugin)
44
+ return
45
+ end
46
+ end
47
+ end
48
+ plugin = VanDalePlugin.new
49
+ plugin.register("vandale")
@@ -0,0 +1,73 @@
1
+ okay:
2
+ ok
3
+ ok dan :)
4
+ goed
5
+ mooi
6
+ voila
7
+ in orde
8
+ 't is gebeurd
9
+ zeker
10
+ dat kan ik!
11
+ komt in orde
12
+ k
13
+ ik zal het eens doen
14
+ dunno:
15
+ geen idee
16
+ dat weet ik niet
17
+ dat gaat m'n petje te boven
18
+ *haal schouder op*
19
+ vraag dat aan iemand anders
20
+ dat moet je niet aan mij vragen
21
+ wie weet dat?
22
+ dat kan ik niet
23
+ laat je eens nakijken...
24
+ wat vraag je nu?
25
+ dunno_about_X:
26
+ maar ik weet niks over %s
27
+ Ik heb nog nooit van %s gehoord :(
28
+ maar wat is %s?
29
+ insult:
30
+ %s: idioot!
31
+ %s: :(
32
+ %s: Ik haat je:(
33
+ %s: val dood!
34
+ %s: Ik ben beledigd!
35
+ hello:
36
+ hallo :)
37
+ hey!
38
+ hi
39
+ yo
40
+ yow
41
+ joe
42
+ jowjowjow
43
+ hello_X:
44
+ hallo %s :)
45
+ %s: hallo
46
+ hey %s :)
47
+ %s: hi!
48
+ yo %s!
49
+ joe %s!
50
+ alles ok %s?
51
+ %s: alles goed?
52
+ welcome:
53
+ geen probleem
54
+ 't is niks
55
+ altijd welkom
56
+ graag gedaan
57
+ np :)
58
+ thanks:
59
+ danku :)
60
+ bedankt!
61
+ thx :)
62
+ =D
63
+ je bent een schatje :)
64
+ thanks_X:
65
+ %s: danku :)
66
+ %s: bedankt!
67
+ %s: =D
68
+ %s: thx :)
69
+ %s: je bent een schatje :)
70
+ quit:
71
+ ok ik ben weg
72
+ yo
73
+ ciao
@@ -0,0 +1,75 @@
1
+ okay:
2
+ okay
3
+ okay then :)
4
+ okies!
5
+ fine
6
+ done
7
+ can do!
8
+ alright
9
+ sure
10
+ aight
11
+ lemme take care of that for you
12
+ dunno:
13
+ dunno
14
+ beats me
15
+ no idea
16
+ no clue
17
+ ...eh?
18
+ *shrug*
19
+ don't ask me
20
+ who knows?
21
+ I can't do that Dave.
22
+ you best check yo'self!
23
+ dunno_about_X:
24
+ but I dunno anything about %s
25
+ I never heard of %s :(
26
+ %s? what's that then?
27
+ but what's %s?
28
+ insult:
29
+ %s: wanker!
30
+ %s: :(
31
+ %s: I hate you :(
32
+ %s: die!
33
+ %s: I'm offended!
34
+ %s: you hurt my feelings
35
+ hello:
36
+ hello :)
37
+ hola :)
38
+ salut
39
+ hey!
40
+ word.
41
+ hi
42
+ yo
43
+ 'sup?
44
+ hello_X:
45
+ hello %s :)
46
+ %s: hey there
47
+ %s: hola :)
48
+ %s: salut
49
+ hey %s :)
50
+ %s: word
51
+ %s: hi!
52
+ yo %s!
53
+ %s: 'sup?
54
+ 'sup %s?
55
+ welcome:
56
+ no probbie
57
+ you're welcome
58
+ de nada
59
+ any time
60
+ np :)
61
+ thanks:
62
+ thanks :)
63
+ schweet!
64
+ ta :)
65
+ =D
66
+ cheers!
67
+ thanks_X:
68
+ %s: thanks :)
69
+ %s: schweet!
70
+ %s: =D
71
+ %s: ta :)
72
+ %s: cheers
73
+ quit:
74
+ okay bye
75
+ seeya
@@ -0,0 +1,39 @@
1
+ okay:
2
+ d'accord
3
+ dunno:
4
+ de quoi est mort votre dernier esclave?
5
+ je vous aurais bien aide, mais je ne vous aime pas
6
+ faites-le vous-m�me
7
+ parle � mon cul, ma t�te est malade
8
+ je ne sais pas
9
+ je ne peut pas faire ca Dave.
10
+ dunno_about_X:
11
+ qu'est-ce c'est %s?
12
+ insult:
13
+ %s: putin!
14
+ %s: :(
15
+ %s: je te d�teste :(
16
+ %s: tu es completement debile
17
+ %s: mais t'as une t�te a faire sauter les plaques d'egouts!
18
+ %s: est-ce que vous �tes ivre?
19
+ hello:
20
+ bonjour
21
+ salut
22
+ bonsoir
23
+ hello_X:
24
+ bonjour %s :)
25
+ %s: salut
26
+ welcome:
27
+ de rien
28
+ aucun probleme
29
+ thanks:
30
+ merci :)
31
+ tu es trop gentil!
32
+ je vous remerci bien
33
+ thanks_X:
34
+ %s: merci :)
35
+ %s: tu es trop gentil!
36
+ %s: je vous remerci bien
37
+ quit:
38
+ d'accord, au revoir
39
+ a demain
@@ -0,0 +1,67 @@
1
+ okay:
2
+ okay
3
+ okay na dann :)
4
+ gut
5
+ gemacht
6
+ wird gemacht!
7
+ also los
8
+ sicher
9
+ klar
10
+ lass mich sorge tragen :-)
11
+ dunno:
12
+ kann nicht
13
+ schlag mich
14
+ habe keine Idee
15
+ habe keine Ahnung
16
+ *achselzuck*
17
+ frag mich nicht
18
+ wer weiss?
19
+ ich kann es nicht tun
20
+ am besten du schaust selber nach
21
+ dunno_about_X:
22
+ ich weiss nichts uber %s
23
+ was zum Teufel ist %s?
24
+ insult:
25
+ %s: Arsch!
26
+ %s: :(
27
+ %s: Ich hasse dich :(
28
+ %s: Stirb!
29
+ %s: Ich bin beleidigt!
30
+ hello:
31
+ hallo :)
32
+ hola :)
33
+ salut
34
+ hey!
35
+ sag nichts.
36
+ hi
37
+ yo
38
+ Was geht?
39
+ hello_X:
40
+ hallo %s :)
41
+ %s: guggus
42
+ %s: hola :)
43
+ %s: salut
44
+ hey %s :)
45
+ %s: sag nichts
46
+ %s: hi!
47
+ yo %s!
48
+ %s: Was geht?
49
+ Was geht %s?
50
+ welcome:
51
+ no probbie
52
+ you're welcome
53
+ de nada
54
+ any time
55
+ np :)
56
+ thanks:
57
+ Danke :)
58
+ juhu :)
59
+ :-D
60
+ Prost!
61
+ thanks_X:
62
+ %s: danke :)
63
+ %s: :-D
64
+ %s: juhu :)
65
+ %s: Prost
66
+ quit:
67
+ forkbomb rockt
@@ -0,0 +1,68 @@
1
+ class AutoOP < Plugin
2
+ @@handlers = {
3
+ "addop" => "handle_addop",
4
+ "rmop" => "handle_rmop",
5
+ "listop" => "handle_listop"
6
+ }
7
+
8
+ def help(plugin, topic="")
9
+ "perform autoop based on hostmask - usage: addop <hostmask>, rmop <hostmask>, listop"
10
+ end
11
+
12
+ def join(m)
13
+ if(!m.address?)
14
+ @registry.each { |mask,channels|
15
+ if(Irc.netmaskmatch(mask, m.source) && channels.include?(m.channel))
16
+ @bot.mode(m.channel, "+o", m.sourcenick)
17
+ end
18
+ }
19
+ end
20
+ end
21
+
22
+ def privmsg(m)
23
+ if(m.private?)
24
+ if (!m.params || m.params == "list")
25
+ handle_listop(m)
26
+ elsif (m.params =~ /^add\s+(.+)$/)
27
+ handle_addop(m, $1)
28
+ elsif (m.params =~ /^rm\s+(.+)$/)
29
+ handle_rmop(m, $1)
30
+ end
31
+ end
32
+ end
33
+
34
+ def handle_addop(m, params)
35
+ ma = /^(.+?)(\s+(.+))?$/.match(params)
36
+ channels = ma[2] ? ma[2] : @bot.config['JOIN_CHANNELS']
37
+ if(ma[1] && channels)
38
+ @registry[ma[1]] = channels.split(/,\s*/).collect { |x|
39
+ x.strip
40
+ }
41
+ m.okay
42
+ else
43
+ m.reply @bot.lang.get('dunno')
44
+ end
45
+ end
46
+
47
+ def handle_rmop(m, params)
48
+ if(!@registry.delete(params))
49
+ m.reply @bot.lang.get('dunno')
50
+ else
51
+ m.okay
52
+ end
53
+ end
54
+
55
+ def handle_listop(m)
56
+ if(@registry.length)
57
+ @registry.each { |mask,channels|
58
+ m.reply "#{mask} in #{channels.join(', ')}"
59
+ }
60
+ else
61
+ m.reply "No entrys"
62
+ end
63
+ end
64
+ end
65
+
66
+ plugin = AutoOP.new
67
+ plugin.register("autoop")
68
+
@@ -0,0 +1,16 @@
1
+ class AutoRejoinPlugin < Plugin
2
+ def help(plugin, topic="")
3
+ "performs an automatic rejoin if the bot is kicked from a channel"
4
+ end
5
+ def kick(m)
6
+ if m.address?
7
+ @bot.timer.add_once(10, m) {|m|
8
+ @bot.join m.channel
9
+ @bot.say m.channel, @bot.lang.get("insult") % m.sourcenick
10
+ }
11
+ end
12
+ end
13
+ end
14
+
15
+ plugin = AutoRejoinPlugin.new
16
+ plugin.register("autorejoin")
@@ -0,0 +1,15 @@
1
+ class CalPlugin < Plugin
2
+ def help(plugin, topic="")
3
+ "cal [month year] => show current calendar [optionally specify month and year]"
4
+ end
5
+ def cal(m, params)
6
+ if params.has_key?(:month)
7
+ m.reply Utils.safe_exec("cal", params[:month], params[:year])
8
+ else
9
+ m.reply Utils.safe_exec("cal")
10
+ end
11
+ end
12
+ end
13
+ plugin = CalPlugin.new
14
+ plugin.map 'cal :month :year', :requirements => {:month => /^\d+$/, :year => /^\d+$/}
15
+ plugin.map 'cal'
@@ -0,0 +1,81 @@
1
+ ##################
2
+ # Filename: dice.rb
3
+ # Description: Rbot plugin. Rolls rpg style dice
4
+ # Author: David Dorward (http://david.us-lot.org/ - you might find a more up to date version of this plugin there)
5
+ # Version: 0.3.2
6
+ # Date: Sat 6 Apr 2002
7
+ #
8
+ # You can get rbot from: http://www.linuxbrit.co.uk/rbot/
9
+ #
10
+ # Changelog
11
+ # 0.1 - Initial release
12
+ # 0.1.1 - bug fix, only 1 digit for number of dice sides on first roll
13
+ # 0.3.0 - Spelling correction on changelog 0.1.1
14
+ # - Return results of each roll
15
+ # 0.3.1 - Minor documentation update
16
+ # 0.3.2 - Bug fix, could not subtract numbers (String can't be coerced into Fixnum)
17
+ #
18
+ # TODO: Test! Test! Test!
19
+ # Comment!
20
+ # Fumble/Critical counter (1's and x's where x is sides on dice)
21
+ ####################################################
22
+
23
+ class DiceDisplay
24
+ attr_reader :total, :view
25
+ def initialize(view, total)
26
+ @total = total
27
+ @view = view
28
+ end
29
+ end
30
+
31
+ class DicePlugin < Plugin
32
+ def help(plugin, topic="")
33
+ "dice <string> (where <string> is something like: d6 or 2d6 or 2d6+4 or 2d6+1d20 or 2d6+1d5+4d7-3d4-6) => Rolls that set of virtual dice"
34
+ end
35
+
36
+ def rolldice(d)
37
+ dice = d.split(/d/)
38
+ r = 0
39
+ unless dice[0] =~ /^[0-9]+/
40
+ dice[0] = 1
41
+ end
42
+ for i in 0...dice[0].to_i
43
+ r = r + rand(dice[1].to_i) + 1
44
+ end
45
+ return r
46
+ end
47
+
48
+ def iddice(d)
49
+ porm = d.slice!(0,1)
50
+ if d =~ /d/
51
+ r = rolldice(d)
52
+ else
53
+ r = d
54
+ end
55
+ if porm == "-"
56
+ r = 0 - r.to_i
57
+ end
58
+ viewer = DiceDisplay.new("[" + porm.to_s + d.to_s + "=" + r.to_s + "] ", r)
59
+ return viewer
60
+ end
61
+
62
+ def privmsg(m)
63
+ unless(m.params && m.params =~ /^[0-9]*d[0-9]+([+-]([0-9]+|[0-9]*d[0-9])+)*$/)
64
+ m.reply "incorrect usage: " + help(m.plugin)
65
+ return
66
+ end
67
+ a = m.params.scan(/^[0-9]*d[0-9]+|[+-][0-9]*d[0-9]+|[+-][0-9]+/)
68
+ r = rolldice(a[0])
69
+ t = "[" + a[0].to_s + "=" + r.to_s + "] "
70
+ for i in 1...a.length
71
+ tmp = iddice(a[i])
72
+ r = r + tmp.total.to_i
73
+ t = t + tmp.view.to_s
74
+ end
75
+ m.reply r.to_s + " | " + t
76
+ end
77
+ end
78
+ plugin = DicePlugin.new
79
+ plugin.register("dice")
80
+ ##############################################
81
+ #fin