This will be a chat tutorial to explain what /raw can do, other than bad data and bad msg. Most of the /raw commands are pretty useless, for a normal chatter in a web browser, but there's a few handy things you can do with /raw. At the very least, you will learn what /raw commands do, and impress your friends.
Anything in bold is text you can change or modify, depending on what you want to have the /raw command do. I'll put what the normal text or command is in blockquotes under each /raw command. And remember, the \n's are important. If you leave one off, you will be disconnected. \n is basically a new line. So, for some things, you can add a \n to make a line break, for sending text to a channel, for example.
A [bad msg] is when you send a /raw packet that can't be understood, or you used characters that are not supported. So it's close, but not quite formatted right. A [bad data] is when the /raw packed just can't be used, or doesn't exist.
I learned a lot of this from the botdom dAmn wiki.
/raw join chat:channelname\n
This is the same as /join channelname./raw part chat:channelname\n
This is the same as /part channelname./raw join pchat:user1:user2\n
This is the same as /chat username (for those who use either SuperdAmn or dAx). So this is useful if you want to join a private chat, but you or the other person doesn't have the right script. Just remember, both you and the person you want to chat with need to enter the command, and user1 and user2 need to be in alphabetical order. So if ~billybob wanted to chat with ~marryjane, both people would need to type: /raw join pchat:billybob:marryjane\n/raw send chat:channelname\n\nmsg main\n\nText you want to send
This is the same as sending a normal message. So if you wanted to say: Hi guys, in #devart, you would type: /raw send chat:devart\n\nmsg main\n\nHi guys/raw send chat:channelname\n\naction main\n\nAction message
(There's a secret trick, where if you type this command and replace channelname with a channel you founded, and are not in that channel, you can talk in that room, even though you are not joined there. Fun little trick to freak people out. It works for main msg's, action messages, and npmsg messages)
This is the same as typing /me Action message. So if you wanted to say: * username is sleepy, in #devart, you would type: /raw send chat:devart\n\naction main\n\nis sleepy/raw send chat:channelname\n\nnpmsg main\n\nNon parsed message
This is the same as holding shift as you press enter, to have the message not be parsed. So if you wanted to explain how to type in bold, in #devart, you would type: /raw send chat:devart\n\nnpmsg main\n\nThis is how you make things <b>bold</b>/raw get chat:channelname\np=title\n
This is a bit useless, but it will tell you who set the title of a room. If you use SuperdAmn or dAx, this is sort of like /gettitle, except you won't get the date the title was set, or the text of the title. It will simply tell you who last set the title. It may look like the title setter just set the title, but nothing gets set. It simply tells you who set the title./raw get chat:channelname\np=topic\n
This is the same as the last one, only it's to see who set the topic./raw get chat:channelname\np=members\n
This one is pretty pointless. Basically, all it does is say: "Get me the list of people in this room". But that happens automatically when people join or part, so it won't actually do anything./raw get chat:channelname\np=privclasses\n
Like the members one, all this does is get the privclasses of a room. But since it does this when you enter the room, it's pretty pointless./raw pong\n
Another pretty pointless command. All this does is ping the chat server, and tell them you're there. This happens randomly while you're on, but you can do it manually. For instance, if you want to check and see if you timed out, you can do a /raw pong\n and if you don't timeout, you're still connected and can chat./raw kick chat:channelname\nu=username\n\nkick reason
This is how you would /kick username. If you wanted to kick ~billybob from #somechannel, with a kick reason of You're breaking the rules!, you would type: /raw kick chat:somechannel\nu=billybob\n\nYou're breaking the rules! You can leave off the last \nkick reason if you don't want there to be a kick reason. So to kick them without a kick reason, you would type: /raw kick chat:somechannel\nu=billybob\n/raw send chat:channelname\n\nban username\n
This is the same as /ban username. So if you wanted to ban ~marryjane from #somechannel, you would type: /raw send chat:somechannel\n\nban marryjane\n/raw send chat:channelname\n\nunban username\n
This is the same as /unban username./raw send chat:channelname\n\npromote username\n\nPrivclassName
This is the same as /promote username PrivclassName. The PrivclassName is optional, and without it, that person will just be promoted up one privclass. So, to promote ~marryjane to Moderators in #somechannel, you would type: /raw send chat:somechannel\n\npromote marryjane\n\nModerators. If you just wanted to promote her up one channel, you could simply type: /raw send chat:somechannel\n\npromote marryjane\n/raw send chat:channelname\n\ndemote username\n\nPrivclassName
This is the same as /demote username PrivclassName. It works the same as promoting does./raw set chat:channelname\np=title\n\nTitle text
This is the same as /title Title text. So to set the title of #somechannel to: Hi :) Be sure to read the rules first. You would type: /raw set chat:somechannel\np=title\n\nHi :) Be sure to read the rules first. You can also leave off the last \nTitle text if you want to completely remove the title./raw set chat:channelname\np=topic\n\nTopic text
This is the same as /topic Topic text. This works the same way as setting the title./raw get login:username\np=info\n
This is the same as /whois username/raw kill login:username\n\nKill reason
This is the same as /kill username Kill reason. Although it is only available to people that have MN@ privs on the chat network. The \nKill reason is optional./raw send chat:channelname\n\nadmin\n\nshow privclass
This is the same as /admin show privclass./raw send chat:channelname\n\nadmin\n\nshow users
This is the same as /admin show users./raw send chat:channelname\n\nadmin\n\nshowverbose privclass
This is the same as /admin showverbose privclass. You may not be familiar with showverbose, but it will show you the complete privileges a channel has set on the privclasses. Also, it will show you the default privclass. One privclass will have default=1, and that indicates the default privclass of that room./raw send chat:channelname\n\nadmin\n\ncreate privclass PrivclassName privileges
This is the same as /admin create privclass PrivclassName privileges. So if you wanted to create the privclass CoolFolks in #somechannel, with an order of 55 the -shownotice privilege, you would type: /raw send chat:somechannel\n\nadmin\n\ncreate privclass CoolFolks order=55 -shownotice./raw send chat:channelname\n\nadmin\n\nremove privclass PrivclassName
This is the same as /admin remove privclass PrivclassName./raw send chat:channelname\n\nadmin\n\nmove users OnePrivclass to AnotherPrivclass
This is the same as /admin move users OnePrivclass to AnotherPrivclass. So if you wanted to move all of the users of #somechannel in the Operators privclass to the Members privclass, you would type: /raw send chat:somechannel\n\nadmin\n\nmove users Operators to Members./raw send chat:channelname\n\nadmin\n\nrename privclass OldName to NewName
This is the same as /admin rename privclass OldName to NewName/raw send chat:channelname\n\nupdate privclass PrivclassName privileges
This is the same as /admin update privclass PrivclassName privileges/raw disconnect\n
This is how you can leave the chats with a [quit] reason. This is sort of useful, although, be aware that if you don't leave the chat page or go somewhere else, you will be reconnected.
So there you have it. There may be a few other random /raw commands, but this list should let you do most things you would want to do. Like I said, a lot of this is an overly complicated way to do simple things, but I thought I would make a reference, for anyone wanting to know what /raw does. Also, you can read the botdom wiki to see more info on each command. It's there to help out bot creators write bots, but it has a lot of neat information.
I'm pretty sure I got this all right, but I may have made a typo. Let me know if something doesn't work right.
I hope this was useful to some of you :)