rbot 0.9.10 → 0.9.12
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS +22 -4
- data/COPYING +5 -18
- data/ChangeLog +396 -0
- data/README +23 -25
- data/REQUIREMENTS +58 -12
- data/Rakefile +215 -0
- data/bin/rbot +47 -25
- data/bin/rbot-remote +76 -0
- data/data/rbot/languages/french.lang +5 -5
- data/data/rbot/languages/german.lang +4 -4
- data/data/rbot/languages/italian.lang +53 -0
- data/data/rbot/languages/japanese.lang +43 -0
- data/data/rbot/languages/russian.lang +60 -60
- data/data/rbot/languages/traditional_chinese.lang +75 -0
- data/data/rbot/plugins/alias.rb +192 -0
- data/data/rbot/plugins/autoop.rb +74 -37
- data/data/rbot/plugins/autorejoin.rb +15 -5
- data/data/rbot/plugins/bans.rb +454 -150
- data/data/rbot/plugins/bash.rb +173 -31
- data/data/rbot/plugins/botsnack.rb +37 -0
- data/data/rbot/plugins/cal.rb +11 -2
- data/data/rbot/plugins/chanserv.rb +132 -0
- data/data/rbot/plugins/chucknorris.rb +2 -2
- data/data/rbot/plugins/chucknorris.yml.gz +0 -0
- data/data/rbot/plugins/debugger.rb +136 -0
- data/data/rbot/plugins/deepthoughts.rb +89 -95
- data/data/rbot/plugins/delicious.rb +109 -0
- data/data/rbot/plugins/dice.rb +77 -25
- data/data/rbot/plugins/dict.rb +243 -0
- data/data/rbot/plugins/dictclient.rb +211 -0
- data/data/rbot/plugins/digg.rb +2 -2
- data/data/rbot/plugins/excuse.rb +4 -4
- data/data/rbot/plugins/factoids.rb +506 -0
- data/data/rbot/plugins/figlet.rb +127 -18
- data/data/rbot/plugins/fish.rb +93 -33
- data/data/rbot/plugins/forecast.rb +40 -27
- data/data/rbot/plugins/fortune.rb +86 -11
- data/data/rbot/plugins/freshmeat.rb +46 -12
- data/data/rbot/plugins/games/azgame.rb +565 -0
- data/data/rbot/plugins/games/quiz.rb +961 -0
- data/data/rbot/plugins/games/roshambo.rb +62 -0
- data/data/rbot/plugins/{roulette.rb → games/roulette.rb} +58 -8
- data/data/rbot/plugins/games/shiritori.rb +485 -0
- data/data/rbot/plugins/games/uno.rb +1205 -0
- data/data/rbot/plugins/games/wheelfortune.rb +615 -0
- data/data/rbot/plugins/grouphug.rb +76 -22
- data/data/rbot/plugins/hl2.rb +97 -0
- data/data/rbot/plugins/host.rb +10 -1
- data/data/rbot/plugins/httpd.rb.disabled +1 -0
- data/data/rbot/plugins/imdb.rb +511 -47
- data/data/rbot/plugins/insult.rb +32 -37
- data/data/rbot/plugins/iplookup.rb +224 -224
- data/data/rbot/plugins/karma.rb +45 -21
- data/data/rbot/plugins/keywords.rb +258 -160
- data/data/rbot/plugins/lart.rb +126 -95
- data/data/rbot/plugins/lastfm.rb +421 -12
- data/data/rbot/plugins/linkbot.rb +75 -0
- data/data/rbot/plugins/markov.rb +103 -46
- data/data/rbot/plugins/math.rb +6 -5
- data/data/rbot/plugins/modes.rb +114 -0
- data/data/rbot/plugins/nickrecover.rb +97 -0
- data/data/rbot/plugins/nickserv.rb +111 -48
- data/data/rbot/plugins/nslookup.rb +15 -19
- data/data/rbot/plugins/plugin.header +11 -0
- data/data/rbot/plugins/quakeauth.rb +74 -11
- data/data/rbot/plugins/quotes.rb +189 -233
- data/data/rbot/plugins/reaction.rb +415 -0
- data/data/rbot/plugins/remind.rb +11 -15
- data/data/rbot/plugins/remotectl.rb +29 -0
- data/data/rbot/plugins/ri.rb +74 -0
- data/data/rbot/plugins/rot13.rb +16 -1
- data/data/rbot/plugins/rss.rb +1219 -585
- data/data/rbot/plugins/salut.rb +226 -0
- data/data/rbot/plugins/script.rb +184 -0
- data/data/rbot/plugins/search.rb +233 -0
- data/data/rbot/plugins/seen.rb +44 -40
- data/data/rbot/plugins/shortenurls.rb +93 -0
- data/data/rbot/plugins/slashdot.rb +49 -11
- data/data/rbot/plugins/spell.rb +37 -27
- data/data/rbot/plugins/theyfightcrime.rb +36 -39
- data/data/rbot/plugins/threat.rb +25 -22
- data/data/rbot/plugins/time.rb +135 -0
- data/data/rbot/plugins/topic.rb +107 -50
- data/data/rbot/plugins/translator.rb +360 -0
- data/data/rbot/plugins/tube.rb +28 -40
- data/data/rbot/plugins/twitter.rb +187 -0
- data/data/rbot/plugins/urban.rb +62 -53
- data/data/rbot/plugins/url.rb +193 -409
- data/data/rbot/plugins/usermodes.rb +26 -0
- data/data/rbot/plugins/wall.rb +60 -0
- data/data/rbot/plugins/weather.rb +254 -598
- data/data/rbot/plugins/wow.rb +41 -37
- data/data/rbot/plugins/wserver.rb +17 -25
- data/data/rbot/plugins/youtube.rb +237 -0
- data/data/rbot/templates/lart/{larts → larts-english} +0 -0
- data/data/rbot/templates/lart/larts-italian +25 -0
- data/data/rbot/templates/lart/larts-japanese +10 -0
- data/data/rbot/templates/lart/{praises → praises-english} +0 -0
- data/data/rbot/templates/lart/praises-italian +4 -0
- data/data/rbot/templates/lart/praises-japanese +3 -0
- data/data/rbot/templates/quiz/win_messages +11 -0
- data/data/rbot/templates/salut/salut-english +40 -0
- data/data/rbot/templates/salut/salut-french +29 -0
- data/data/rbot/templates/salut/salut-italian +51 -0
- data/data/rbot/templates/salut/salut-japanese +31 -0
- data/lib/rbot/botuser.rb +940 -0
- data/lib/rbot/config-compat.rb +23 -0
- data/lib/rbot/config.rb +211 -276
- data/lib/rbot/core/auth.rb +1063 -0
- data/lib/rbot/core/basics.rb +214 -0
- data/lib/rbot/core/config.rb +330 -0
- data/lib/rbot/core/filters_ui.rb +64 -0
- data/lib/rbot/core/irclog.rb +292 -0
- data/lib/rbot/core/remote.rb +401 -0
- data/lib/rbot/core/unicode.rb +91 -0
- data/lib/rbot/core/userdata.rb +200 -0
- data/lib/rbot/core/utils/extends.rb +444 -0
- data/lib/rbot/core/utils/filters.rb +154 -0
- data/lib/rbot/core/utils/httputil.rb +689 -0
- data/lib/rbot/core/utils/utils.rb +717 -0
- data/lib/rbot/dbhash.rb +30 -9
- data/lib/rbot/irc.rb +1966 -0
- data/lib/rbot/ircbot.rb +816 -675
- data/lib/rbot/ircsocket.rb +246 -232
- data/lib/rbot/language.rb +86 -8
- data/lib/rbot/load-gettext.rb +154 -0
- data/lib/rbot/maskdb.rb +162 -0
- data/lib/rbot/message.rb +392 -65
- data/lib/rbot/messagemapper.rb +438 -94
- data/lib/rbot/pkgconfig.rb +6 -0
- data/lib/rbot/plugins.rb +713 -172
- data/lib/rbot/post-config.rb +1 -0
- data/lib/rbot/rbotconfig.rb +31 -12
- data/lib/rbot/registry.rb +79 -48
- data/lib/rbot/rfc2812.rb +927 -519
- data/lib/rbot/timer.rb +232 -167
- data/po/en_US/rbot-alias.po +82 -0
- data/po/en_US/rbot-autoop.po +0 -0
- data/po/en_US/rbot-autorejoin.po +0 -0
- data/po/en_US/rbot-azgame.po +200 -0
- data/po/en_US/rbot-bans.po +0 -0
- data/po/en_US/rbot-bash.po +0 -0
- data/po/en_US/rbot-botsnack.po +0 -0
- data/po/en_US/rbot-cal.po +3 -0
- data/po/en_US/rbot-chanserv.po +0 -0
- data/po/en_US/rbot-chucknorris.po +0 -0
- data/po/en_US/rbot-debugger.po +0 -0
- data/po/en_US/rbot-deepthoughts.po +0 -0
- data/po/en_US/rbot-delicious.po +0 -0
- data/po/en_US/rbot-dice.po +0 -0
- data/po/en_US/rbot-dict.po +0 -0
- data/po/en_US/rbot-dictclient.po +124 -0
- data/po/en_US/rbot-digg.po +0 -0
- data/po/en_US/rbot-eightball.po +0 -0
- data/po/en_US/rbot-excuse.po +0 -0
- data/po/en_US/rbot-factoids.po +107 -0
- data/po/en_US/rbot-figlet.po +36 -0
- data/po/en_US/rbot-fish.po +0 -0
- data/po/en_US/rbot-forecast.po +0 -0
- data/po/en_US/rbot-fortune.po +0 -0
- data/po/en_US/rbot-freshmeat.po +0 -0
- data/po/en_US/rbot-grouphug.po +18 -0
- data/po/en_US/rbot-hl2.po +0 -0
- data/po/en_US/rbot-host.po +3 -0
- data/po/en_US/rbot-imdb.po +0 -0
- data/po/en_US/rbot-insult.po +0 -0
- data/po/en_US/rbot-iplookup.po +0 -0
- data/po/en_US/rbot-karma.po +0 -0
- data/po/en_US/rbot-keywords.po +24 -0
- data/po/en_US/rbot-lart.po +0 -0
- data/po/en_US/rbot-lastfm.po +172 -0
- data/po/en_US/rbot-linkbot.po +0 -0
- data/po/en_US/rbot-markov.po +20 -0
- data/po/en_US/rbot-math.po +0 -0
- data/po/en_US/rbot-modes.po +0 -0
- data/po/en_US/rbot-nickrecover.po +40 -0
- data/po/en_US/rbot-nickserv.po +104 -0
- data/po/en_US/rbot-nslookup.po +0 -0
- data/po/en_US/rbot-quakeauth.po +0 -0
- data/po/en_US/rbot-quiz.po +0 -0
- data/po/en_US/rbot-quotes.po +108 -0
- data/po/en_US/rbot-reaction.po +0 -0
- data/po/en_US/rbot-remind.po +0 -0
- data/po/en_US/rbot-remotectl.po +0 -0
- data/po/en_US/rbot-ri.po +0 -0
- data/po/en_US/rbot-roshambo.po +0 -0
- data/po/en_US/rbot-rot13.po +0 -0
- data/po/en_US/rbot-roulette.po +0 -0
- data/po/en_US/rbot-rss.po +20 -0
- data/po/en_US/rbot-salut.po +0 -0
- data/po/en_US/rbot-script.po +0 -0
- data/po/en_US/rbot-search.po +0 -0
- data/po/en_US/rbot-seen.po +0 -0
- data/po/en_US/rbot-shiritori.po +113 -0
- data/po/en_US/rbot-shortenurls.po +0 -0
- data/po/en_US/rbot-slashdot.po +0 -0
- data/po/en_US/rbot-spell.po +54 -0
- data/po/en_US/rbot-theyfightcrime.po +0 -0
- data/po/en_US/rbot-threat.po +0 -0
- data/po/en_US/rbot-time.po +0 -0
- data/po/en_US/rbot-topic.po +0 -0
- data/po/en_US/rbot-translator.po +77 -0
- data/po/en_US/rbot-tube.po +0 -0
- data/po/en_US/rbot-twitter.po +24 -0
- data/po/en_US/rbot-uno.po +512 -0
- data/po/en_US/rbot-urban.po +0 -0
- data/po/en_US/rbot-url.po +0 -0
- data/po/en_US/rbot-usermodes.po +0 -0
- data/po/en_US/rbot-wall.po +33 -0
- data/po/en_US/rbot-weather.po +0 -0
- data/po/en_US/rbot-wheelfortune.po +205 -0
- data/po/en_US/rbot-wow.po +0 -0
- data/po/en_US/rbot-wserver.po +0 -0
- data/po/en_US/rbot-youtube.po +58 -0
- data/po/en_US/rbot.po +1097 -0
- data/po/fr/rbot-alias.po +97 -0
- data/po/fr/rbot-autoop.po +0 -0
- data/po/fr/rbot-autorejoin.po +0 -0
- data/po/fr/rbot-azgame.po +204 -0
- data/po/fr/rbot-bans.po +0 -0
- data/po/fr/rbot-bash.po +0 -0
- data/po/fr/rbot-botsnack.po +0 -0
- data/po/fr/rbot-cal.po +3 -0
- data/po/fr/rbot-chanserv.po +0 -0
- data/po/fr/rbot-chucknorris.po +0 -0
- data/po/fr/rbot-debugger.po +0 -0
- data/po/fr/rbot-deepthoughts.po +0 -0
- data/po/fr/rbot-delicious.po +0 -0
- data/po/fr/rbot-dice.po +0 -0
- data/po/fr/rbot-dict.po +0 -0
- data/po/fr/rbot-dictclient.po +134 -0
- data/po/fr/rbot-digg.po +0 -0
- data/po/fr/rbot-eightball.po +0 -0
- data/po/fr/rbot-excuse.po +0 -0
- data/po/fr/rbot-factoids.po +111 -0
- data/po/fr/rbot-figlet.po +37 -0
- data/po/fr/rbot-fish.po +0 -0
- data/po/fr/rbot-forecast.po +0 -0
- data/po/fr/rbot-fortune.po +0 -0
- data/po/fr/rbot-freshmeat.po +0 -0
- data/po/fr/rbot-grouphug.po +18 -0
- data/po/fr/rbot-hl2.po +0 -0
- data/po/fr/rbot-host.po +3 -0
- data/po/fr/rbot-imdb.po +0 -0
- data/po/fr/rbot-insult.po +0 -0
- data/po/fr/rbot-iplookup.po +0 -0
- data/po/fr/rbot-karma.po +0 -0
- data/po/fr/rbot-keywords.po +24 -0
- data/po/fr/rbot-lart.po +0 -0
- data/po/fr/rbot-lastfm.po +172 -0
- data/po/fr/rbot-linkbot.po +0 -0
- data/po/fr/rbot-markov.po +20 -0
- data/po/fr/rbot-math.po +0 -0
- data/po/fr/rbot-modes.po +0 -0
- data/po/fr/rbot-nickrecover.po +36 -0
- data/po/fr/rbot-nickserv.po +116 -0
- data/po/fr/rbot-nslookup.po +0 -0
- data/po/fr/rbot-quakeauth.po +0 -0
- data/po/fr/rbot-quiz.po +0 -0
- data/po/fr/rbot-quotes.po +138 -0
- data/po/fr/rbot-reaction.po +0 -0
- data/po/fr/rbot-remind.po +0 -0
- data/po/fr/rbot-remotectl.po +0 -0
- data/po/fr/rbot-ri.po +0 -0
- data/po/fr/rbot-roshambo.po +0 -0
- data/po/fr/rbot-rot13.po +0 -0
- data/po/fr/rbot-roulette.po +0 -0
- data/po/fr/rbot-rss.po +20 -0
- data/po/fr/rbot-salut.po +0 -0
- data/po/fr/rbot-script.po +0 -0
- data/po/fr/rbot-search.po +0 -0
- data/po/fr/rbot-seen.po +0 -0
- data/po/fr/rbot-shiritori.po +119 -0
- data/po/fr/rbot-shortenurls.po +0 -0
- data/po/fr/rbot-slashdot.po +0 -0
- data/po/fr/rbot-spell.po +56 -0
- data/po/fr/rbot-theyfightcrime.po +0 -0
- data/po/fr/rbot-threat.po +0 -0
- data/po/fr/rbot-time.po +0 -0
- data/po/fr/rbot-topic.po +0 -0
- data/po/fr/rbot-translator.po +90 -0
- data/po/fr/rbot-tube.po +0 -0
- data/po/fr/rbot-twitter.po +24 -0
- data/po/fr/rbot-uno.po +521 -0
- data/po/fr/rbot-urban.po +0 -0
- data/po/fr/rbot-url.po +0 -0
- data/po/fr/rbot-usermodes.po +0 -0
- data/po/fr/rbot-wall.po +33 -0
- data/po/fr/rbot-weather.po +0 -0
- data/po/fr/rbot-wheelfortune.po +255 -0
- data/po/fr/rbot-wow.po +0 -0
- data/po/fr/rbot-wserver.po +0 -0
- data/po/fr/rbot-youtube.po +64 -0
- data/po/fr/rbot.po +1133 -0
- data/po/it/rbot-alias.po +82 -0
- data/po/it/rbot-autoop.po +0 -0
- data/po/it/rbot-autorejoin.po +0 -0
- data/po/it/rbot-azgame.po +186 -0
- data/po/it/rbot-bans.po +0 -0
- data/po/it/rbot-bash.po +0 -0
- data/po/it/rbot-botsnack.po +0 -0
- data/po/it/rbot-cal.po +3 -0
- data/po/it/rbot-chanserv.po +0 -0
- data/po/it/rbot-chucknorris.po +0 -0
- data/po/it/rbot-debugger.po +0 -0
- data/po/it/rbot-deepthoughts.po +0 -0
- data/po/it/rbot-delicious.po +0 -0
- data/po/it/rbot-dice.po +0 -0
- data/po/it/rbot-dict.po +0 -0
- data/po/it/rbot-dictclient.po +111 -0
- data/po/it/rbot-digg.po +0 -0
- data/po/it/rbot-eightball.po +0 -0
- data/po/it/rbot-excuse.po +0 -0
- data/po/it/rbot-factoids.po +110 -0
- data/po/it/rbot-figlet.po +36 -0
- data/po/it/rbot-fish.po +0 -0
- data/po/it/rbot-forecast.po +0 -0
- data/po/it/rbot-fortune.po +0 -0
- data/po/it/rbot-freshmeat.po +0 -0
- data/po/it/rbot-grouphug.po +18 -0
- data/po/it/rbot-hl2.po +0 -0
- data/po/it/rbot-host.po +3 -0
- data/po/it/rbot-imdb.po +0 -0
- data/po/it/rbot-insult.po +0 -0
- data/po/it/rbot-iplookup.po +0 -0
- data/po/it/rbot-karma.po +0 -0
- data/po/it/rbot-keywords.po +24 -0
- data/po/it/rbot-lart.po +0 -0
- data/po/it/rbot-lastfm.po +172 -0
- data/po/it/rbot-linkbot.po +0 -0
- data/po/it/rbot-markov.po +20 -0
- data/po/it/rbot-math.po +0 -0
- data/po/it/rbot-modes.po +0 -0
- data/po/it/rbot-nickrecover.po +36 -0
- data/po/it/rbot-nickserv.po +104 -0
- data/po/it/rbot-nslookup.po +0 -0
- data/po/it/rbot-quakeauth.po +0 -0
- data/po/it/rbot-quiz.po +0 -0
- data/po/it/rbot-quotes.po +108 -0
- data/po/it/rbot-reaction.po +0 -0
- data/po/it/rbot-remind.po +0 -0
- data/po/it/rbot-remotectl.po +0 -0
- data/po/it/rbot-ri.po +0 -0
- data/po/it/rbot-roshambo.po +0 -0
- data/po/it/rbot-rot13.po +0 -0
- data/po/it/rbot-roulette.po +0 -0
- data/po/it/rbot-rss.po +20 -0
- data/po/it/rbot-salut.po +0 -0
- data/po/it/rbot-script.po +0 -0
- data/po/it/rbot-search.po +0 -0
- data/po/it/rbot-seen.po +0 -0
- data/po/it/rbot-shiritori.po +102 -0
- data/po/it/rbot-shortenurls.po +0 -0
- data/po/it/rbot-slashdot.po +0 -0
- data/po/it/rbot-spell.po +54 -0
- data/po/it/rbot-theyfightcrime.po +0 -0
- data/po/it/rbot-threat.po +0 -0
- data/po/it/rbot-time.po +0 -0
- data/po/it/rbot-topic.po +0 -0
- data/po/it/rbot-translator.po +77 -0
- data/po/it/rbot-tube.po +0 -0
- data/po/it/rbot-twitter.po +24 -0
- data/po/it/rbot-uno.po +564 -0
- data/po/it/rbot-urban.po +0 -0
- data/po/it/rbot-url.po +0 -0
- data/po/it/rbot-usermodes.po +0 -0
- data/po/it/rbot-wall.po +33 -0
- data/po/it/rbot-weather.po +0 -0
- data/po/it/rbot-wheelfortune.po +251 -0
- data/po/it/rbot-wow.po +0 -0
- data/po/it/rbot-wserver.po +0 -0
- data/po/it/rbot-youtube.po +64 -0
- data/po/it/rbot.po +1127 -0
- data/po/ja/rbot-alias.po +82 -0
- data/po/ja/rbot-autoop.po +0 -0
- data/po/ja/rbot-autorejoin.po +0 -0
- data/po/ja/rbot-azgame.po +194 -0
- data/po/ja/rbot-bans.po +0 -0
- data/po/ja/rbot-bash.po +0 -0
- data/po/ja/rbot-botsnack.po +0 -0
- data/po/ja/rbot-cal.po +3 -0
- data/po/ja/rbot-chanserv.po +0 -0
- data/po/ja/rbot-chucknorris.po +0 -0
- data/po/ja/rbot-debugger.po +0 -0
- data/po/ja/rbot-deepthoughts.po +0 -0
- data/po/ja/rbot-delicious.po +0 -0
- data/po/ja/rbot-dice.po +0 -0
- data/po/ja/rbot-dict.po +0 -0
- data/po/ja/rbot-dictclient.po +111 -0
- data/po/ja/rbot-digg.po +0 -0
- data/po/ja/rbot-eightball.po +0 -0
- data/po/ja/rbot-excuse.po +0 -0
- data/po/ja/rbot-factoids.po +107 -0
- data/po/ja/rbot-figlet.po +36 -0
- data/po/ja/rbot-fish.po +0 -0
- data/po/ja/rbot-forecast.po +0 -0
- data/po/ja/rbot-fortune.po +0 -0
- data/po/ja/rbot-freshmeat.po +0 -0
- data/po/ja/rbot-grouphug.po +18 -0
- data/po/ja/rbot-hl2.po +0 -0
- data/po/ja/rbot-host.po +3 -0
- data/po/ja/rbot-imdb.po +0 -0
- data/po/ja/rbot-insult.po +0 -0
- data/po/ja/rbot-iplookup.po +0 -0
- data/po/ja/rbot-karma.po +0 -0
- data/po/ja/rbot-keywords.po +24 -0
- data/po/ja/rbot-lart.po +0 -0
- data/po/ja/rbot-lastfm.po +172 -0
- data/po/ja/rbot-linkbot.po +0 -0
- data/po/ja/rbot-markov.po +20 -0
- data/po/ja/rbot-math.po +0 -0
- data/po/ja/rbot-modes.po +0 -0
- data/po/ja/rbot-nickrecover.po +36 -0
- data/po/ja/rbot-nickserv.po +104 -0
- data/po/ja/rbot-nslookup.po +0 -0
- data/po/ja/rbot-quakeauth.po +0 -0
- data/po/ja/rbot-quiz.po +0 -0
- data/po/ja/rbot-quotes.po +108 -0
- data/po/ja/rbot-reaction.po +0 -0
- data/po/ja/rbot-remind.po +0 -0
- data/po/ja/rbot-remotectl.po +0 -0
- data/po/ja/rbot-ri.po +0 -0
- data/po/ja/rbot-roshambo.po +0 -0
- data/po/ja/rbot-rot13.po +0 -0
- data/po/ja/rbot-roulette.po +0 -0
- data/po/ja/rbot-rss.po +20 -0
- data/po/ja/rbot-salut.po +0 -0
- data/po/ja/rbot-script.po +0 -0
- data/po/ja/rbot-search.po +0 -0
- data/po/ja/rbot-seen.po +0 -0
- data/po/ja/rbot-shiritori.po +115 -0
- data/po/ja/rbot-shortenurls.po +0 -0
- data/po/ja/rbot-slashdot.po +0 -0
- data/po/ja/rbot-spell.po +54 -0
- data/po/ja/rbot-theyfightcrime.po +0 -0
- data/po/ja/rbot-threat.po +0 -0
- data/po/ja/rbot-time.po +0 -0
- data/po/ja/rbot-topic.po +0 -0
- data/po/ja/rbot-translator.po +77 -0
- data/po/ja/rbot-tube.po +0 -0
- data/po/ja/rbot-twitter.po +24 -0
- data/po/ja/rbot-uno.po +512 -0
- data/po/ja/rbot-urban.po +0 -0
- data/po/ja/rbot-url.po +0 -0
- data/po/ja/rbot-usermodes.po +0 -0
- data/po/ja/rbot-wall.po +33 -0
- data/po/ja/rbot-weather.po +0 -0
- data/po/ja/rbot-wheelfortune.po +205 -0
- data/po/ja/rbot-wow.po +0 -0
- data/po/ja/rbot-wserver.po +0 -0
- data/po/ja/rbot-youtube.po +58 -0
- data/po/ja/rbot.po +999 -0
- data/po/rbot-alias.pot +83 -0
- data/po/rbot-autoop.pot +0 -0
- data/po/rbot-autorejoin.pot +0 -0
- data/po/rbot-azgame.pot +187 -0
- data/po/rbot-bans.pot +0 -0
- data/po/rbot-bash.pot +0 -0
- data/po/rbot-botsnack.pot +0 -0
- data/po/rbot-cal.pot +21 -0
- data/po/rbot-chanserv.pot +0 -0
- data/po/rbot-chucknorris.pot +0 -0
- data/po/rbot-debugger.pot +0 -0
- data/po/rbot-deepthoughts.pot +0 -0
- data/po/rbot-delicious.pot +0 -0
- data/po/rbot-dice.pot +0 -0
- data/po/rbot-dict.pot +0 -0
- data/po/rbot-dictclient.pot +112 -0
- data/po/rbot-digg.pot +0 -0
- data/po/rbot-eightball.pot +0 -0
- data/po/rbot-excuse.pot +0 -0
- data/po/rbot-factoids.pot +108 -0
- data/po/rbot-figlet.pot +37 -0
- data/po/rbot-fish.pot +0 -0
- data/po/rbot-forecast.pot +0 -0
- data/po/rbot-fortune.pot +0 -0
- data/po/rbot-freshmeat.pot +0 -0
- data/po/rbot-grouphug.pot +36 -0
- data/po/rbot-hl2.pot +0 -0
- data/po/rbot-host.pot +21 -0
- data/po/rbot-imdb.pot +0 -0
- data/po/rbot-insult.pot +0 -0
- data/po/rbot-iplookup.pot +0 -0
- data/po/rbot-karma.pot +0 -0
- data/po/rbot-keywords.pot +25 -0
- data/po/rbot-lart.pot +0 -0
- data/po/rbot-lastfm.pot +190 -0
- data/po/rbot-linkbot.pot +0 -0
- data/po/rbot-markov.pot +21 -0
- data/po/rbot-math.pot +0 -0
- data/po/rbot-modes.pot +0 -0
- data/po/rbot-nickrecover.pot +37 -0
- data/po/rbot-nickserv.pot +105 -0
- data/po/rbot-nslookup.pot +0 -0
- data/po/rbot-quakeauth.pot +0 -0
- data/po/rbot-quiz.pot +0 -0
- data/po/rbot-quotes.pot +109 -0
- data/po/rbot-reaction.pot +0 -0
- data/po/rbot-remind.pot +0 -0
- data/po/rbot-remotectl.pot +0 -0
- data/po/rbot-ri.pot +0 -0
- data/po/rbot-roshambo.pot +0 -0
- data/po/rbot-rot13.pot +0 -0
- data/po/rbot-roulette.pot +0 -0
- data/po/rbot-rss.pot +21 -0
- data/po/rbot-salut.pot +0 -0
- data/po/rbot-script.pot +0 -0
- data/po/rbot-search.pot +0 -0
- data/po/rbot-seen.pot +0 -0
- data/po/rbot-shiritori.pot +103 -0
- data/po/rbot-shortenurls.pot +0 -0
- data/po/rbot-slashdot.pot +0 -0
- data/po/rbot-spell.pot +55 -0
- data/po/rbot-theyfightcrime.pot +0 -0
- data/po/rbot-threat.pot +0 -0
- data/po/rbot-time.pot +0 -0
- data/po/rbot-topic.pot +0 -0
- data/po/rbot-translator.pot +78 -0
- data/po/rbot-tube.pot +0 -0
- data/po/rbot-twitter.pot +25 -0
- data/po/rbot-uno.pot +513 -0
- data/po/rbot-urban.pot +0 -0
- data/po/rbot-url.pot +0 -0
- data/po/rbot-usermodes.pot +0 -0
- data/po/rbot-wall.pot +33 -0
- data/po/rbot-weather.pot +0 -0
- data/po/rbot-wheelfortune.pot +206 -0
- data/po/rbot-wow.pot +0 -0
- data/po/rbot-wserver.pot +0 -0
- data/po/rbot-youtube.pot +59 -0
- data/po/rbot.pot +1004 -0
- data/po/zh_CN/rbot-alias.po +82 -0
- data/po/zh_CN/rbot-autoop.po +0 -0
- data/po/zh_CN/rbot-autorejoin.po +0 -0
- data/po/zh_CN/rbot-azgame.po +186 -0
- data/po/zh_CN/rbot-bans.po +0 -0
- data/po/zh_CN/rbot-bash.po +0 -0
- data/po/zh_CN/rbot-botsnack.po +0 -0
- data/po/zh_CN/rbot-cal.po +3 -0
- data/po/zh_CN/rbot-chanserv.po +0 -0
- data/po/zh_CN/rbot-chucknorris.po +0 -0
- data/po/zh_CN/rbot-debugger.po +0 -0
- data/po/zh_CN/rbot-deepthoughts.po +0 -0
- data/po/zh_CN/rbot-delicious.po +0 -0
- data/po/zh_CN/rbot-dice.po +0 -0
- data/po/zh_CN/rbot-dict.po +0 -0
- data/po/zh_CN/rbot-dictclient.po +111 -0
- data/po/zh_CN/rbot-digg.po +0 -0
- data/po/zh_CN/rbot-eightball.po +0 -0
- data/po/zh_CN/rbot-excuse.po +0 -0
- data/po/zh_CN/rbot-factoids.po +107 -0
- data/po/zh_CN/rbot-figlet.po +36 -0
- data/po/zh_CN/rbot-fish.po +0 -0
- data/po/zh_CN/rbot-forecast.po +0 -0
- data/po/zh_CN/rbot-fortune.po +0 -0
- data/po/zh_CN/rbot-freshmeat.po +0 -0
- data/po/zh_CN/rbot-grouphug.po +18 -0
- data/po/zh_CN/rbot-hl2.po +0 -0
- data/po/zh_CN/rbot-host.po +3 -0
- data/po/zh_CN/rbot-imdb.po +0 -0
- data/po/zh_CN/rbot-insult.po +0 -0
- data/po/zh_CN/rbot-iplookup.po +0 -0
- data/po/zh_CN/rbot-karma.po +0 -0
- data/po/zh_CN/rbot-keywords.po +24 -0
- data/po/zh_CN/rbot-lart.po +0 -0
- data/po/zh_CN/rbot-lastfm.po +172 -0
- data/po/zh_CN/rbot-linkbot.po +0 -0
- data/po/zh_CN/rbot-markov.po +20 -0
- data/po/zh_CN/rbot-math.po +0 -0
- data/po/zh_CN/rbot-modes.po +0 -0
- data/po/zh_CN/rbot-nickrecover.po +36 -0
- data/po/zh_CN/rbot-nickserv.po +104 -0
- data/po/zh_CN/rbot-nslookup.po +0 -0
- data/po/zh_CN/rbot-quakeauth.po +0 -0
- data/po/zh_CN/rbot-quiz.po +0 -0
- data/po/zh_CN/rbot-quotes.po +108 -0
- data/po/zh_CN/rbot-reaction.po +0 -0
- data/po/zh_CN/rbot-remind.po +0 -0
- data/po/zh_CN/rbot-remotectl.po +0 -0
- data/po/zh_CN/rbot-ri.po +0 -0
- data/po/zh_CN/rbot-roshambo.po +0 -0
- data/po/zh_CN/rbot-rot13.po +0 -0
- data/po/zh_CN/rbot-roulette.po +0 -0
- data/po/zh_CN/rbot-rss.po +20 -0
- data/po/zh_CN/rbot-salut.po +0 -0
- data/po/zh_CN/rbot-script.po +0 -0
- data/po/zh_CN/rbot-search.po +0 -0
- data/po/zh_CN/rbot-seen.po +0 -0
- data/po/zh_CN/rbot-shiritori.po +102 -0
- data/po/zh_CN/rbot-shortenurls.po +0 -0
- data/po/zh_CN/rbot-slashdot.po +0 -0
- data/po/zh_CN/rbot-spell.po +54 -0
- data/po/zh_CN/rbot-theyfightcrime.po +0 -0
- data/po/zh_CN/rbot-threat.po +0 -0
- data/po/zh_CN/rbot-time.po +0 -0
- data/po/zh_CN/rbot-topic.po +0 -0
- data/po/zh_CN/rbot-translator.po +77 -0
- data/po/zh_CN/rbot-tube.po +0 -0
- data/po/zh_CN/rbot-twitter.po +24 -0
- data/po/zh_CN/rbot-uno.po +512 -0
- data/po/zh_CN/rbot-urban.po +0 -0
- data/po/zh_CN/rbot-url.po +0 -0
- data/po/zh_CN/rbot-usermodes.po +0 -0
- data/po/zh_CN/rbot-wall.po +33 -0
- data/po/zh_CN/rbot-weather.po +0 -0
- data/po/zh_CN/rbot-wheelfortune.po +205 -0
- data/po/zh_CN/rbot-wow.po +0 -0
- data/po/zh_CN/rbot-wserver.po +0 -0
- data/po/zh_CN/rbot-youtube.po +58 -0
- data/po/zh_CN/rbot.po +1006 -0
- data/po/zh_TW/rbot-alias.po +82 -0
- data/po/zh_TW/rbot-autoop.po +0 -0
- data/po/zh_TW/rbot-autorejoin.po +0 -0
- data/po/zh_TW/rbot-azgame.po +186 -0
- data/po/zh_TW/rbot-bans.po +0 -0
- data/po/zh_TW/rbot-bash.po +0 -0
- data/po/zh_TW/rbot-botsnack.po +0 -0
- data/po/zh_TW/rbot-cal.po +3 -0
- data/po/zh_TW/rbot-chanserv.po +0 -0
- data/po/zh_TW/rbot-chucknorris.po +0 -0
- data/po/zh_TW/rbot-debugger.po +0 -0
- data/po/zh_TW/rbot-deepthoughts.po +0 -0
- data/po/zh_TW/rbot-delicious.po +0 -0
- data/po/zh_TW/rbot-dice.po +0 -0
- data/po/zh_TW/rbot-dict.po +0 -0
- data/po/zh_TW/rbot-dictclient.po +111 -0
- data/po/zh_TW/rbot-digg.po +0 -0
- data/po/zh_TW/rbot-eightball.po +0 -0
- data/po/zh_TW/rbot-excuse.po +0 -0
- data/po/zh_TW/rbot-factoids.po +107 -0
- data/po/zh_TW/rbot-figlet.po +36 -0
- data/po/zh_TW/rbot-fish.po +0 -0
- data/po/zh_TW/rbot-forecast.po +0 -0
- data/po/zh_TW/rbot-fortune.po +0 -0
- data/po/zh_TW/rbot-freshmeat.po +0 -0
- data/po/zh_TW/rbot-grouphug.po +18 -0
- data/po/zh_TW/rbot-hl2.po +0 -0
- data/po/zh_TW/rbot-host.po +3 -0
- data/po/zh_TW/rbot-imdb.po +0 -0
- data/po/zh_TW/rbot-insult.po +0 -0
- data/po/zh_TW/rbot-iplookup.po +0 -0
- data/po/zh_TW/rbot-karma.po +0 -0
- data/po/zh_TW/rbot-keywords.po +24 -0
- data/po/zh_TW/rbot-lart.po +0 -0
- data/po/zh_TW/rbot-lastfm.po +172 -0
- data/po/zh_TW/rbot-linkbot.po +0 -0
- data/po/zh_TW/rbot-markov.po +20 -0
- data/po/zh_TW/rbot-math.po +0 -0
- data/po/zh_TW/rbot-modes.po +0 -0
- data/po/zh_TW/rbot-nickrecover.po +36 -0
- data/po/zh_TW/rbot-nickserv.po +104 -0
- data/po/zh_TW/rbot-nslookup.po +0 -0
- data/po/zh_TW/rbot-quakeauth.po +0 -0
- data/po/zh_TW/rbot-quiz.po +0 -0
- data/po/zh_TW/rbot-quotes.po +108 -0
- data/po/zh_TW/rbot-reaction.po +0 -0
- data/po/zh_TW/rbot-remind.po +0 -0
- data/po/zh_TW/rbot-remotectl.po +0 -0
- data/po/zh_TW/rbot-ri.po +0 -0
- data/po/zh_TW/rbot-roshambo.po +0 -0
- data/po/zh_TW/rbot-rot13.po +0 -0
- data/po/zh_TW/rbot-roulette.po +0 -0
- data/po/zh_TW/rbot-rss.po +20 -0
- data/po/zh_TW/rbot-salut.po +0 -0
- data/po/zh_TW/rbot-script.po +0 -0
- data/po/zh_TW/rbot-search.po +0 -0
- data/po/zh_TW/rbot-seen.po +0 -0
- data/po/zh_TW/rbot-shiritori.po +102 -0
- data/po/zh_TW/rbot-shortenurls.po +0 -0
- data/po/zh_TW/rbot-slashdot.po +0 -0
- data/po/zh_TW/rbot-spell.po +54 -0
- data/po/zh_TW/rbot-theyfightcrime.po +0 -0
- data/po/zh_TW/rbot-threat.po +0 -0
- data/po/zh_TW/rbot-time.po +0 -0
- data/po/zh_TW/rbot-topic.po +0 -0
- data/po/zh_TW/rbot-translator.po +77 -0
- data/po/zh_TW/rbot-tube.po +0 -0
- data/po/zh_TW/rbot-twitter.po +24 -0
- data/po/zh_TW/rbot-uno.po +512 -0
- data/po/zh_TW/rbot-urban.po +0 -0
- data/po/zh_TW/rbot-url.po +0 -0
- data/po/zh_TW/rbot-usermodes.po +0 -0
- data/po/zh_TW/rbot-wall.po +33 -0
- data/po/zh_TW/rbot-weather.po +0 -0
- data/po/zh_TW/rbot-wheelfortune.po +205 -0
- data/po/zh_TW/rbot-wow.po +0 -0
- data/po/zh_TW/rbot-wserver.po +0 -0
- data/po/zh_TW/rbot-youtube.po +58 -0
- data/po/zh_TW/rbot.po +1034 -0
- data/setup.rb +800 -574
- metadata +723 -108
- data/data/rbot/contrib/plugins/figlet.rb +0 -20
- data/data/rbot/contrib/plugins/ri.rb +0 -83
- data/data/rbot/plugins/demauro.rb +0 -95
- data/data/rbot/plugins/google.rb +0 -53
- data/data/rbot/plugins/opme.rb +0 -19
- data/data/rbot/plugins/roshambo.rb +0 -54
- data/data/rbot/plugins/rubyurl.rb +0 -39
- data/data/rbot/plugins/tinyurl.rb +0 -39
- data/data/rbot/plugins/xmlrpc.rb.disabled +0 -52
- data/data/rbot/templates/levels.rbot +0 -32
- data/data/rbot/templates/users.rbot +0 -1
- data/lib/rbot/auth.rb +0 -314
- data/lib/rbot/channel.rb +0 -54
- data/lib/rbot/httputil.rb +0 -309
- data/lib/rbot/utils.rb +0 -83
data/README
CHANGED
@@ -1,38 +1,36 @@
|
|
1
|
-
rbot
|
2
|
-
===========
|
1
|
+
= rbot - The Ruby IRC bot
|
3
2
|
|
4
3
|
rbot is a ruby IRC bot. Think of him as a ruby bot framework with a highly
|
5
4
|
modular design based around plugins.
|
6
5
|
|
7
|
-
rbot features
|
8
|
-
=============
|
6
|
+
== rbot features
|
9
7
|
|
10
8
|
* Runtime configuration via irc chat
|
11
9
|
* User authentication and access levels for using different bot features
|
12
|
-
* Built in infobot-style keywords.
|
10
|
+
* Built in infobot-style keywords.
|
13
11
|
* Support for underlying fact database (infobot fact files), which can
|
14
12
|
be overridden or supplemented by runtime keyword controls
|
15
|
-
* Multi-language support - comes with english, dutch
|
16
|
-
so far - more translations welcome
|
13
|
+
* Multi-language support - comes with english, dutch, german, french, italian
|
14
|
+
japanese, chinese and russian definitions so far - more translations welcome
|
17
15
|
* Powerful plugin architecture, comes with plugins for:
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
16
|
+
- DNS queries
|
17
|
+
- Babelfish translation
|
18
|
+
- Google searching
|
19
|
+
- Excuse generation
|
20
|
+
- Insult generation
|
21
|
+
- Karma
|
22
|
+
- Checking the weather
|
23
|
+
- Querying slashdot
|
24
|
+
- Doing Math
|
25
|
+
- Per-channel quote storage, searching and retrieval
|
26
|
+
- Reminders
|
27
|
+
- rot13 translation
|
28
|
+
- Check the spelling of a word
|
29
|
+
- Webserver Server: header examination
|
30
|
+
- RPG dice rolling
|
31
|
+
- larting people
|
32
|
+
- conversation stats
|
33
|
+
- more...
|
36
34
|
|
37
35
|
Thanks are owed to the infobot developers - several of rbot's features are
|
38
36
|
inspired by infobot and so are some of the default plugins. Thanks are also
|
data/REQUIREMENTS
CHANGED
@@ -2,24 +2,47 @@ Ruby modules needed for rbot
|
|
2
2
|
============================
|
3
3
|
|
4
4
|
Core requirements
|
5
|
-
bdb (berkley db)
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
bdb (berkley db) http://raa.ruby-lang.org/project/bdb/
|
6
|
+
(which requires libdb4.x or better, formerly from
|
7
|
+
www.sleepycat.com, now at
|
8
|
+
http://www.oracle.com/technology/products/berkeley-db/index.html)
|
9
|
+
Most of the time you don't need to compile anything.
|
10
|
+
If you're running Linux, your distribution should
|
11
|
+
have a libdb-ruby packaged (or similar).
|
12
|
+
For Windows instructions, check at the bottom
|
13
|
+
of this file.
|
14
|
+
net/http 1.2+
|
15
|
+
net/https (for debian, this will also need libopenssl-ruby)
|
9
16
|
socket
|
10
17
|
uri
|
11
18
|
|
12
|
-
|
19
|
+
Useful but fallback provided
|
20
|
+
ruby-gettext 1.8.0+ http://www.yotabanana.com/hiki/ruby-gettext.html?ruby-gettext
|
21
|
+
optional; if installed rbot can use localized messages
|
22
|
+
htmlentities http://htmlentities.rubyforge.org/
|
23
|
+
optional; if installed rbot will use it to decode
|
24
|
+
HTML entities; if missing, an internal table with
|
25
|
+
the most common HTML entities will be used instead
|
26
|
+
hpricot http://code.whytheluckystiff.net/hpricot/
|
27
|
+
optional, if installed rbot will used it to find
|
28
|
+
the first paragraph in HTML files; if missing,
|
29
|
+
regular expressions will be used instead
|
30
|
+
|
13
31
|
|
14
32
|
Plugin requirements
|
15
33
|
(these are all optional, if you don't have them, the plugins just won't
|
16
34
|
function)
|
17
35
|
|
18
|
-
|
19
|
-
net/http 1.2+
|
20
|
-
|
21
|
-
slashdot, freshmeat, rss:
|
36
|
+
bash, digg, slashdot, freshmeat, forecast:
|
22
37
|
REXML
|
38
|
+
rss:
|
39
|
+
rss
|
40
|
+
shortenurls:
|
41
|
+
shorturl
|
42
|
+
time:
|
43
|
+
tzinfo
|
44
|
+
translator:
|
45
|
+
mechanize
|
23
46
|
|
24
47
|
External programs needed for rbot
|
25
48
|
=================================
|
@@ -27,6 +50,15 @@ External programs needed for rbot
|
|
27
50
|
Plugin requirements
|
28
51
|
(These are all optional)
|
29
52
|
|
53
|
+
cal plugin:
|
54
|
+
cal(1)
|
55
|
+
|
56
|
+
figlet plugin:
|
57
|
+
figlet(6)
|
58
|
+
|
59
|
+
fortune plugin:
|
60
|
+
fortune(6)
|
61
|
+
|
30
62
|
host plugin:
|
31
63
|
host(1)
|
32
64
|
|
@@ -37,9 +69,23 @@ spell plugin:
|
|
37
69
|
Running rbot on win32
|
38
70
|
=====================
|
39
71
|
|
40
|
-
|
72
|
+
You can install Ruby using the One-Click Ruby installer, available from
|
73
|
+
http://rubyinstaller.rubyforge.org/
|
74
|
+
|
75
|
+
You can find a precompiled version of the bdb package for ruby here
|
41
76
|
http://ftp.ruby-lang.org/pub/ruby/binaries/mingw/1.8/ext/bdb-0.5.1-i386-mingw32-1.8.tar.gz
|
42
77
|
|
43
|
-
|
44
|
-
|
78
|
+
When you unpack the archive (e.g. using WinZip or 7-Zip or any other tool
|
79
|
+
of your choice) you'll notice that it contains the following directory structure:
|
80
|
+
usr
|
81
|
+
+---local
|
82
|
+
+---doc
|
83
|
+
+---lib
|
84
|
+
and you have to move the doc and lib folders (and all their contents) in the folder
|
85
|
+
where you installed Ruby (typically C:\Ruby\)
|
86
|
+
|
87
|
+
|
88
|
+
Further instructions
|
89
|
+
====================
|
45
90
|
|
91
|
+
For further instructions, check http://ruby-rbot.org/rbot-trac/wiki/InstallGuide
|
data/Rakefile
ADDED
@@ -0,0 +1,215 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/gempackagetask'
|
4
|
+
|
5
|
+
task :default => [:buildext]
|
6
|
+
|
7
|
+
spec = Gem::Specification.new do |s|
|
8
|
+
s.name = 'rbot'
|
9
|
+
s.version = '0.9.12'
|
10
|
+
s.summary = <<-EOF
|
11
|
+
A modular ruby IRC bot.
|
12
|
+
EOF
|
13
|
+
s.description = <<-EOF
|
14
|
+
A modular ruby IRC bot specifically designed for ease of extension via plugins.
|
15
|
+
EOF
|
16
|
+
s.requirements << 'Ruby, version 1.8.0 (or newer)'
|
17
|
+
|
18
|
+
# s.files = Dir.glob("**/*").delete_if { |item| item.include?(".svn") }
|
19
|
+
s.files = FileList['lib/**/*.rb', 'bin/*', 'data/rbot/**/*', 'AUTHORS', 'COPYING', 'README', 'REQUIREMENTS', 'TODO', 'ChangeLog', 'INSTALL', 'Usage_en.txt', 'setup.rb', 'po/*.pot', 'po/**/*.po'].to_a.delete_if {|item| item == ".svn"}
|
20
|
+
s.bindir = 'bin'
|
21
|
+
s.executables = ['rbot', 'rbot-remote']
|
22
|
+
s.default_executable = 'rbot'
|
23
|
+
s.extensions = 'Rakefile'
|
24
|
+
|
25
|
+
# s.autorequire = 'rbot/ircbot'
|
26
|
+
s.has_rdoc = true
|
27
|
+
s.rdoc_options = ['--exclude', 'post-install.rb',
|
28
|
+
'--title', 'rbot API Documentation', '--main', 'README', 'README']
|
29
|
+
|
30
|
+
s.author = 'Tom Gilbert'
|
31
|
+
s.email = 'tom@linuxbrit.co.uk'
|
32
|
+
s.homepage = 'http://ruby-rbot.org'
|
33
|
+
s.rubyforge_project = 'rbot'
|
34
|
+
end
|
35
|
+
|
36
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
37
|
+
pkg.need_zip = true
|
38
|
+
pkg.need_tar = true
|
39
|
+
end
|
40
|
+
|
41
|
+
# normalize a po/pot file
|
42
|
+
def normalize_po(fn)
|
43
|
+
content = File.read(fn)
|
44
|
+
|
45
|
+
# sort the messages by file location
|
46
|
+
if MSGCAT
|
47
|
+
sorted = `#{MSGCAT} --width=79 --sort-by-file #{fn}`
|
48
|
+
if sorted != content
|
49
|
+
content = sorted
|
50
|
+
modified = true
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# replace project-id-version placholder
|
55
|
+
modified |= content.sub!(/^("Project-Id-Version: )PACKAGE VERSION(\\n")$/) {
|
56
|
+
"#{$1}rbot#{$2}"
|
57
|
+
}
|
58
|
+
|
59
|
+
if modified
|
60
|
+
File.open(fn, 'w') {|f| f.write content}
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
PLUGIN_FILES = FileList['data/rbot/plugins/**/*.rb']
|
65
|
+
NON_PLUGIN_FILES = FileList["{lib,bin,data}/**/*.{rb,rhtml}"] - PLUGIN_FILES
|
66
|
+
|
67
|
+
# this task defines how po files and pot files are made. those rules are not defined
|
68
|
+
# normally because po and pot files should be only updated in the updatepo task,
|
69
|
+
# but po files are also prereqs for makemo
|
70
|
+
task :define_po_rules do
|
71
|
+
# generate pot file from rb files
|
72
|
+
rgettext_proc = proc do |t|
|
73
|
+
require 'gettext/utils'
|
74
|
+
source_files, pot_file = t.prerequisites, t.name
|
75
|
+
new_pot_file = "#{pot_file}.new"
|
76
|
+
puts "#{source_files.join(', ')} => #{pot_file}"
|
77
|
+
GetText.rgettext(source_files, new_pot_file)
|
78
|
+
|
79
|
+
# only use the new pot file if it contains unique messages
|
80
|
+
if File.exists?(pot_file) && MSGCOMM && `#{MSGCOMM} --unique #{pot_file} #{new_pot_file}`.empty?
|
81
|
+
rm new_pot_file
|
82
|
+
else
|
83
|
+
mv new_pot_file, pot_file
|
84
|
+
end
|
85
|
+
|
86
|
+
normalize_po(pot_file)
|
87
|
+
|
88
|
+
# save all this work until rb files are updated again
|
89
|
+
touch pot_file
|
90
|
+
end
|
91
|
+
|
92
|
+
# generate pot file for non-plugin files
|
93
|
+
file('po/rbot.pot' => NON_PLUGIN_FILES, &rgettext_proc)
|
94
|
+
|
95
|
+
# generate pot files for plugin files
|
96
|
+
rule(%r'^po/.+\.pot$' => proc {|fn|
|
97
|
+
PLUGIN_FILES.select {|f| f.pathmap('rbot-%n') == fn.pathmap('%n')}
|
98
|
+
}, &rgettext_proc)
|
99
|
+
|
100
|
+
# map the po file to its source pot file
|
101
|
+
pot_for_po = proc {|fn| fn.pathmap '%{^po/.+/,po/}X.pot'}
|
102
|
+
|
103
|
+
# update po file from pot file
|
104
|
+
msgmerge_proc = proc do |t|
|
105
|
+
require 'gettext/utils'
|
106
|
+
po_file, pot_file = t.name, t.source
|
107
|
+
puts "#{pot_file} => #{po_file}"
|
108
|
+
if File.exists? po_file
|
109
|
+
sh "#{MSGMERGE} --backup=off --update #{po_file} #{pot_file}"
|
110
|
+
elsif MSGINIT
|
111
|
+
locale = po_file[%r'^po/(.+)/.+\.po$', 1]
|
112
|
+
sh "#{MSGINIT} --locale=#{locale} --no-translator --input=#{pot_file} --output-file=#{po_file}"
|
113
|
+
else
|
114
|
+
warn "#{po_file} is missing and cannot be generated without msginit"
|
115
|
+
next
|
116
|
+
end
|
117
|
+
normalize_po(po_file)
|
118
|
+
touch po_file
|
119
|
+
end
|
120
|
+
|
121
|
+
# generate English po files
|
122
|
+
file(%r'^po/en_US/.+\.po$' => pot_for_po) do |t|
|
123
|
+
po_file, pot_file = t.name, t.source
|
124
|
+
if MSGEN
|
125
|
+
sh "#{MSGEN} --output-file=#{po_file} #{pot_file}"
|
126
|
+
normalize_po(po_file)
|
127
|
+
touch po_file
|
128
|
+
else
|
129
|
+
msgmerge_proc.call t
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
# update po files
|
134
|
+
rule(%r'^po/.+/.+\.po$' => pot_for_po, &msgmerge_proc)
|
135
|
+
end
|
136
|
+
|
137
|
+
# generate mo files
|
138
|
+
rule(%r'^data/locale/.+/LC_MESSAGES/.+\.mo$' => proc {|fn|
|
139
|
+
[ fn.pathmap('%{^data/locale,po;LC_MESSAGES/,}X.po'),
|
140
|
+
# the directory is created if not existing
|
141
|
+
fn.pathmap('%d') ]
|
142
|
+
}) do |t|
|
143
|
+
po_file, mo_file = t.source, t.name
|
144
|
+
puts "#{po_file} => #{mo_file}"
|
145
|
+
require 'gettext/utils'
|
146
|
+
GetText.rmsgfmt po_file, mo_file
|
147
|
+
end
|
148
|
+
|
149
|
+
task :check_po_tools do
|
150
|
+
have = {}
|
151
|
+
|
152
|
+
po_tools = {
|
153
|
+
'msgmerge' => {
|
154
|
+
:options => %w[--backup= --update],
|
155
|
+
:message => 'Cannot update po files' },
|
156
|
+
'msginit' => {
|
157
|
+
:options => %w[--locale= --no-translator --input= --output-file=],
|
158
|
+
:message => 'Cannot generate missing po files' },
|
159
|
+
'msgcomm' => {
|
160
|
+
:options => %w[--unique],
|
161
|
+
:message => 'Pot files may be modified even without message change' },
|
162
|
+
'msgen' => {
|
163
|
+
:options => %w[--output-file],
|
164
|
+
:message => 'English po files will not be generated' },
|
165
|
+
'msgcat' => {
|
166
|
+
:options => %w[--width= --sort-by-file],
|
167
|
+
:message => 'Pot files will not be normalized' }
|
168
|
+
}
|
169
|
+
|
170
|
+
po_tools.each_pair do |command, value|
|
171
|
+
path = ENV["#{command.upcase}_PATH"] || command
|
172
|
+
have_it = have[command] = value[:options].all? do |option|
|
173
|
+
`#{path} --help`.include? option
|
174
|
+
end
|
175
|
+
Object.const_set(command.upcase, have_it ? path : false)
|
176
|
+
warn "#{command} not found. #{value[:message]}" unless have_it
|
177
|
+
end
|
178
|
+
abort unless MSGMERGE
|
179
|
+
end
|
180
|
+
|
181
|
+
PLUGIN_BASENAMES = PLUGIN_FILES.map {|f| f.pathmap('%n')}
|
182
|
+
LOCALES = FileList['po/*/'].map {|d| d.pathmap('%n')}
|
183
|
+
|
184
|
+
LOCALES.each do |l|
|
185
|
+
directory "data/locale/#{l}/LC_MESSAGES"
|
186
|
+
end
|
187
|
+
|
188
|
+
desc 'Update po files'
|
189
|
+
task :updatepo => [:define_po_rules, :check_po_tools] + LOCALES.map {|l|
|
190
|
+
["po/#{l}/rbot.po"] +
|
191
|
+
PLUGIN_BASENAMES.map {|n| "po/#{l}/rbot-#{n}.po"}
|
192
|
+
}.flatten
|
193
|
+
|
194
|
+
desc 'Normalize po files'
|
195
|
+
task :normalizepo => :check_po_tools do
|
196
|
+
FileList['po/*/*.po'].each {|fn| normalize_po(fn)}
|
197
|
+
end
|
198
|
+
|
199
|
+
# this task invokes makemo if ruby-gettext is available, but otherwise succeeds
|
200
|
+
# with a warning instead of failing. it is to be used by Gem's extension builder
|
201
|
+
# to make installation not fail because of lack of ruby-gettext
|
202
|
+
task :buildext do
|
203
|
+
begin
|
204
|
+
require 'gettext/utils'
|
205
|
+
Rake::Task[:makemo].invoke
|
206
|
+
rescue LoadError
|
207
|
+
warn 'Ruby-gettext cannot be located, so mo files cannot be built and installed'
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
desc 'Generate mo files'
|
212
|
+
task :makemo =>
|
213
|
+
FileList['po/*/*.po'].pathmap('%{^po,data/locale}d/LC_MESSAGES/%n.mo')
|
214
|
+
|
215
|
+
|
data/bin/rbot
CHANGED
@@ -1,27 +1,45 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
# The above copyright notice and this permission notice shall be included in
|
13
|
-
# all copies of the Software and its documentation and acknowledgment shall be
|
14
|
-
# given in the documentation and software packages that this Software was
|
15
|
-
# used.
|
16
|
-
#
|
17
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
20
|
-
# THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
21
|
-
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
22
|
-
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
3
|
+
=begin rdoc
|
4
|
+
|
5
|
+
= rbot main executable
|
6
|
+
|
7
|
+
Usage:
|
8
|
+
|
9
|
+
% rbot [options] [config directory]
|
10
|
+
|
11
|
+
== Options
|
23
12
|
|
24
|
-
|
13
|
+
[-h, --help]
|
14
|
+
display a help message and exit
|
15
|
+
[-v, --version]
|
16
|
+
display version information and exit
|
17
|
+
[-d, --debug]
|
18
|
+
enable debug messages
|
19
|
+
[-l, --loglevel _level_]
|
20
|
+
sets the minimum log level verbosity
|
21
|
+
[-b, --background]
|
22
|
+
background (daemonize) the bot
|
23
|
+
[-p, --pidfile _filename_]
|
24
|
+
write the bot pid to _filename_
|
25
|
+
|
26
|
+
The default config directory is <tt>~/.rbot</tt>.
|
27
|
+
|
28
|
+
The default pidfile is <tt><i>botdir</i>/rbot.pid</tt>.
|
29
|
+
|
30
|
+
The logfile is located at <tt><i>botdir</i>/<i>botname</i>.log</tt>, and
|
31
|
+
the default loglevel is 1 (INFO messages). Possible values for the loglevel
|
32
|
+
are 0 (DEBUG), 1 (INFO), 2 (WARN), 3 (ERROR), 4 (FATAL).
|
33
|
+
|
34
|
+
Please note that the logfile doesn't contain IRC logs (which are located at
|
35
|
+
<tt><i>botdir</i>/logs/*</tt>, but only rbot diagnostic messages.
|
36
|
+
|
37
|
+
=end
|
38
|
+
|
39
|
+
# Copyright (C) 2002-2006 Tom Gilbert.
|
40
|
+
# Copyright (C) 2007-2008 Giuseppe Bilotta and the rbot development team
|
41
|
+
#
|
42
|
+
# This is free software, see COPYING for licensing details
|
25
43
|
|
26
44
|
$VERBOSE=true
|
27
45
|
|
@@ -29,7 +47,8 @@ require 'etc'
|
|
29
47
|
require 'getoptlong'
|
30
48
|
require 'fileutils'
|
31
49
|
|
32
|
-
$version
|
50
|
+
$version ||= '0.9.12'
|
51
|
+
$version_timestamp ||= 0
|
33
52
|
$opts = Hash.new
|
34
53
|
|
35
54
|
orig_opts = ARGV.dup
|
@@ -40,10 +59,11 @@ opts = GetoptLong.new(
|
|
40
59
|
["--help", "-h", GetoptLong::NO_ARGUMENT],
|
41
60
|
["--loglevel", "-l", GetoptLong::REQUIRED_ARGUMENT],
|
42
61
|
["--trace", "-t", GetoptLong::REQUIRED_ARGUMENT],
|
62
|
+
["--pidfile", "-p", GetoptLong::REQUIRED_ARGUMENT],
|
43
63
|
["--version", "-v", GetoptLong::NO_ARGUMENT]
|
44
64
|
)
|
45
65
|
|
46
|
-
$debug =
|
66
|
+
$debug = $DEBUG
|
47
67
|
$daemonize = false
|
48
68
|
|
49
69
|
opts.each {|opt, arg|
|
@@ -52,7 +72,7 @@ opts.each {|opt, arg|
|
|
52
72
|
$opts[opt.sub(/^-+/, "")] = arg
|
53
73
|
}
|
54
74
|
|
55
|
-
$cl_loglevel = $opts["loglevel"].to_i
|
75
|
+
$cl_loglevel = $opts["loglevel"].to_i if $opts["loglevel"]
|
56
76
|
|
57
77
|
if ($opts["trace"])
|
58
78
|
set_trace_func proc { |event, file, line, id, binding, classname|
|
@@ -88,12 +108,14 @@ if ($opts["help"])
|
|
88
108
|
puts " -h, --help this message"
|
89
109
|
puts " -v, --version version information"
|
90
110
|
puts " -d, --debug enable debug messages"
|
111
|
+
puts " -l, --loglevel sets the log level verbosity"
|
91
112
|
puts " -b, --background background (daemonize) the bot"
|
113
|
+
puts " -p, --pidfile write the bot pid to file"
|
92
114
|
puts "config directory defaults to ~/.rbot"
|
93
115
|
exit 0
|
94
116
|
end
|
95
117
|
|
96
|
-
if(bot = Irc::
|
118
|
+
if(bot = Irc::Bot.new(ARGV.shift, :argv => orig_opts))
|
97
119
|
# just run the bot
|
98
120
|
bot.mainloop
|
99
121
|
end
|