Added example strings.

This commit is contained in:
Jeremy Fincher 2003-08-27 18:06:26 +00:00
parent 5c86cd2ce4
commit 9d51e998b5
13 changed files with 257 additions and 20 deletions

View File

@ -60,6 +60,16 @@ def configure(onStart, afterConnect, advanced):
print 'You can apply for a key at http://www.amazon.com/webservices' print 'You can apply for a key at http://www.amazon.com/webservices'
example = utils.wrapLines("""
<jemfinch> @list Amazon
<supybot> amazonlicensekey, isbn
<jemfinch> (amazonlicense key is used to set the license key to access Amazon's web services. We won't show that here, for obvious reasons.)
<jemfinch> @isbn 0-8050-3906-6
<supybot> "Winning With the French (Openings)", written by Wolfgang Uhlmann; published by Henry Holt & Company, Inc..
<jemfinch> @isbn 0805039066
<supybot> "Winning With the French (Openings)", written by Wolfgang Uhlmann; published by Henry Holt & Company, Inc..
""")
class Amazon(callbacks.Privmsg): class Amazon(callbacks.Privmsg):
threaded = True threaded = True
def amazonlicensekey(self, irc, msg, args): def amazonlicensekey(self, irc, msg, args):

View File

@ -32,12 +32,6 @@
""" """
Filters bad words on outgoing messages from the bot, so the bot can't be made Filters bad words on outgoing messages from the bot, so the bot can't be made
to say bad words. to say bad words.
Commands include:
addbadword
removebadword
addbadwords
removebadwords
""" """
from baseplugin import * from baseplugin import *
@ -45,6 +39,7 @@ from baseplugin import *
import re import re
import sets import sets
import utils
import ircdb import ircdb
import ircmsgs import ircmsgs
import privmsgs import privmsgs
@ -57,6 +52,29 @@ def configure(onStart, afterConnect, advanced):
words = anything('What words? (separate individual words by spaces)') words = anything('What words? (separate individual words by spaces)')
onStart.append('addbadwords %s' % words) onStart.append('addbadwords %s' % words)
example = utils.wrapLines("""
<jemfinch> @load BadWords
<supybot> The operation succeeded.
<jemfinch> @list BadWords
<supybot> addbadword, addbadwords, removebadword, removebadwords
<jemfinch> @addbadword darn
<supybot> The operation succeeded.
<jemfinch> @rot13 qnea
<supybot> !@#$
<jemfinch> @removebadword darn
<supybot> The operation succeeded.
<jemfinch> @rot13 qnea
<supybot> darn
<jemfinch> @addbadwords darn dang shoot
<supybot> The operation succeeded.
<jemfinch> @rot13 qnea qnat fubbg
<supybot> !@#$ !@#$ !@#$!
<jemfinch> @removebadwords darn dang shoot
<supybot> The operation succeeded.
<jemfinch> @rot13 qnea qnat fubbg
<supybot> darn dang shoot
""")
nastyChars = '!@#$' * 256 nastyChars = '!@#$' * 256
def subber(m): def subber(m):
return nastyChars[:len(m.group(1))] return nastyChars[:len(m.group(1))]

View File

@ -51,6 +51,22 @@ import privmsgs
import ircutils import ircutils
import callbacks import callbacks
example = utils.wrapLines("""
<jemfinch> @list ChannelDB
<supybot> channelstats, karma, seen, stats
<jemfinch> @channelstats
<supybot> Error: Command must be sent in a channel or include a channel in its arguments.
<jemfinch> (Obviously, you gotta give it a channel :))
<jemfinch> @channelstats #sourcereview
<supybot> On #sourcereview there have been 46965 messages, containing 1801703 characters, 319510 words, 4663 smileys, and 657 frowns; 2262 of those messages were ACTIONs. There have been 2404 joins, 139 parts, 1 kicks, 323 mode changes, and 129 topic changes.
<jemfinch> @stats #sourcereview jemfinch
<supybot> jemfinch has sent 16131 messages; a total of 687961 characters, 118915 words, 1482 smileys, and 226 frowns; 797 of those messages were ACTIONs. jemfinch has joined 284 times, parted 25 times, kicked someone 0 times been kicked 0 times, changed the topic 2 times, and changed the mode 2 times.
<jemfinch> @karma #sourcereview birthday_sex
<supybot> Karma for 'birthday_sex' has been increased 1 time and decreased 0 times for a total karma of 1.
<jemfinch> @seen #sourcereview inkedmn
<supybot> inkedmn was last seen here 1 day, 18 hours, 42 minutes, and 23 seconds ago saying 'ah'
""")
smileys = (':)', ';)', ':]', ':-)', ':-D', ':D', ':P', ':p', '(=', '=)') smileys = (':)', ';)', ':]', ':-)', ':-D', ':D', ':P', ':p', '(=', '=)')
frowns = (':|', ':-/', ':-\\', ':\\', ':/', ':(', ':-(', ':\'(') frowns = (':|', ':-/', ':-\\', ':\\', ':/', ':(', ':-(', ':\'(')

