mwbot

From MediaWiki.org

Jump to: navigation, search

mwbot is an IRC bot written by amidaniel to help on the #mediawiki support channel on the freenode IRC network. It also has its own channel, #mwbot. Source code is available at http://amidaniel.com/viewvc/trunk/MWBot/src/com/amidaniel/mwbot/?root=svn .

The (more or less) current list of factoids can be viewed at http://toolserver.org/~amidaniel/botbrain.html - see the @dump command below.

[edit] Quick help

!foo
displays factoid foo
!foo | quux
displays factoid foo, addressing the response to user quux
!foo is bar
defines factoid foo to be bar
!foo alias bar
defines foo as an alias for the factoid bar
!foo del
deletes factoid foo
@search foo.*
searches for the regular expression foo.* in all factoids
@trust host
trusts users on host, especially useful with IRC cloaks; host may be a regular expression
@untrust host
removes trust for users on host; must match an entry made with trust exactly
@trusted
lists trusted hosts
@dump
Dumps out the contents of mwbot's brain to an html file for browsing, see botbrain.

[edit] Parameters in factoids

Factoids can accept up to nine parameters, passed as space-delimited "arguments" to the factoid.

!foo is Hello, `1!
When expanded using "!foo bar", this will produce "Hello, bar!".
!foo is Hello, `e1!
URL-encodes the first parameter it receives. When expanded using "Hello, $wgGroupPermissions!", it produces "Hello, %24wgGroupPermissions!". Note that the parameters are encoded as UTF-8 which quite likely won't work for a lot of folks over IRC (may need to be changed).

Factoids can also contain other factoids "subst'ed" within them, using the following syntax:

!foo is Bar says `!bar``.

Any parameters of the form "`1" are expanded before internal factoids are expanded. Internal factoids can also accept parameters, for instance:

!foo is When you call bar with `1, you get `!bar `1``.

Sort of disgusting syntax, but it was easy to implement and hopefully not too confusing for the user :) See "!man" and "!info" for more realistic examples of how parameters are used.


[edit] Feature requests

Brainstorming sections. No guarantee anyone will ever look at this.

  • Support private messages
    Probably not useful, given #mwbot. —Pathoschild 11:37:10, 12 November 2007 (UTC)
    even there it meight get annoying to have someone play with the bot. Also, you have to know about it. Private messages is more intuitive, at least to IRC people. -- Duesentrieb 17:00, 12 November 2007 (UTC)
    Done. AmiDaniel 09:40, 18 December 2007 (UTC)
  • Automatically search when no exact match is found
    Done. AmiDaniel 09:16, 18 December 2007 (UTC)
  • Automatically trust cloaked user addresses, depending on pattern (something like ^(wikipedia|wikimedia|mediawiki|wikia/))
    Probably a bad idea; cloaks are given out rather liberally. —Pathoschild 11:37:10, 12 November 2007 (UTC)
    dude, we are a wiki place :) Seriously, some channels even have the bot accept factoids from anyone. -- Duesentrieb 17:00, 12 November 2007 (UTC)
    Yes, but those bots are usually for play. It would suck to have someone overwrite your detailed explanation of a fix with "LOLZ BURN", unless we implement a history feature. ;) —Pathoschild 19:32:54, 15 November 2007 (UTC)
    fair enough. point taken -- Duesentrieb 19:51, 15 November 2007 (UTC)
    Meh, implemented. Will now match regexes. AmiDaniel 09:29, 15 December 2007 (UTC)
  • magic factoids for config settings and manual pages: !$wgXXX -> http://www.mediawiki.org/wiki/Manual:$wgXXX
    Done with parameter substitution. Try "!man $wgXX". AmiDaniel 09:29, 15 December 2007 (UTC)
  • List aliases. MinuteElectron 11:45, 18 November 2007 (UTC)
    Done with @dump. AmiDaniel 09:09, 18 December 2007 (UTC)
    Please sort alphabetically -- Duesentrieb 21:59, 18 December 2007 (UTC)
    Done. AmiDaniel 05:47, 12 January 2008 (UTC)
  • People not on trusted list cannot use any commands (inlcluding !factoid). --Skizzerz talk 00:51, 21 December 2007 (UTC)
    Worksforme. Catch me online sometime to demo this, but I'm unable to reproduce.
  • Trim whitespace from the end of commands so that clients which leave whitespace after tab-completions do not cause responses such as "person : factoid" as opposed to "person: factoid". MinuteElectron 14:52, 2 January 2008 (UTC)
    Done. AmiDaniel 05:52, 12 January 2008 (UTC)
  • !test foo | amidaniel produces:
This is a nifty test of niftiness ... http://www.mediawiki.org/wiki/Extension:foo << lookie, isn't that cool? :)

instead of

amidaniel: This is a nifty test of niftiness ... http://www.mediawiki.org/wiki/Extension:foo << lookie, isn't that cool? :) --MZMcBride 08:45, 6 January 2008 (UTC)
  • Fixed. AmiDaniel 05:47, 12 January 2008 (UTC)
  • Nickname changes, joins and leaves don't appear in the channel log --Catrope 13:59, 10 January 2008 (UTC)
    Intentionally not included in logs for privacy reasons. AmiDaniel 05:47, 12 January 2008 (UTC)
  • Set-up auto-rejoin feature if the bot is kicked for a netsplit or whatever. --MZMcBride 00:47, 22 February 2008 (UTC)
  • Add a command to send the list of keywords as a private message to the requester, and mention the command in !help. 89.142.193.104 15:42, 6 March 2008 (UTC)
Personal tools