Software developer and new to IRC. I love it, but I have some questions.... reddit / irc ---------------------------------------------------------------------- I_hate_potato · 2016-01-21 18:08 As the title says, I'm a software guy and I recently discovered IRC. It's great.. in fact I'd love to develop a mobile app in my spare time. I've read through [RFC 2812](https://tools.ietf.org/html/rfc2812) and everything there seems straight forward enough. I even have a simple app running on my mobile. What's confusing me is that I can't seem to find documentation on some of the standard user commands that a lot of servers and apps seem to support. Users can often type */me*, */join* */help*, etc, to use the commands as defined in the protocol. You can find a whole list of "basic user commands" documented [here](http://www.ircbeginner.com/ircinfo/ircc-commands.html). These obviously have close parallels to channel commands in the RFC2812, but there is nothing (that I can see) in the protocol that specifies how the user is supposed to call these channel commands through a client. Are these user commands a common agreed upon standard? Is there a full and comprehensive list of user commands that a self respecting client is required to implement? Do these differ from server to server? One quick example: /me seems to be interpreted by severs as an action. The actual command appears to be something like: PRIVMSG #target /001ACTION /001. ---------------------------------------------------------------------- williamjacksn · 2016-01-21 18:43 *Slash commands* like */me* or */join* are client-specific and not part of the IRC protocol at all. Your client doesn't have to implement them, but they are so common that I think most IRC users expect them to be there. In your client, you have to parse the messages that the user types, and convert them to appropriate IRC protocol messages. You're doing this with just plain text anyway. For example, if the user types: What's going on? your client would convert that to: PRIVMSG #channel :What's going on? So you just have to watch for text that starts with / and convert that to a different IRC protocol message. If the user types: /join #coolchannel then you have to send this message to the server: JOIN #coolchannel ---------------------------------------------------------------------- I_hate_potato · 2016-01-21 19:01 > Slash commands like /me or /join are client-specific and not part of the IRC protocol at all. That really clears a lot of stuff up for me, thanks! It looks like I'll probably have to investigate common slash commands and implement them. Is it common for clients to allow raw text and commands to be sent to the server? ---------------------------------------------------------------------- nath_ · 2016-01-21 20:57 Yeah, usually with /raw ironically. ---------------------------------------------------------------------- CannedDeath · 2016-01-21 21:20 This isn't exactly relevant to your question, but you might also want to look up IRCv3 for some modern extensions to the protocol. You should also read RFC 1459 since it's followed more closely than 2812, which has some uncommon features that only caught on on IRCnet. There are also pages listing numerics and commands that aren't in the RFCs or the IRCv3 specs. ---------------------------------------------------------------------- I_hate_potato · 2016-01-21 21:53 Great, thanks! I'll take a look at those. I was under the impression that 2812 was newer and therefore the best one to follow... Maybe that's not correct? ---------------------------------------------------------------------- CannedDeath · 2016-01-21 22:05 There is some stuff in it like 005 RPL_ISUPPORT but a lot of other stuff like anonymous operators never caught on. There is also a lot of stuff missing from the main specifications like CTCP, DCC, and services functionality. ---------------------------------------------------------------------- DStoo · 2016-01-21 22:26 I used to IRC with telnet. It can be done. ---------------------------------------------------------------------- aperson · 2016-01-22 02:50 Also, the text starting with a slash is a convention, not a rule. Some clients allow you to start commands with arbitrary characters. ---------------------------------------------------------------------- I_hate_potato · 2016-01-22 04:34 Thanks again for your response. Looks like I came to the right place! ---------------------------------------------------------------------- atblakely · 2016-01-30 00:59 /me is actually a CTCP action ---------------------------------------------------------------------- Daniel_Oaks · 2016-03-18 07:39 One of the big issues is that neither RFC1459 or 2812 are followed to the letter. To actually get something that works, the best thing to do is use (both) of them as a rough guide, and check everything with real-world servers and other clients to find out what software really does these days. RPL_ISUPPORT isn't actually specified in 2812 either! Lots of the stuff commonly used these days also isn't really written down anywhere but in source code (though there are some people trying to write new documents/specs specifying a more sane base for IRC). I've got a specs page [here](http://ircdocs.horse/specs/) that lists some of the specs I find useful to look at when implementing stuff. Good luck! :)