chiark / gitweb /
new flirts from rejs
[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.<br /> You can get a copy of the source code by running <span
27 class="code">git-clone <a
28 href="http://www.chiark.greenend.org.uk/~matthewv/irc/.git">http://www.chiark.greenend.org.uk/~matthewv/irc/.git</a></span>,
29 or via <span class="code">gitweb</span> at <a href="http://www.chiark.greenend.org.uk/ucgi/~matthewv/git/irc.git/">http://www.chiark.greenend.org.uk/ucgi/~matthewv/git/irc.git/</a>.</p>
30
31 <h2>Invocation</h2>
32 <p>Servus may be invoked in-channel using either <span
33 class="code">!command</span> or <span
34 class="code">~command</span>. Alternatively, you may pass commands by
35 <span class="code">/msg</span>.
36 </p>
37
38 <h2>Commands</h2>
39
40 <ul>
41 <li><a href="#blame">blame</a></li>
42 <li><a href="#currency">currency</a></li>
43 <li><a href="#define">define</a></li>
44 <li><a href="#die">die</a></li>
45 <li><a href="#do">do</a></li>
46 <li><a href="#fish">fish</a></li>
47 <li><a href="#flirt">flirt</a></li>
48 <li><a href="#google">google</a></li>
49 <li><a href="#help">help</a></li>
50 <li><a href="#info">info</a></li>
51 <li><a href="#karma">karma</a></li>
52 <li><a href="#karmadel">karmadel</a></li>
53 <li><a href="#karmalist">karmalist</a></li>
54 <li><a href="#list">list</a></li>
55 <li><a href="#nsfw">nsfw</a></li>
56 <li><a href="nws">nws</a></li>
57 <li><a href="#quiet">quiet</a></li>
58 <li><a href="#quit">quit</a></li>
59 <li><a href="#reload">reload</a></li>
60 <li><a href="#rot13">rot13</a></li>
61 <li><a href="#say">say</a></li>
62 <li><a href="#slash">slash</a></li>
63 <li><a href="#trout">trout</a></li>
64 <li><a href="#twit">twit</a></li>
65 <li><a href="#units">units</a></li>
66 <li><a href="#url">url</a></li>
67 </ul>
68
69 <hr />
70
71 <h3><a name="blame">blame</a></h3>
72 <p>The syntax is:<br />
73 <span class="code">blame text</span><br />or:<br />
74 <span class="code">blame #trouts text</span><br />or:<br />
75 <span class="code">blame #flirts text</span><br />or:<br />
76 <span class="code">blame #slashes text</span><br />or:<br />
77 <span class="code">blame #last</span><br />or:<br />
78 <span class="code">blame #last 2</span><br />
79 The first form will search for <span class="code">text</span> in the
80       trouts, flirts, and slashes lists, and return information on
81       when the relevant item was added, and by whom. The next three
82       forms (<span class="code">#trouts</span>,
83       <span class="code">#flirts</span>,
84       <span class="code">#slashes</span>) restrict the search to the
85       specified list. <span class="code">#last</span> is a special
86       case that searches for the last trout, flirt, or slash that
87       Servus emitted. <span class="code">#last 2</span> searches for
88       the last-but-one utterance; the last ten are remembered.</p>
89
90 <h3><a name="currency">currency</a></h3>
91 <p>The syntax is:<br />
92 <span class="code">currency curr1 as curr2</span><br />
93 This will give the first currency in terms of the second
94       currency. Currencies must be specified using their standard <a
95         href="http://en.wikipedia.org/wiki/ISO_4217">currency
96         code</a>. The currency conversion is performed using xe.com's
97       currency converter.</p>
98
99 <h3><a name="define">define</a></h3>
100 <p>This command no longer works, as google have broken 'define'-style
101       searches; it will return an error message if invoked.</p> 
102
103 <h3><a name="die">die</a></h3>
104 <p>This command must be invoked by <span class="code">/msg</span> only,
105 and is only effective if invoked by the bot's owner. The bot
106 exits.</p>
107
108 <h3><a name="do">do</a></h3>
109 <p>This command must be invoked by <span class="code">/msg</span>, and
110 is only effective if invoked by the bot's owner. The syntax is:<br />
111 <span class="code">/msg Servus do thing</span><br />...which results
112 in output to the channel of the form:<br />
113 <span class="code">* Servus/#chiark thing</span></p>
114
115 <h3><a name="fish">fish</a></h3>
116 <p>This command must be invoked by <span class="code">/msg</span>, and
117 is only effective if invoked by the bot's owner. It
118 returns some details about the internal state of the "fishpond" (a
119 simple rate-limiting feature for restricting the over-use of <span
120 class="code">trout</span>, <span class="code">flirt</span>, and <span
121 class="code">slash</span>).</p>
122
123 <h3><a name="flirt">flirt</a></h3>
124 <p>The syntax is:<br /> <span
125 class="code">flirt target</span><br /> Servus picks a flirt at random
126 from the flirts list (<span
127 class="code">/u2/matthewv/programming/irc/flirts</span> on chiark),
128 and substitutes "target" for "%s" in the flirt line. If this command
129 is invoked by <span class="code">/msg</span>, there is a 10% chance
130 of Servus stating who invoked it by adding "(but nick is their secret
131 admirer)" to the end of the flirt. Further suggestions for flirts
132 should be submitted by email; a list of current flirts may be found
133 online at <a
134 href="flirts">http://www.chiark.greenend.org.uk/~matthewv/irc/flirts</a>.</p>
135
136 <h3><a name="google">google</a></h3>
137 <p>This command returns (either on-channel or by <span
138 class="code">/msg</span>) the "I'm feeling lucky" result of google
139 searching for the argument(s) of the "google" command.</p>
140
141 <h3><a name="help">help</a></h3>
142 <p>This command returns (either on-channel or by <span
143 class="code">/msg</span>) the location of this help file.</p>
144
145 <h3><a name="info">info</a></h3>
146 <p>This command returns (either on-channel or by <span
147 class="code">/msg</span>) information about the software version
148 running, which channel the bot is on, the bot's owner, and how many
149 items have karma recorded about them</p>
150
151 <h3><a name="karma">karma</a></h3>
152 <p>The syntax is:<br />
153 <span class="code">karma target</span><br />
154 It returns (either on-channel or by <span class="code">/msg</span>)
155 the current karma value for <span class="code">target</span> or "<span
156 class="code">target has no karma set.</span>" as appropriate. Items
157 gain or lose karma as the result of commands of the form:<br />
158 <span class="code">target++</span><br />or<br />
159 <span class="code">target--</span><br />
160 Note that if issued in-channel, the initial <span
161 class="code">!</span> or <span class="code">~</span> should not be
162 included. Karma targets must be one word only.</p>
163
164 <h3><a name="karmadel">karmadel</a></h3>
165 <p>The syntax is:<br /> <span
166 class="code">karmadel target</span><br /> <span
167 class="code">target</span>'s karma entry is deleted. An error message
168 is produced if <span class="code">target</span> has no karma set.</p>
169
170 <h3><a name="karmalist">karmalist</a></h3>
171 <p><span style="font-weight: bold">Do not use this
172 command</span>. Servus has too long a list of karma items, so
173 attempting to use this command will DoS the bot (it gets temporarily
174 removed from channel for excess flooding).</p>
175
176 <h3><a name="list">list</a></h3>
177 <p>This command returns (either on-channel or by <span
178 class="code">/msg</span>) a list of the commands Servus
179 understands</p> 
180
181 <h3><a name="nsfw">nsfw</a></h3>
182 <p>This command is the same as <a href="#url">url</a>, only you should
183 use it for URLs that are not work-safe. Servus will replace the "http"
184 in your URL with "nsfw", before passing it to <a href="#url">url</a>.</p>
185
186 <h3><a name="nws">nws</a></h3>
187 <p>This is an alias for <a href="nsfw">nsfw</a>.</p>
188
189 <h3><a name="quiet">quiet</a></h3>
190 <p>This command prevents the use of <span
191 class="code">trout</span>, <span class="code">flirt</span>, and <span
192 class="code">slash</span> for a short period of time (and will tell
193 anyone who attempts to do so that you have invoked this command).</p> 
194
195 <h3><a name="quit">quit</a></h3>
196 <p>This command is identical to <a href="#die">die</a>.</p>
197
198 <h3><a name="reload">reload</a></h3>
199 <p>This command may only be invoked by <span class="code">/msg</span>,
200 and only by the bot's owner. It causes Servus to re-load its <span
201 class="code">trout</span>, <span class="code">flirt</span>, and <span
202 class="code">slash</span> files, and to re-stock its fishpond.</p>
203
204 <h3><a name="rot13">rot13</a></h3>
205 <p>The syntax is:<br />
206 <span class="code">rot13 some text</span><br />
207 It returns by <span class="code">/msg</span>
208 the argument rot13d (so "<span class="code">fbzr grkg</span>" in this
209 case).</p>
210
211 <h3><a name="say">say</a></h3>
212 <p>This command must be invoked by <span class="code">/msg</span>, and
213 is only effective if invoked by the bot's owner. The syntax is:<br />
214 <span class="code">/msg Servus say thing</span><br />...which results
215 in output to the channel of the form:<br />
216 <span class="code">&lt;Servus&gt; thing</span></p>
217
218 <h3><a name="slash">slash</a></h3>
219 <p>The syntax is:<br /> <span
220 class="code">slash target1 / target2 </span><br /> Servus picks a slash at random
221 from the slashes list (<span
222 class="code">/u2/matthewv/programming/irc/slashes</span> on chiark),
223 and substitutes "target1" for the first "%s" and "target2" for the
224 second "%s" in the slash line. If this command
225 is invoked by <span class="code">/msg</span>, there is a 10% chance
226 of Servus stating who invoked it by adding "(while nick watches)" to
227 the end of the slash. Further suggestions for slashes should be
228 submitted by email; a list of current slashes may be found online at <a
229 href="slashes">http://www.chiark.greenend.org.uk/~matthewv/irc/slashes</a>.</p>
230
231 <h3><a name="trout">trout</a></h3>
232 <p>The syntax is:<br /> <span
233 class="code">trout target</span><br /> Servus picks a trout at random
234 from the trouts list (<span
235 class="code">/u2/matthewv/programming/irc/trouts</span> on chiark),
236 and substitutes "target" for "%s" in the trout line. If this command
237 is invoked by <span class="code">/msg</span>, there is a 10% chance
238 of Servus stating who invoked it by adding "(at the instigation of
239 nick)" to the end of the trout. Further suggestions for trouts should
240 be submitted by email; a list of current trouts may be found online at
241 <a href="trouts">http://www.chiark.greenend.org.uk/~matthewv/irc/trouts</a>.</p>
242
243 <h3><a name="twit">twit</a></h3>
244 <p>The syntax is:<br /><span
245 class="code">twit twitter-url</span><br /> Servus returns (either on-channel or by <span
246 class="code">/msg</span>) the content
247 of the tweet and the twitter user who posted it.</p>
248
249 <h3><a name="units">units</a></h3>
250 <p>The syntax is:<br /> <span
251 class="code">units x unit1 as unit2</span><br />or:<br /> <span
252 class="code">units unit1 as unit2</span><br />or:<br /> <span
253 class="code">units x unit1 as ?</span><br />or:<br /> <span
254 class="code">units unit1 as ?</span><br />
255 The first two will give the first value in terms of the second unit;
256 the latter two forms convert the first value into SI units. This
257 command is implemented by calling <span class="code">units(1)</span>.</p>
258
259 <h3><a name="url">url</a></h3>
260 <p>Servus now tracks URLs pasted into <span
261 class="code">#chiark</span>, and will comment if you post a duplicate
262 URL. The <span class="code">url</span> command provides a way for you
263 to check if a URL has been posted before (if not, Servus posts it on
264 your behalf). The syntax is:<br /> <span class="code">/msg Servus url
265 http://some.url</span><br /> Servus will either paste the URL into
266 channel, or <span class="code">/msg</span> you to tell you it was a
267 duplicate; in the latter case, the URL will be sent to <span
268 class="code">#urls</span>. Although you can use this command
269 in-channel (and get a response by <span class="code">/msg </span>),
270 this is discouraged. Servus also understands <span
271 class="code">nsfw://</span> and <span class="code">nsfws://</span>
272 URLs, and knows they are an obfuscation of the relevant <span
273 class="code">http://</span> or <span class="code">https://</span> URL
274 for URLs that are not work-safe. You can make your firefox understand
275 <span class="code">nsfw://</span> URLS by visiting <a
276 href="http://www.chiark.greenend.org.uk/~owend/free/nsfw/">http://www.chiark.greenend.org.uk/~owend/free/nsfw/</a>.</p>
277
278 <hr />
279 <address>
280   <a href="mailto:matthewv@chiark.greenend.org.uk">Matthew Vernon</a><br />
281   Cambridge, England
282 </address>
283  <p>
284 <a href="http://validator.w3.org/check/referer"><img
285         src="http://www.w3.org/Icons/valid-xhtml10"
286         alt="Valid XHTML 1.0!" height="31" width="88" /></a>
287 <a href="http://jigsaw.w3.org/css-validator/check/referer">
288 <img style="width:88px;height:31px"
289        src="http://jigsaw.w3.org/css-validator/images/vcss" 
290        alt="Valid CSS!" />
291 </a>
292 </p>
293 </body>
294 </html>
295