View File

@ -30,7 +30,7 @@
### ###
""" """
Add the module docstring here. This will be used by the setup.py script. This is a module to contain Debian-specific commands.
""" """
from baseplugin import * from baseplugin import *
@ -75,6 +75,15 @@ def configure(onStart, afterConnect, advanced):
print 'I\'ll disable debfile now.' print 'I\'ll disable debfile now.'
onStart.append('disable debfile') onStart.append('disable debfile')
example = utils.wrapLines("""
<jemfinch> @list Debian
<supybot> debfile, debversion, usepythonzegrep
<jemfinch> @debversion python
<supybot> Total matches: 3, shown: 3. python 2.1.3-3.2 (stable), python 2.2.3-3 (testing), python 2.3-4 (unstable)
<jemfinch> @debfile /usr/bin/python
<supybot> python/python, devel/crystalspace-dev, python/python1.5, python/python2.1, python/python2.1-popy, python/python2.2, python/python2.2-popy, python/python2.3, python/python2.3-popy, devel/sloccount, graphics/pythoncad, mail/pms
""")
class Debian(callbacks.Privmsg, PeriodicFileDownloader): class Debian(callbacks.Privmsg, PeriodicFileDownloader):
threaded = True threaded = True

View File

@ -53,6 +53,18 @@ def configure(onStart, afterConnect, advanced):
from questions import expect, anything, something, yn from questions import expect, anything, something, yn
onStart.append('load Gameknot') onStart.append('load Gameknot')
example = utils.wrapLines("""
<jemfinch> @list Gameknot
<supybot> gkstats
<jemfinch> @gkstats jemfinch
<supybot> jemfinch (team: Grasshoppers) is rated 1526 and has 0 active games and a record of W-58, L-30, D-5 (win/loss/draw %: 62.37/32.26/5.38). jemfinch was last seen on Gameknot 6 minutes ago.
<jemfinch> blah blah blah I'm talking about http://gameknot.com/stats.pl?ddipaolo blah blah blah
<supybot> ddipaolo blah blah blah (team: Grasshoppers) is rated 1159 and has 4 active games and a record of W-135, L-136, D-8 (win/loss/draw %: 48.39/48.75/2.87). ddipaolo blah blah blah was last seen on Gameknot 3 hours 48 minutes ago.
<jemfinch> hmm, I wonder what the game http://gameknot.com/chess.pl?bd=1038943 is all about.
<supybot> Challenge from ddipaolo: inkedmn (901; W-69, L-84, D-4) vs. ddipaolo (1159; W-135, L-136, D-8); inkedmn to move. <http://gameknot.com/chess.pl?bd=1038943>
""")
class Gameknot(callbacks.PrivmsgCommandAndRegexp): class Gameknot(callbacks.PrivmsgCommandAndRegexp):
threaded = True threaded = True
regexps = sets.Set(['gameknotSnarfer', 'gameknotStatsSnarfer']) regexps = sets.Set(['gameknotSnarfer', 'gameknotStatsSnarfer'])
@ -172,11 +184,11 @@ class Gameknot(callbacks.PrivmsgCommandAndRegexp):
self._gkRating.search(bRating).groups() self._gkRating.search(bRating).groups()
wStats = '%s; W-%s, L-%s, D-%s' % (wRating, wWins, wLosses, wDraws) wStats = '%s; W-%s, L-%s, D-%s' % (wRating, wWins, wLosses, wDraws)
bStats = '%s; W-%s, L-%s, D-%s' % (bRating, bWins, bLosses, bDraws) bStats = '%s; W-%s, L-%s, D-%s' % (bRating, bWins, bLosses, bDraws)
irc.queueMsg(ircmsgs.privmsg(msg.args[0], irc.queueMsg(callbacks.reply(msg,
'%s: %s (%s) vs. %s (%s); %s <%s>' % ( '%s: %s (%s) vs. %s (%s); %s <%s>' % (
gameTitle, wName, wStats, bName, bStats, toMove, url))) gameTitle, wName, wStats, bName, bStats, toMove, url)))
except ValueError: except ValueError:
irc.queueMsg(ircmsgs.privmsg(msg.args[0], irc.queueMsg(callbacks.reply(msg,
'That doesn\'t appear to be a proper Gameknot game.')) 'That doesn\'t appear to be a proper Gameknot game.'))
except Exception, e: except Exception, e:
irc.error(msg, debug.exnToString(e)) irc.error(msg, debug.exnToString(e))
@ -185,7 +197,7 @@ class Gameknot(callbacks.PrivmsgCommandAndRegexp):
r"http://gameknot\.com/stats\.pl\?([^&]+)" r"http://gameknot\.com/stats\.pl\?([^&]+)"
name = match.group(1) name = match.group(1)
s = self.getStats(name) s = self.getStats(name)
irc.queueMsg(ircmsgs.privmsg(msg.args[0], s)) irc.queueMsg(callbacks.reply(msg, s))
Class = Gameknot Class = Gameknot

