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