added UNINVITE command
[ircu2.10.12-pk.git] / doc / features.txt
1 Undernet server features.
2 -------------------------
3
4 This document is supposed to list the features that undernet supports and
5 provides to clients, and which version of ircu this was added.  Additional
6 numeric replies should be added here too.
7
8 Extended Who information: (WHOX)
9  Version: unknown, but at least 2.10.07+
10
11  This is described in the file 'readme.who'
12
13 USERIP:
14  Version: unknown, but at least 2.10.07+
15
16  This works the same as userhost, but returns the IP instead, useful for
17  setting a ban on someones IP address instead of their nick.
18  usage:
19   USERIP nick[,nick...]
20  returns:
21   RPL_USERIP (307)
22   :server.name 307 target nick[*]=[+|-]user@host...
23
24 RPL_ISUPPORT:
25  version: 2.10.08+
26   
27  This sends a numeric during client signon that lists various features that
28  ircu supports.  This allows client and script writers to know what features
29  they can use, and various parameters about the irc server.  The numeric
30  used is '005' to try and maintain some semblance of compatibility with
31  dalnet which has a similar feature.  The 005 numeric may be split across
32  multiple lines if the length exceeds 512 characters.
33
34  The format is:
35   :servername 005 target feature1 feature2... :are supported by this server.
36   :servername 005 target feature200... :are supported by this server.
37
38  features are either a word describing the feature eg: 'SILENCE', or a word
39  describing the feature and an equals and a list of parameters.  
40  eg: SILENCE=15 (says that we support silence, and we support up to 15 of
41  them per user), or FOO=12,3 (says we support FOO with parameters 12 and 3)
42  for example 2.10.08 lists:
43
44  :test.undernet.org 005 test SILENCE=15 WHOX WALLCHOPS USERIP CPRIVMSG 
45    CNOTICE MODES=6 MAXCHANNELS=10 MAXBANS=30 NICKLEN=9 TOPICLEN=160
46    KICKLEN=160
47  
48  NOTE: Versions prior to 2.10.08+ use numeric 005 as part of 'MAP', so
49  005 should be /not/ be used after the server registration has occured.
50  (ie: after END_OF_MOTD has arrived).
51
52 MAP:
53  Version: unknown, but since 2.9.30 at least, updated in 2.10.08
54  
55  /map shows the servers as the server percieves them, who's connected
56  to who in a pretty display.  In version 2.10.08 it also lists the
57  amount time time it takes a message to get /from/ a server to the local
58  server - this measures the one way lag only, in 2.10.08 it also lists
59  the number of clients that are currently on that server.
60  The lag estimation is very approximate and depends on people changing nick
61  and joining channels, so the less clients on a server the less reliable the
62  lag estimation is.
63
64  Map prior to 2.10.08 uses:
65   RPL_MAP     005
66   RPL_MAPMORE 006
67   RPL_MAPEND  007
68  Map changed in 2.10.08 to allow for ISUPPORT on numeric 005, the new
69   numerics are:
70   RPL_MAP     015
71   RPL_MAPMORE 016
72   RPL_MAPEND  017
73  
74 WALLCHOPS:
75  Version: unknown, but since 2.10.07
76  
77  WALLCHOPS sends a message to all channel operators (@)'s on a channel.
78  It does /not/ require you to be op'd (@'d) to do so.  This is a feature.
79  
80  syntax:
81   WALLCHOPS #channel :message
82  or:
83   NOTICE @#channel :message
84
85  this sends:
86   :user NOTICE @#channel :message
87  to clients that are @'d on the channel.
88
89 CPRIVMSG/CNOTICE:
90  Version: unknown, but since 2.10.07
91
92  CPRIVMSG/CNOTICE are a way around target limiting in recent undernet
93  servers.  Undernet servers prevent you from sending messages to too many
94  people at once in an attempt to help cut down the amount of spam that
95  occurs on the network.  Because there are several situations where you want
96  to send messages to lots of people that are on the same channel as you
97  (autogreet's and gamebots for example) an 'escape' was made in the form
98  of CPRIVMSG/CNOTICE.  These allow you to send a privmsg/notice to a person
99  on a common channel if you are op'd (@'d) without incuring a target
100  penalty.  If you see 'Target changed too fast' messages, you should
101  probably be using these commands.
102
103  Syntax:
104   CPRIVMSG #channel nick :Message
105   CNOTICE #channel nick :Message
106  
107  Results are the same as for 'PRIVMSG' and 'NOTICE' respectively.
108
109 SILENCE:
110  Version: unknown, 2.9.32 at least.
111
112  Silence is a server side ignore.  You can /silence +hostmask or
113  /silence +nick, to add someone to your silence list, or use /silence
114  -hostmask to remove it.  /silence will list your 'silence list'.
115  you can /silence nick, to see someone elses silence list (useful for
116  helping someone).  Silence is preferably used as a last resort as it
117  tends to use server CPU time.  Undernet typically only allows 15 silences
118  per user.  in 2.10.08+ this information is available in the RPL_ISUPPORT
119  line.
120
121  Syntax:
122   SILENCE +hostmask
123   SILENCE +nick
124   SILENCE -hostmask
125   SILENCE -nick
126   SILENCE nick
127
128  reply:
129   RPL_SILELIST      217
130   RPL_ENDOFSILELIST 218
131  
132 User modes:
133  Version: various
134
135  Undernet supports these additional user modes:
136   +d: Deaf & Dumb.  This user will not get any channel traffic.  Used for
137       bots.
138   +k: This user cannot be kicked, deop'd or /kill'd.  This usermode may only
139       be set by a server, it may not be set by a user.  This is used by
140       undernet service bots (X/W/UWorld etc)
141   +g: List channel HACK:'s
142   +s: Server messages - takes a parameter of which masks to send, see
143       'snomask.html' for more details. (2.10.0+)
144
145 LIST:
146  Version: Unknown
147
148  List now takes various parameters to allow you to quickly and efficiently
149  find interesting channels.  These are:
150
151  >n or <n   show channels with less than or greater than 'n' users
152             respectively
153  C>n or C<n show channels that have existed for less than or greater than
154             'n' minutes.
155  T>n or C<n show channels that have had their topic changed in less than or 
156             greater than 'n' minutes.
157
158  Additional Numerics:
159   RPL_LISTHELP 334
160
161 Additional Topic Numerics:
162  Version: Since the dawn of time.
163
164  Topic also lists who set it and when they set it.
165
166  Additional Numerics:
167   RPL_TOPICWHOTIME 333
168  
169  Straight after the topic:
170   :server.name 333 #channel Isomer 923423442
171  where the number is seconds past 00:00 1970-01-01 that the topic was set.
172
173
174 INVITE list:
175  Version: 2.10.08+
176
177  /invite without any parameters lists which channels you have an outstanding
178  invite to (ie: an invite to a channel which you haven't joined)
179  
180  Additional Numerics:
181   RPL_INVITELIST      346
182   RPL_ENDOFINVITELIST 347
183
184 NICK change:
185  Version: Since the dawn of time.
186
187  Undernet prevents you from changing nick on a channel while your banned.
188  Undernet prevents you changing nicks more than once per 30 seconds, you
189  get one 'free' nick change if you haven't changed nick recently.
190
191  Additional Numerics:
192   RPL_BANNICKCHANGE 347
193   RPL_NICKTOOFAST   349
194
195 Target limiting:
196  Version: Recent 2.10.07ish at least.
197
198  Undernet prevents you from changing 20 targets per 2 minutes.  A target
199  is a 'Nick' or 'channel'.  This is to prevent spam.  If you message more
200  than 20 people or join more than 20 channels in two minutes then you'll
201  start getting 'Target change too fast' and will have to wait before you
202  can start talking.  See CPRIVMSG/CNOTICE above for information on how to
203  avoid this.
204
205  Additional Numerics:
206   ERR_TARGETTOOFAST 349
207
208