View File

@ -71,6 +71,24 @@ def configure(onStart, afterConnect, advanced):
print 'You\'ll need to get a key before you can use this plugin.' print 'You\'ll need to get a key before you can use this plugin.'
print 'You can apply for a key at http://www.google.com/apis/' print 'You can apply for a key at http://www.google.com/apis/'
example = utils.wrapLines("""
<jemfinch> @list google
<supybot> google, googlefight, googleinfo, googlelicensekey, googlesite, googlespell, metagoogle
<jemfinch> @google jemfinch
<supybot> [Twisted-commits] Like, you know, a bugfix. jemfinch reported.: http://twistedmatrix.com/pipermail/twisted-commits/2002-August/002956.html :: Character Analysis of JemFinch NetEssays.NET - Thousands of FREE ...: http://www.netessays.net/viewpaper/1379.html :: SourceForge.net: Developer Profile: http://sourceforge.net/users/jemfinch/ (search took 0.174663 seconds)
<jemfinch> @googlefight jemfinch supybot moobot ddipaolo
<supybot> 'moobot': 959, 'jemfinch': 236, 'ddipaolo': 229, 'supybot': 80
<jemfinch> @googleinfo
<supybot> This google module has been called 5 times total; 5 times in the past 24 hours. Google has spent 1.229932 seconds searching for me.
<jemfinch> @googlespell recind
<supybot> rescind
<jemfinch> @metagoogle jemfinch
<supybot> Search for 'jemfinch' returned approximately 214 results in 0.072376 seconds.
<jemfinch> @googlesite slashdot.org SCO
<supybot> Slashdot | How SCO Helped Linux Go Enterprise: http://yro.slashdot.org/yro/03/07/22/0528203.shtml?tid=106&tid=185 :: Slashdot | SCO Threatens Red Hat and SuSE: http://science.slashdot.org/articles/03/04/23/1925259.shtml :: Slashdot | Linus Torvalds about SCO , IP, MS and Transmeta: http://slashdot.org/articles/03/07/05/1728201.shtml?tid=106&tid=185 (search took 0.210749 seconds)
""")
totalSearches = 0 totalSearches = 0
totalTime = 0 totalTime = 0
last24hours = structures.queue() last24hours = structures.queue()

View File

@ -52,6 +52,17 @@ def configure(onStart, afterConnect, advanced):
from questions import expect, anything, something, yn from questions import expect, anything, something, yn
onStart.append('load IMDB') onStart.append('load IMDB')
example = utils.wrapLines("""
<jemfinch> @list IMDB
<supybot> imdb
<jemfinch> @imdb die hard
<supybot> "Die Hard" (1988) belongs to the action and thriller genres. It's been rated 8.0 out of 10. More information is available at <http://imdb.com/Title?0095016>
<jemfinch> @imdb the usual suspects
<supybot> "The Usual Suspects" (1995) belongs to the crime, thriller, and mystery genres. It's been rated 8.7 out of 10. More information is available at <http://imdb.com/Title?0114814>
<jemfinch> @imdb kevin spacey
<supybot> "Kevin Spacey" is apparently a person. More information is available at <http://us.imdb.com/Name?Spacey,+Kevin>
""")
class IMDB(callbacks.Privmsg): class IMDB(callbacks.Privmsg):
threaded = True threaded = True
def _formatMovie(self, movie): def _formatMovie(self, movie):

