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