Fixed typos and grammar errors

This commit is contained in:
Daniel DiPaolo 2003-09-14 21:34:39 +00:00
parent 679b8fbaee
commit 894b213fa1
2 changed files with 23 additions and 22 deletions

View File

@ -30,7 +30,7 @@ based. But you'll have to do that yourself after this wizard is
finished :) finished :)
Do you want a command-based plugin or a regexp-based plugin? [command/ Do you want a command-based plugin or a regexp-based plugin? [command/
regexp] command regexp] command
Sometimes you't want a callback to be threaded. If its methods Sometimes you'll want a callback to be threaded. If its methods
(command or regexp-based, either one) will take a signficant amount (command or regexp-based, either one) will take a signficant amount
of time to run, you'll want to thread them so they don't block of time to run, you'll want to thread them so they don't block
the entire bot. the entire bot.
@ -127,9 +127,10 @@ we go ahead and add the import to the template.
Then you see a "configure" function. This the function that's called Then you see a "configure" function. This the function that's called
when users decide to add your module in scripts/setup.py. You'll note when users decide to add your module in scripts/setup.py. You'll note
that by default it simply adds "load Example" at the bottom. For many that by default it simply adds "load Example" (where 'Example' is the name you
plugins this is all you need; for more complex plugins, you might need provided as the name of your plugin, so in our case it is "load Random") at
to ask questions and add commands based on the answers. the bottom. For many plugins this is all you need; for more complex plugins,
you might need to ask questions and add commands based on the answers.
Then there's an example string. It's simply an example of usage of Then there's an example string. It's simply an example of usage of
the plugin in practice. scripts/setup.py offers to show the user an the plugin in practice. scripts/setup.py offers to show the user an
@ -186,7 +187,7 @@ And we save two lines of code and make our code a little more clear :)
Now that we have an RNG, we need some way to get random numbers. So Now that we have an RNG, we need some way to get random numbers. So
first, we'll add a command that simply gets the next random number and first, we'll add a command that simply gets the next random number and
gives it back to the user. It takes no arguments, of course (what gives it back to the user. It takes no arguments, of course (what
would you give it?) Here's the command, and I'll follow that with the would you give it?). Here's the command, and I'll follow that with the
explanation of what each part means. explanation of what each part means.
def random(self, irc, msg, args): def random(self, irc, msg, args):
@ -205,7 +206,7 @@ what all that *means*. We'll start with the def statement:
What that does is define a command "random". You can call it by What that does is define a command "random". You can call it by
saying "@random" (or whatever prefix character your specific bot saying "@random" (or whatever prefix character your specific bot
uses). The arguments are a bit less obvious. Self is self-evident uses). The arguments are a bit less obvious. Self is self-evident
(hah!). Irc is the Irc object passed to the command; Msg is the (hah!). irc is the Irc object passed to the command; msg is the
original IrcMsg object. But you're really not going to have to deal original IrcMsg object. But you're really not going to have to deal
with either of these too much (with the exception of calling irc.reply with either of these too much (with the exception of calling irc.reply
or irc.error). What you're *really* interested in is the args arg. or irc.error). What you're *really* interested in is the args arg.
@ -215,7 +216,7 @@ commands, or handling double quoted strings, or splitting on
whitespace -- the work has already been done for you). You can read whitespace -- the work has already been done for you). You can read
about the Irc object in irclib.py (you won't find .reply or .error about the Irc object in irclib.py (you won't find .reply or .error
there, though, because you're actually getting an IrcObjectProxy, but there, though, because you're actually getting an IrcObjectProxy, but
that's beyond the level we wanna describe here :)). You can read that's beyond the level we want to describe here :)). You can read
about the msg object in ircmsgs.py. But again, aside from calling about the msg object in ircmsgs.py. But again, aside from calling
irc.reply or irc.error, you'll very rarely be using these objects. irc.reply or irc.error, you'll very rarely be using these objects.
@ -234,7 +235,7 @@ underscore or an uppercase letter in it :))
You'll also note that the docstring is odd. The wonderful thing about You'll also note that the docstring is odd. The wonderful thing about
the supybot framework is that it's easy to write complete commands the supybot framework is that it's easy to write complete commands
with help and everything: the docstring *IS* the help! Given the with help and everything: the docstring *IS* the help! Given the
docstring, this is what a supybot does: above docstring, this is what a supybot does:
<angryman> jemfinch: random takes no arguments (for more help <angryman> jemfinch: random takes no arguments (for more help
use the morehelp command) use the morehelp command)
@ -242,14 +243,14 @@ docstring, this is what a supybot does:
<angryman> jemfinch: Returns the next random number from the <angryman> jemfinch: Returns the next random number from the
current random number generator. current random number generator.
Help <command> replies with the first line of the command's docstring; 'help <command>' replies with the command name followed by the first line of
there should be a blank line following, and then morehelp <command> the command's docstring; there should be a blank line following, and then
will reply with the remainder of the docstring. So that explains the 'morehelp <command>' will reply with the remainder of the docstring. So that
docstring. Now on to the actual body of the function: explains the docstring. Now on to the actual body of the function:
irc.reply(msg, str(self.rng.random())) irc.reply(msg, str(self.rng.random()))
Irc.reply takes two arguments, an IrcMsg (like the one passed into irc.reply takes two arguments, an IrcMsg (like the one passed into
your function) and a string. The IrcMsg is used to determine who the your function) and a string. The IrcMsg is used to determine who the
reply should go to and whether or not it should be sent in private reply should go to and whether or not it should be sent in private
message (commands sent in private are replied to in private). The message (commands sent in private are replied to in private). The
@ -300,7 +301,7 @@ single value; more arguments are returned in a tuple/list). Yes, we
could've just said "seed = args[0]" and gotten the first argument, but could've just said "seed = args[0]" and gotten the first argument, but
what if the user didn't pass us an argument at all? Then we've got to what if the user didn't pass us an argument at all? Then we've got to
catch the IndexError from args[0] and complain to the user about it. catch the IndexError from args[0] and complain to the user about it.
Privmsgs.getArgs, on the other hand, handles all that for us. If the privmsgs.getArgs, on the other hand, handles all that for us. If the
user didn't give us enough arguments, it'll reply with the help string user didn't give us enough arguments, it'll reply with the help string
for the command, thus saving us the effort. for the command, thus saving us the effort.
@ -435,7 +436,7 @@ There's a lot of stuff you haven't seen before in there. The most
important, though, is the first thing you'll notice that's different: important, though, is the first thing you'll notice that's different:
the privmsg.getArgs call. Here we're offering a default argument in the privmsg.getArgs call. Here we're offering a default argument in
case the user is too lazy to supply one (or just wants a nice, case the user is too lazy to supply one (or just wants a nice,
standard six-sided die :)) Privmsgs.getArgs supports that; we'll just standard six-sided die :)) privmsgs.getArgs supports that; we'll just
tell it that we don't *need* any arguments (via needed=0) and that we tell it that we don't *need* any arguments (via needed=0) and that we
*might like* one argument (optional=1). If the user provides an *might like* one argument (optional=1). If the user provides an
argument, we'll get it -- if they don't, we'll just get an empty argument, we'll get it -- if they don't, we'll just get an empty
@ -454,11 +455,11 @@ should reply to; if the message was originally sent to a channel,
we'll reply to there, if it was originally sent to us privately, we'll we'll reply to there, if it was originally sent to us privately, we'll
reply in private. reply in private.
At the end, you might be surprised by the "raise At the end, you might be surprised by the "raise callbacks.CannotNest".
callbacks.CannotNest". That's used simply because at the moment you That's used simply because at the moment you can't nest actions (just like
can't nest actions (just like you can't nest anything that doesn't go you can't nest anything that doesn't go through irc.reply). That raise just
through irc.reply). That raise just makes sure the user finds this makes sure the user finds this out if he tries to nest this like "@rot13
out if he tries to nest this like "@rot13 [diceroll]". [diceroll]".
So that's our plugin. 5 commands, each building in complexity. You So that's our plugin. 5 commands, each building in complexity. You
should now be able to write most anything you want to do in Supybot. should now be able to write most anything you want to do in Supybot.
@ -500,7 +501,7 @@ def configure(onStart, afterConnect, advanced):
onStart.append('seed %s' % seed) onStart.append('seed %s' % seed)
As you can see, what the questions module does is fairly self-evident: As you can see, what the questions module does is fairly self-evident:
yn returns either 'y' or 'n'; something returns *something* (but yn returns either 'y' or 'n'; something returns *something* (but not
nothing; for nothing, you'd want anything). So basically we ask some nothing; for nothing, you'd want anything). So basically we ask some
questions until we get a good seed. Then we do this questions until we get a good seed. Then we do this
"onStart.append('seed %s' % seed)" doohickey. onStart is a list of "onStart.append('seed %s' % seed)" doohickey. onStart is a list of

View File

@ -101,7 +101,7 @@ if __name__ == '__main__':
className = 'callbacks.Privmsg' className = 'callbacks.Privmsg'
else: else:
className = 'callbacks.PrivmsgRegexp' className = 'callbacks.PrivmsgRegexp'
print 'Sometimes you\'t want a callback to be threaded. If its methods' print 'Sometimes you\'ll want a callback to be threaded. If its methods'
print '(command or regexp-based, either one) will take a signficant amount' print '(command or regexp-based, either one) will take a signficant amount'
print 'of time to run, you\'ll want to thread them so they don\'t block' print 'of time to run, you\'ll want to thread them so they don\'t block'
print 'the entire bot.' print 'the entire bot.'