View File

@ -42,11 +42,53 @@ from baseplugin import *
import re import re
import base64 import base64
import ircmsgs smport ircmsgs
import ircutils import ircutils
import privmsgs import privmsgs
import callbacks import callbacks
example = utils.wrapLines("""
<jemfinch> @list Moobot
<supybot> cool, dawdit, ditdaw, give, hi, mime, morse, reverse, stack, unmime, unmorse
<jemfinch> @cool supybot
<supybot> :cool: supybot :cool:
<jemfinch> @dawdit supybot
<supybot> supybot
<jemfinch> @ditdaw supybot
<supybot> ... ..- .--. -.-- -... --- -
<jemfinch> @dawdit [ditdaw supybot]
<supybot> SUPYBOT
<jemfinch> @give yourself a beer
* supybot gives himself a beer
<jemfinch> @hi
<supybot> howdy, jemfinch!
<jemfinch> @reverse supybot
<supybot> tobypus
<jemfinch> @mime supybot
<supybot> c3VweWJvdA==
<jemfinch> @unmime [mime supybot]
<supybot> supybot
<jemfinch> @unmorse [morse supybot]
<supybot> SUPYBOT
<jemfinch> @stack push 1
<supybot> "1" pushed.
<jemfinch> @stack push 2
<supybot> "2" pushed.
<jemfinch> @help stack
<supybot> stack <'push'|'pop'|'size'|'xray'> <text> (for more help use the morehelp command)
<jemfinch> @stack size
<supybot> Stack size is 2.
<jemfinch> @stack xray 1
<supybot> 2
<jemfinch> @stack pop
<supybot> 2
<jemfinch> @stack pop
<supybot> 1
<jemfinch> @stack pop
<supybot> Error: Stack is empty.
""")
class Moobot(callbacks.Privmsg): class Moobot(callbacks.Privmsg):
def cool(self, irc, msg, args): def cool(self, irc, msg, args):
"""<something> """<something>
@ -132,11 +174,17 @@ class Moobot(callbacks.Privmsg):
dawdit = unmorse dawdit = unmorse
def hi(self, irc, msg, args): def hi(self, irc, msg, args):
"takes no arguments" """takes no arguments
Says hi to you.
"""
irc.reply(msg, 'howdy, %s!' % msg.nick) irc.reply(msg, 'howdy, %s!' % msg.nick)
def reverse(self, irc, msg, args): def reverse(self, irc, msg, args):
"<text>" """<text>
Reverses <text>.
"""
text = privmsgs.getArgs(args) text = privmsgs.getArgs(args)
irc.reply(msg, text[::-1]) irc.reply(msg, text[::-1])
@ -190,7 +238,9 @@ class Moobot(callbacks.Privmsg):
irc.error(msg, 'I don\'t recognize that stack command.') irc.error(msg, 'I don\'t recognize that stack command.')
def give(self, irc, msg, args): def give(self, irc, msg, args):
"""<someone> <something>""" """<someone> <something>
Um, gives <someone> <something>."""
(someone, something) = privmsgs.getArgs(args, needed=2) (someone, something) = privmsgs.getArgs(args, needed=2)
if someone == 'me': if someone == 'me':
someone = msg.nick someone = msg.nick
@ -198,6 +248,7 @@ class Moobot(callbacks.Privmsg):
someone = 'himself' someone = 'himself'
response = 'gives %s %s' % (someone, something) response = 'gives %s %s' % (someone, something)
irc.queueMsg(ircmsgs.action(ircutils.replyTo(msg), response)) irc.queueMsg(ircmsgs.action(ircutils.replyTo(msg), response))
raise callbacks.CannotNest
Class = Moobot Class = Moobot

View File

