.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .if !\nF .nr F 0 .if \nF>0 \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Bot::BasicBot::Pluggable::Module::Infobot 3pm" .TH Bot::BasicBot::Pluggable::Module::Infobot 3pm "2017-08-27" "perl v5.26.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Bot::BasicBot::Pluggable::Module::Infobot \- infobot clone redone in B::B::P. .SH "VERSION" .IX Header "VERSION" version 1.20 .SH "SYNOPSIS" .IX Header "SYNOPSIS" Does infobot things \- basically remembers and returns factoids. Will ask another infobot about factoids that it doesn't know about, if you want. Due to persistent heckling from the peanut gallery, does things pretty much exactly like the classic infobot, even when they're not necessarily that useful (for example, saying \*(L"Okay.\*(R" rather than \*(L"\s-1OK,\s0 water is wet.\*(R"). Further infobot backwards compatibility is available through additional packages such as Bot::BasicBot::Pluggable::Module::Foldoc. .SH "IRC USAGE" .IX Header "IRC USAGE" The following examples assume you're running Infobot with its defaults settings, which require the bot to be addressed before learning factoids or answering queries. Modify these settings with the Vars below. .PP .Vb 10 \& bot: water is wet. \& user: okay. \& bot: water? \& user: water is wet. \& bot: water is also blue. \& user: okay. \& bot: water? \& user: water is wet or blue. \& bot: no, water is translucent. \& user: okay. \& bot: water? \& user: water is translucent. \& bot: forget water. \& user: I forgot about water. \& bot: water? \& user: No clue. Sorry. .Ve .PP A fact that begins with \*(L"\*(R" will have the \*(L" is\*(R" stripped: .PP .Vb 4 \& bot: what happen is somebody set us up the bomb. \& user: okay. \& bot: what happen? \& user: somebody set us up the bomb. .Ve .PP A fact that begins \*(L"\*(R" will be emoted as a response: .PP .Vb 4 \& bot: be funny is dances silly. \& user: okay. \& bot: be funny? \& * bot dances silly. .Ve .PP Pipes (\*(L"|\*(R") indicate different possible answers, picked at random: .PP .Vb 6 \& bot: dice is one|two|three|four|five|six \& user: okay. \& bot: dice? \& user: two. \& bot: dice? \& user: four. .Ve .PP You can also use \s-1RSS\s0 feeds as a response: .PP .Vb 4 \& bot: jerakeen.org is . \& user: okay. \& bot: jerakeen.org? \& user: jerakeen.org is ; ; etc.... .Ve .PP You can also ask the bot to learn a factoid from another bot, as follows: .PP .Vb 4 \& bot: ask bot2 about fact. \& user: asking bot2 about fact... \& bot: fact? \& user: fact is very boring. .Ve .PP Finally, you can privmsg the bot to search for particular facts: .PP .Vb 2 \& search for options. \& I know about \*(Aqoptions indexes\*(Aq, \*(Aqcharsetoptions override\*(Aq, etc.... .Ve .SH "METHODS" .IX Header "METHODS" .SH "VARS" .IX Header "VARS" .IP "min_length" 4 .IX Item "min_length" Defaults to 3; the minimum length a factoid, or inquiry, must be before recognizing it. .IP "max_length" 4 .IX Item "max_length" Defaults to 25; the maximum length a factoid, or inquiry, can be before ignoring it. .IP "num_results" 4 .IX Item "num_results" Defaults to 20; the number of facts to return for \*(L"search for \*(R" privmsg. .IP "passive_answer" 4 .IX Item "passive_answer" Defaults to 0; when enabled, the bot will answer factoids without being addressed. .IP "passive_learn" 4 .IX Item "passive_learn" Defaults to 0; when enabled, the bot will learn factoids without being addressed. .IP "require_question" 4 .IX Item "require_question" Defaults to 1; determines whether the bot requires a question mark before responding to a factoid. When enabled, the question mark is required (ie. \*(L"water?\*(R"). When disabled, the question mark is entirely optional (ie. \*(L"water\*(R" would also produce a response). .IP "stopwords" 4 .IX Item "stopwords" A comma\-, space\-, or pipe\- separated list of words the bot should not learn or answer. This prevents such insanity as the learning of \*(L"where is the store?\*(R" and \&\*(L"how is your mother?\*(R" The default list of stopwords contains \*(L"here\*(R", \*(L"how\*(R", \*(L"it\*(R", \&\*(L"something\*(R", \*(L"that\*(R", \*(L"this\*(R", \*(L"what\*(R", \*(L"when\*(R", \*(L"where\*(R", \*(L"which\*(R", \*(L"who\*(R" and \*(L"why\*(R"). .IP "unknown_responses" 4 .IX Item "unknown_responses" A pipe-separated list of responses the bot will randomly choose from when it doesn't know the answer to a question. The default list of response contains \&\*(L"Dunno.\*(R", \*(L"I give up.\*(R", \*(L"I have no idea.\*(R", \*(L"No clue. Sorry.\*(R", \*(L"Search me, bub.\*(R", and \*(L"Sorry, I don't know.\*(R" .IP "allow_searching" 4 .IX Item "allow_searching" Defaults to 0. .Sp Searching on large factoid lists is ... problematic. .IP "http_timeout" 4 .IX Item "http_timeout" Time in seconds for an http request to timeout. When this value is set to a very high value, a slow site can disconnect a bot by blocking it. Defaults to 10. .IP "rss_items" 4 .IX Item "rss_items" Maximal numbers of items returns when using \s-1RSS\s0 feeds. Defaults to 5. .SH "BUGS" .IX Header "BUGS" \&\*(L"is also\*(R" doesn't work on s (ie. \*(L" cheetahs! or monkies.\*(R") .PP \&\*(L"is also\*(R" doesn't work on s (same as the previous bug, hobo.) .PP The pipe syntax for random replies doesn't actually work. At all. Um. .PP We should probably make a \*(L"choose_random_response\*(R" function. .PP \&\*(L"?\*(R" fails, due to removal of name from \f(CW$mess\fR\->body. .PP \&\*(L"ask\*(R" syntax doesn't work in a private message. .PP The tab stops are set to 2, not 4. \s-1OHMYGOD.\s0 .PP If a \*(L"search\*(R" fails, the bot doesn't tell you. .PP \&\*(L"search\*(R" is case-sensitive. .PP If Title module is loaded, factoids don't work cos of told/fallback. .SH "REQUIREMENTS" .IX Header "REQUIREMENTS" \&\s-1URI\s0 .PP LWP::Simple .PP XML::Feed .SH "AUTHOR" .IX Header "AUTHOR" Mario Domgoergen .PP This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.