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