@ -39,6 +39,7 @@ from baseplugin import *
import urllib2 import urllib2
import debug import debug
import utils
import privmsgs import privmsgs
import callbacks import callbacks
@ -51,6 +52,17 @@ def configure(onStart, afterConnect, advanced):
from questions import expect, anything, something, yn from questions import expect, anything, something, yn
onStart.append('load OSU') onStart.append('load OSU')
example = utils.wrapLines("""
<jemfinch> @list OSU
<supybot> osubuilding, osuemail
<jemfinch> @osuemail jeremiah fincher
<supybot> fincher.8@osu.edu
<jemfinch> @osubuilding DL
<supybot> Dreese Laboratories, 2015 Neil Avenue, Columbus, Ohio, 43210
<jemfinch> @osubuilding CE
<supybot> Celeste Laboratory Of Chemistry, 120 W 18th Avenue, Columbus, Ohio, 43210
""")
buildings = { buildings = {
'AA': 'Agricultural Administration Building, ' \ 'AA': 'Agricultural Administration Building, ' \
'2120 Fyffe Road, Columbus, Ohio, 43210', '2120 Fyffe Road, Columbus, Ohio, 43210',

View File

@ -31,11 +31,6 @@
""" """
Provides commands for manipulating channel topics. Provides commands for manipulating channel topics.
Commands include:
addtopic
removetopic
shuffletopic
""" """
from baseplugin import * from baseplugin import *
@ -50,6 +45,25 @@ import ircmsgs
import privmsgs import privmsgs
import callbacks import callbacks
example = utils.wrapLines("""
--- Topic for #sourcereview is Welcome to #sourcereview, home of cool people. (jemfinch) || supybot now has an IMDB module! (jemfinch) || jemfinch, make lasturl show more information about the url in quesiton. (jemfinch) || jemfinch, think about how you're going to have threads notify the main loop that data is ready. (jemfinch)
--- Topic for #sourcereview set by supybot at Tue Aug 26 15:38:35
<jemfinch> @list Topic
<supybot> jemfinch: addtopic, changetopic, removetopic, shuffletopic, topic
<jemfinch> @shuffletopic
--- supybot has changed the topic to: supybot now has an IMDB module! (jemfinch) || jemfinch, make lasturl show more information about the url in quesiton. (jemfinch) || Welcome to #sourcereview, home of cool people. (jemfinch) || jemfinch, think about how you're going to have threads notify the main loop that data is ready. (jemfinch)
<jemfinch> @removetopic 0
--- supybot has changed the topic to: jemfinch, make lasturl show more information about the url in quesiton. (jemfinch) || Welcome to #sourcereview, home of cool people. (jemfinch) || jemfinch, think about how you're going to have threads notify the main loop that data is ready. (jemfinch)
<jemfinch> @changetopic 0 s/make/MAKE/
--- supybot has changed the topic to: jemfinch, MAKE lasturl show more information about the url in quesiton. (jemfinch) || Welcome to #sourcereview, home of cool people. (jemfinch) || jemfinch, think about how you're going to have threads notify the main loop that data is ready. (jemfinch)
<jemfinch> @removetopic -1
--- supybot has changed the topic to: jemfinch, MAKE lasturl show more information about the url in quesiton. (jemfinch) || Welcome to #sourcereview, home of cool people. (jemfinch)
<jemfinch> @addtopic supybot will make a beta release soon!
--- supybot has changed the topic to: jemfinch, MAKE lasturl show more information about the url in quesiton. (jemfinch) || Welcome to #sourcereview, home of cool people. (jemfinch) || supybot will make a beta release soon! (jemfinch)
<jemfinch> @topic -1
<supybot> jemfinch: supybot will make a beta release soon! (jemfinch)
""")
class Topic(callbacks.Privmsg): class Topic(callbacks.Privmsg):
topicSeparator = ' || ' topicSeparator = ' || '
topicFormatter = '%s (%s)' topicFormatter = '%s (%s)'

View File

@ -39,6 +39,7 @@ import re
from twisted.protocols import dict from twisted.protocols import dict
import utils
import ircutils import ircutils
import privmsgs import privmsgs
import callbacks import callbacks
@ -50,7 +51,24 @@ def configure(onStart, afterConnect, advanced):
# like to be run when the bot is started; append to afterConnect the # like to be run when the bot is started; append to afterConnect the
# commands you would like to be run when the bot has finished connecting. # commands you would like to be run when the bot has finished connecting.
from questions import expect, anything, something, yn from questions import expect, anything, something, yn
try:
import twisted
onStart.append('load TwistedCommands') onStart.append('load TwistedCommands')
except ImportError:
print 'Sorry, you don\'t seem to have Twisted installed.'
print 'You can\'t use this module without Twisted being installed.'
print 'Once you\'ve installed Twisted, change conf.driverModule to'
print '"twistedDrivers" and add "load TwistedCommands" to your config'
print 'file.'
example = utils.wrapLines("""
<jemfinch> @load TwistedCommands
<supybot> The operation succeeded.
<jemfinch> @list TwistedCommands
<supybot> dict
<jemfinch> @dict rose
<supybot> adj : having a dusty purplish pink color; "the roseate glow of dawn" [syn: {roseate}, {rosaceous}] n 1: any of many plants of the genus Rosa, or pinkish table wine from red grapes whose skins were removed after fermentation began [syn: {blush wine}, {pink wine}, {rose wine}]
""")
class TwistedCommands(callbacks.Privmsg): class TwistedCommands(callbacks.Privmsg):
def defaultErrback(self, irc, msg): def defaultErrback(self, irc, msg):

View File

@ -77,6 +77,27 @@ def configure(onStart, afterConnect, advanced):
if yn('Would you like to disable this command?') == 'y': if yn('Would you like to disable this command?') == 'y':
onStart.append('disable progstats') onStart.append('disable progstats')
example = utils.wrapLines("""
<jemfinch> @list Unix
<supybot> crypt, errno, fortune, progstats, spell
<jemfinch> @crypt jemfinch
<supybot> XJsAYQVv6ACAs
<jemfinch> @help crypt
<supybot> crypt <password> [<salt>] (for more help use the morehelp command)
<jemfinch> @crypt jemfinch XXX
<supybot> XXU51Sc5CjpkY
<jemfinch> @errno ENOMEM
<supybot> ENOMEM (#12): Cannot allocate memory
<jemfinch> @errno 11
<supybot> EAGAIN (#11): Resource temporarily unavailable
<jemfinch> @fortune
<supybot> Q: What's the difference between Bell Labs and the Boy Scouts of America? A: The Boy Scouts have adult supervision.
<jemfinch> @progstats
<supybot> Process ID 1264 running as user "jfincher" and as group "1000" from directory "/home/jfincher/src/my/python/supybot" with the command line "src/bot.py conf/supybot.conf". Running on Python 2.3+ (#2, Aug 10 2003, 11:33:47) [GCC 3.3.1 (Debian)].
<jemfinch> @spell recind
<supybot> Possible spellings for "recind" (26 found, 26 shown): rescind, rec ind, rec-ind, resined, rebind, remind, rewind, recent, resend, rescinds, rescinder, reined, resound, rezoned, rend, rind, reascend, recited, refined, refund, relined, repined, resins, resin, rosined, reckoned.
""")
def progstats(): def progstats():
pw = pwd.getpwuid(os.getuid()) pw = pwd.getpwuid(os.getuid())
response = 'Process ID %i running as user "%s" and as group "%s" '\ response = 'Process ID %i running as user "%s" and as group "%s" '\

View File

@ -45,6 +45,33 @@ def configure(onStart, afterConnect, advanced):
from questions import expect, anything, yn from questions import expect, anything, yn
onStart.append('load Utilities') onStart.append('load Utilities')
example = utils.wrapLines("""
<jemfinch> @list Utilities
<supybot> echo, ignore, re, repr, shrink, strconcat, strjoin, strlen, strlower, strtranslate, strupper
<jemfinch> @echo foo bar baz
<supybot> foo bar baz
<jemfinch> @ignore foo bar baz
<jemfinch> (he just ignores them; it's useful to run commands in sequence without caring about 'The operation succeeded' responses.)
<jemfinch> @repr "\n"
<supybot> "\n"
<jemfinch> @eval 'x'*1000
<supybot> My response would've been too long.
<jemfinch> @shrink [eval 'x'*1000]
<supybot> 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<jemfinch> (it was shrunken to 400 characters)
<jemfinch> @strlen [shrink [eval 'x'*1000]]
<supybot> 400
<jemfinch> @strjoin + foo bar baz
<supybot> foo+bar+baz
<jemfinch> @strlower FOO BAR BAZ
<supybot> foo bar baz
<jemfinch> @strupper FOO bar baz
<supybot> FOO BAR BAZ
<jemfinch> @strtranslate abc def "abc is easy as 123"
<supybot> def is edsy ds 123
<jemfinch> @strconcat foo bar
""")
class Utilities(callbacks.Privmsg): class Utilities(callbacks.Privmsg):
def ignore(self, irc, msg, args): def ignore(self, irc, msg, args):
"""takes no arguments """takes no arguments