chiark / gitweb /
new trouts from rjk and rejs; new flirt from rjk
[irc.git] / servus.html
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html 
3      PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
4      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
7 <head>
8 <title>Servus Documentation</title>
9 <style type="text/css">
10 body {background: white; color: black; text-align: left}
11 h1 {text-align: center; font-weight: bold; font-size: xx-large}
12 h2 {font-weight: bold; font-size: x-large}
13 h3, h4, h5, h6 {font-weight: bold; font-size: large}
14 li {list-style-type: circle}
15 hr {clear: both}
16 span.code {font-family: courier, monospace}
17 </style>
18 </head>
19
20 <body>
21 <h1>Servus Documentation</h1> 
22
23 <h2>Introduction</h2>
24 <p>Servus is one of the IRC bots on <span
25 class="code">#chiark</span>. This page documents the available
26 commands. You can get a copy of the source code by running <span
27 class="code">git-clone <a
28 href="http://www.pick.ucam.org/~matthew/irc/.git">http://www.pick.ucam.org/~matthew/irc/.git</a></span></p>
29
30 <h2>Invocation</h2>
31 <p>Servus may be invoked in-channel using either <span
32 class="code">!command</span> or <span
33 class="code">~command</span>. Alternatively, you may pass commands by
34 <span class="code">/msg</span>.
35 </p>
36
37 <h2>Commands</h2>
38
39 <ul>
40 <li><a href="#define">define</a></li>
41 <li><a href="#die">die</a></li>
42 <li><a href="#do">do</a></li>
43 <li><a href="#fish">fish</a></li>
44 <li><a href="#flirt">flirt</a></li>
45 <li><a href="#google">google</a></li>
46 <li><a href="#help">help</a></li>
47 <li><a href="#info">info</a></li>
48 <li><a href="#karma">karma</a></li>
49 <li><a href="#karmadel">karmadel</a></li>
50 <li><a href="#karmalist">karmalist</a></li>
51 <li><a href="#list">list</a></li>
52 <li><a href="#quiet">quiet</a></li>
53 <li><a href="#quit">quit</a></li>
54 <li><a href="#reload">reload</a></li>
55 <li><a href="#rot13">rot13</a></li>
56 <li><a href="#say">say</a></li>
57 <li><a href="#slash">slash</a></li>
58 <li><a href="#trout">trout</a></li>
59 <li><a href="#units">units</a></li>
60 </ul>
61
62 <hr />
63
64 <h3><a name="define">define</a></h3>
65 <p>This command returns (either on-channel or by <span
66 class="code">/msg</span>) a definition of the argument(s) of the
67 "define" command. This is done by using a "define:" query on
68 google, so the results may be a little unusual at times...</p>
69
70 <h3><a name="die">die</a></h3>
71 <p>This command must be invoked by <span class="code">/msg</span> only,
72 and is only effective if invoked by the bot's owner. The bot
73 exits.</p>
74
75 <h3><a name="do">do</a></h3>
76 <p>This command must be invoked by <span class="code">/msg</span>, and
77 is only effective if invoked by the bot's owner. The syntax is:<br />
78 <span class="code">/msg Servus do thing</span><br />...which results
79 in output to the channel of the form:<br />
80 <span class="code">* Servus/#chiark thing</span></p>
81
82 <h3><a name="fish">fish</a></h3>
83 <p>This command must be invoked by <span class="code">/msg</span>, and
84 is only effective if invoked by the bot's owner. It
85 returns some details about the internal state of the "fishpond" (a
86 simple rate-limiting feature for restricting the over-use of <span
87 class="code">trout</span>, <span class="code">flirt</span>, and <span
88 class="code">slash</span>).</p>
89
90 <h3><a name="flirt">flirt</a></h3>
91 <p>The syntax is:<br /> <span
92 class="code">flirt target</span><br /> Servus picks a flirt at random
93 from the flirts list (<span
94 class="code">/home/matthew/programming/irc/bot/flirts</span> on rapun),
95 and substitutes "target" for "%s" in the flirt line. If this command
96 is invoked by <span class="code">/msg</span>, there is a 10% chance
97 of Servus stating who invoked it by adding "(but nick is their secret
98 admirer)" to the end of the flirt. Further suggestions for flirts
99 should be submitted by email; a list of current flirts may be found
100 online at <a
101 href="flirts">http://www.pick.ucam.org/~matthew/irc/flirts</a>.</p>
102
103 <h3><a name="google">google</a></h3>
104 <p>This command returns (either on-channel or by <span
105 class="code">/msg</span>) the "I'm feeling lucky" result of google
106 searching for the argument(s) of the "google" command.</p>
107
108 <h3><a name="help">help</a></h3>
109 <p>This command returns (either on-channel or by <span
110 class="code">/msg</span>) the location of this help file.</p>
111
112 <h3><a name="info">info</a></h3>
113 <p>This command returns (either on-channel or by <span
114 class="code">/msg</span>) information about the software version
115 running, which channel the bot is on, the bot's owner, and how many
116 items have karma recorded about them</p>
117
118 <h3><a name="karma">karma</a></h3>
119 <p>The syntax is:<br />
120 <span class="code">karma target</span><br />
121 It returns (either on-channel or by <span class="code">/msg</span>)
122 the current karma value for <span class="code">target</span> or "<span
123 class="code">target has no karma set.</span>" as appropriate. Items
124 gain or lose karma as the result of commands of the form:<br />
125 <span class="code">target++</span><br />or<br />
126 <span class="code">target--</span><br />
127 Note that if issued in-channel, the initial <span
128 class="code">!</span> or <span class="code">~</span> should not be
129 included. Karma targets must be one word only.</p>
130
131 <h3><a name="karmadel">karmadel</a></h3>
132 <p>The syntax is:<br /> <span
133 class="code">karmadel target</span><br /> <span
134 class="code">target</span>'s karma entry is deleted. An error message
135 is produced if <span class="code">target</span> has no karma set.</p>
136
137 <h3><a name="karmalist">karmalist</a></h3>
138 <p><span style="font-weight: bold">Do not use this
139 command</span>. Servus has too long a list of karma items, so
140 attempting to use this command will DoS the bot (it gets temporarily
141 removed from channel for excess flooding).</p>
142
143 <h3><a name="list">list</a></h3>
144 <p>This command returns (either on-channel or by <span
145 class="code">/msg</span>) a list of the commands Servus
146 understands</p> 
147
148 <h3><a name="quiet">quiet</a></h3>
149 <p>This command prevents the use of <span
150 class="code">trout</span>, <span class="code">flirt</span>, and <span
151 class="code">slash</span> for a short period of time (and will tell
152 anyone who attempts to do so that you have invoked this command).</p> 
153
154 <h3><a name="quit">quit</a></h3>
155 <p>This command is identical to <a href="#die">die</a>.</p>
156
157 <h3><a name="reload">reload</a></h3>
158 <p>This command may only be invoked by <span class="code">/msg</span>,
159 and only by the bot's owner. It causes Servus to re-load its <span
160 class="code">trout</span>, <span class="code">flirt</span>, and <span
161 class="code">slash</span> files, and to re-stock its fishpond.</p>
162
163 <h3><a name="rot13">rot13</a></h3>
164 <p>The syntax is:<br />
165 <span class="code">rot13 some text</span><br />
166 It returns by <span class="code">/msg</span>
167 the argument rot13d (so "<span class="code">fbzr grkg</span>" in this
168 case).</p>
169
170 <h3><a name="say">say</a></h3>
171 <p>This command must be invoked by <span class="code">/msg</span>, and
172 is only effective if invoked by the bot's owner. The syntax is:<br />
173 <span class="code">/msg Servus say thing</span><br />...which results
174 in output to the channel of the form:<br />
175 <span class="code">&lt;Servus&gt; thing</span></p>
176
177 <h3><a name="slash">slash</a></h3>
178 <p>The syntax is:<br /> <span
179 class="code">slash target1 / target2 </span><br /> Servus picks a slash at random
180 from the slashes list (<span
181 class="code">/home/matthew/programming/irc/bot/slashes</span> on rapun),
182 and substitutes "target1" for the first "%s" and "target2 for the
183 second "%s" in the slash line. If this command
184 is invoked by <span class="code">/msg</span>, there is a 10% chance
185 of Servus stating who invoked it by adding "(while nick watches)" to
186 the end of the slash. Further suggestions for slashes should be
187 submitted by email; a list of current slashes may be found online at <a
188 href="slashes">http://www.pick.ucam.org/~matthew/irc/slashes</a>.</p>
189
190 <h3><a name="trout">trout</a></h3>
191 <p>The syntax is:<br /> <span
192 class="code">trout target</span><br /> Servus picks a trout at random
193 from the trouts list (<span
194 class="code">/home/matthew/programming/irc/bot/trouts</span> on rapun),
195 and substitutes "target" for "%s" in the trout line. If this command
196 is invoked by <span class="code">/msg</span>, there is a 10% chance
197 of Servus stating who invoked it by adding "(at the instigation of
198 nick)" to the end of the trout. Further suggestions for trouts should
199 be submitted by email; a list of current trouts may be found online at
200 <a href="trouts">http://www.pick.ucam.org/~matthew/irc/trouts</a>.</p>
201
202 <h3><a name="units">units</a></h3>
203 <p>The syntax is:<br /> <span
204 class="code">units x unit1 as unit2</span><br />or:<br /> <span
205 class="code">units unit1 as unit2</span><br />or:<br /> <span
206 class="code">units x unit1 as ?</span><br />or:<br /> <span
207 class="code">units unit1 as ?</span><br />
208 The first two will give the first value in terms of the second unit;
209 the latter two forms convert the first value into SI units. This
210 command is implemented by calling <span class="code">units(1)</span>.</p>
211
212 <hr />
213 <address>
214   <a href="mailto:matthew@sel.cam.ac.uk">Matthew Vernon</a><br />
215   Cambridge, England
216 </address>
217  <p>
218 <a href="http://validator.w3.org/check/referer"><img
219         src="http://www.w3.org/Icons/valid-xhtml10"
220         alt="Valid XHTML 1.0!" height="31" width="88" /></a>
221 <a href="http://jigsaw.w3.org/css-validator/check/referer">
222 <img style="width:88px;height:31px"
223        src="http://jigsaw.w3.org/css-validator/images/vcss" 
224        alt="Valid CSS!" />
225 </a>
226 </p>
227 </body>
228 </html>
229