Bucket
From XKCD Wiki
Contents |
[edit] Bucket Overview
Bucket has an outer shell of metal[citation needed]; within the metal is a protective layer of high density plastic[citation needed], in which may or may not reside pure HOH[citation needed]. There can only be speculation about what else the Bucket contains.[citation needed]
[edit] Guidelines
- Do not make our Bucket stupid. Any stupiding of the Bucket will get you warned, kicked, and then banned.
- Do not alter factoids that are not your own.
- Only the ops are allowed to cull stupid or useless factoids. And they will, boy howdy they will. The only exception to this rule is if the factoid is about you -- if someone writes an abusive factoid about you and the ops have not corrected it, please feel free to edit it yourself.
- Using Bucket as a surrogate asshole will result in either a revocation of your Bucket privileges or having your ass kicked from here to Pakistan. Making abusive, mean factoids about anyone else is strictly outlawed and if you are caught doing it, you will be harshly dealt with. Please tattle on anyone you see adding abusive factoids, whether in #xkcd or #bucket.
- Do not attempt to have Bucket trigger another #xkcd bot. It won't work, don't try, you'll just really annoy those who have to clean up your mess. Do it enough and actions will be taken to correct the situation.
[edit] Docs
This version of Bucket has been in channel since January 21, 2009. Bucket's sourcecode is available on github.
You teach Bucket by addressing factoids to him (prefixed with "Bucket: " or "Bucket, "). Factoids are usually in the form "X is Y" or "X are Y" (plural). If someone later says "X", she will reply "X is Y" or "X are Y". You can also say "X <reply> Y", and when someone says "X", she will reply "Y". "X <action> Y" will make Bucket respond to "X" with "/me Y".
You can also use other verbs -- "X <hates> Y". When a trigger has multiple factoids, Bucket will reply with one chosen at random. If a trigger is less than 6 characters, she will only respond if you address him ("Bucket: X") so as to not reply to "ha", "hi", "lol", and so forth.
A limited version of Bucket has joined twitter on May 6th, 2009. See http://twitter.com/xkcdbucket.
Minor notes:
You can optionally put an 'is' before the <reply>, as in "X is <reply> Y". It makes no difference but was required in the past so people do it. You can also say "X is also Y" -- this was required in the past for adding multiple factoids to a trigger so older users still do it. If there's no command in brackets (like <reply>) he will split "X is Y is Z" on the first "is", so the key will be "X" and the factoid will be "Y is Z".
Keep in mind, Bucket is not run on a client, she is his own entity. This means that slash commands (things like /me, /msg, /quit, etc) do not work. Do not put them in, you'll only anger those who have to clean up your mess. Also, escaping (using the \ to get things like question marks to go in on a factoid) is no longer needed.
In addition, Bucket now has support for inventories, per the RFC Bucket_inventory, and genders with the RFC Bucket_Gender.
[edit] Special Factoids
There are a few factoids that are used to generate replies to specific situations:
- Don't know
- What happens when a factoid is requested that has no values (I don't know anything about that.)
- Band name reply
- How a band name is suggested (<reply> "$band" would be a good name for a band.)
- Duplicate item
- Called when someone puts an item that is already in the inventory (<reply> $who: I already have $item.)
- Drops item
- What happens an item drop is forced (<action> fumbles and drops $giveitem.)
- Pickup full
- What happens when an item is handed to us, but we also have to drop something (<action> hands $who $giveitem for $item)
- List items
- A description of the current inventory (<reply> I am carrying $inventory.)
- Takes item
- Reply when an item is taken (<action> is now carrying $item.)
[edit] Variables
Variables can be defined by ops, and sometimes modified by non-ops. A variable, such as $verb, can be put in a factoid, and will be replaced by one of the values assigned each time it triggers.
Note that there is special cases to handle $verbs, $verbed, $verbing (all look up a $verb, and conjugate as needed), and for 'a $noun' and '$nouns'.
[edit] Gender Variables
The following variables can be used in factoids, and will Do The Right Thing when a factoid refers to $who or $someone.
| Subjective | Objective | Reflexive | Possessive Pronoun | Possessive Determiner | |
|---|---|---|---|---|---|
| Variable | $subjective, $heshe, $shehe, $he, $she, $they, $it | $objective, $himher, $herhim, $him, $her, $them | $reflexive, $himselfherself, $herselfhimself, $himself, $herself, $themself, $itself | $possessive, $hishers, $hershis, $hers, $theirs | $determiner $hisher, $herhis, $their |
[edit] User Commands
- Adding factoids
- X is Y
- X are Y (plural)
- X is <reply>Y
- X is <action>Y
- X <verb> Y
- For example: X <drinks> Y
- It lets you use a verb that isn't "is" or "are"!
- For example: X <drinks> Y
- Bucket, literal X
- gives the first few factoids for X
- Bucket, literal[#] X
- pages through the next factoids for X
- Bucket, X =~ /phrase/
- pick a factoid in random from the factoids of X that includes 'phrase'
- Bucket, X =~ s/a/b/
- bucket will replace the first instance of "a" he finds with "b", in the factoid called X
- Bucket, undo last
- undo the last modification made (only works if it was done by the same user who calls undo)
- $who
- when a factoid is triggered, all instances of this keyword will be substituted for by the nick of whomever triggers the factoid.
- $someone
- replaces with the nick of a random person who may or may not be in channel at the time.
- $item
- replaces with a random item in his inventory.
- $giveitem
- replaces with a random item in his inventory, and deletes that item.
- Bucket, shut up
- stop talking in channel for one minute.
- Bucket, stats
- Give some numbers on what Bucket knows and has learned. The totals update every 10 minutes or so.
- Bucket, something random
- Show a random factoid.
- Bucket, what was that?
- will respond with the factoid related to the last tidbit uttered.
- Bucket, list vars
- show all the defined variables
- Bucket, list var <var>
- show all the values of (or at least as many as would fit in one line)
- Bucket, add value <var> <value>
- add a new value <value> to the already defined <var> (only if it's unprotected)
- Bucket, remove value <var> <value>
- remove value <value> from <var> (only if it's unprotected)
- Bucket, remember <nick> <partial line>
- Look in the last few lines in channel for a line containing the partial line mentioned. If found, add it to a 'nick quotes' factoid in the form of '<nick> line that was found'. The number of lines remembered per channel is controlled by the history_size parameter.
- Bucket, I am <gender>
- Tell bucket what gender he should use to refer to you. See the gender docs for complete details.
- Bucket, what is my gender?
- Ask bucket to report your gender.
[edit] Ops only commands
- Bucket, create var <var>
- creates a new variable <var>. By default, new variables are always protected.
- Bucket, remove var <var>
- delete the variable <var>.
- Bucket, alias X => Y
- make requests for X return Y. Can be chained, cannot be looped.
- Bucket, delete X
- delete all the factoids for X.
- Bucket, forget that
- delete the most recent factoid referenced in this channel (only that answer, not the entire factoid).
- Bucket, forget #nnnnn
- delete the factoid numberd #nnnnn.
- Bucket, undo last [#channel]
- undo the last change made in channel (or in the specified channel).
- Bucket, shut up|go away
- stop talking in channel. Bucket will still respond to queries from ops.
- Bucket, shut up for (a min|a moment|a bit|a while)
- shut up for some time then come back (60 sec|1 min ± 30 sec|6 min ± 2 min|45 min ± 15 min).
- Bucket, shut up for nnn(s|m|h)
- shut up for nnn seconds, minutes or hours, then come back.
- Bucket, unshut up|come back
- resume talking in channel.
- Bucket, join #X|part #X
- guess!
- Bucket, protect X
- lock down all the factoids for X, so only ops can modify them. If X is $var, will protect the variable so only ops can add values to and remove values from it.
- Bucket, unprotect X
- opposite of protect.
- Bucket, set X Y
- Set variable X to Y. Current vars: bananas_chance, band_name, ex_to_sex, increase_mute, inventory_size, random_wait, your_mom_is.
- Bucket, get X
- Read the value of X.
- Bucket, lookup n
- Show the factoid with ID of n.
- Bucket, ignore X
- Ignore anything X says.
- Bucket, unignore X
- Stop ignoring X.
- Bucket, list ignored
- List all who are currently ignored.
- Bucket, exclude X
- Don't consider X as a valid $someone.
- Bucket, unexclude X
- Restore X to the possible list of $someone.
- Bucket, stat keys
- List all the known statistic keys.
- Bucket, stat <key>
- Get the value of that particular key.
- Bucket, restore topic [#channel]
- Ask Bucket to restore the previous topic of #channel, if possible.
- Bucket, <nick> is <gender>
- Set the gender for <nick>. See gender docs for the complete details.
[edit] Excellent Factoids
These factoids are pretty neat. If you want to trigger more than one, or see the full contents, please go to #bucket.
- "Newbie pack" should be triggered for oblivious or clueless lusers.
- "Choose Your Own Misadventure" is pretty epic. Ayup.
- "What time is it?" should give some interesting results
- "Choose me a snack" is delicious botism
- "Choose me a beer" is a work in progress
- "Botsnack" may overexcite bucket & co
- "Annoy <user>" can be entertaining, if <user> is somewhat well known (most ops)
- "Randall?" contains extensive documentation on the function and nuances of the author of this most illustrious wobcomec.
[edit] Galleria
BUCKET BUCKET[citation needed] BUCKET BUCKET BUCKET |
Why would someone ever draw something like this? WARNING:NSFW |
