= zomg = #Title zomg is an IRC bot written by vsTerminus for the [wiki:SocialGamer] IRC network (irc.socialgamer.net:6667). Its primary function was channel moderation, but has since expanded to fill other roles as well. If you're curious about my development patterns, please read through the [[zomgChangelog|Change Log]]! ''Note: This help file does not apply to a zomg bot found on any other network, as capabilities will be severely limited in one or more areas.'' == Disclaimer == #Disclaimer This section outlines a few simple terms that you must agree to if you wish to use zomg in your channel. * zomg will never invite itself into the channel. The staff will never invite zomg into your channel without your permission. * Any and all admins in your channel are able to invite zomg into you channel. Invites from users who are not channel admins will not be accepted. * zomg stores a great deal of information about the users and the server. Some of this information is publicly available through a few of the commands (including !seen). The majority of this information is available to anyone by using the /whois command from any IRC client, thus cannot be considered an invasion of privacy. * Events such as changing your nick, talking, and quitting are all stored by the bot. Channel data, however, will never be given out. Example: zomg may report that you were last seen 'Talking in a channel'. * zomg prints all information it receives to its console output window. This is viewable by the author, vsTerminus, at any time. This means I, the author, am able to 'watch' your channel through the bot's window without being there myself. I will never disclose anything I have seen through this method, and primarily only use it for testing purposes. * zomg has partial logging enabled. Certain events are logged (such as all the commands used) and may be made available to other staff members if requested. * Abuse of zomg will not be tolerated. This includes knowingly attempting to cause the bot to flood itself offline, lag out, or spam excessively. Any evidence of this will be dealt with by means of a server ban. The length of which depends on the nature of the offense. * zomg is given, by default, admin access in all channels. This is done to make your life easier, as zomg requires admin to be fully functional. Server staff has complete access to zomg, and thus will have admin access in your channel through the bot. If you do not agree to one or more of the above terms, please DO NOT invite zomg into your chat. Please do not hesitate to send a PM to vsTerminus if you have any questions. [[TOC]] == Introduction == #Introduction === What is zomg and what can it do? === #WhatIsZomg * zomg is a fully automated IRC client written in Perl. It is designed to be a public interface and extension to SocialGamer's existing services. * zomg makes managing your channel simple. Commands are built in to change modes, track users, extend the channel topic functionality, make it easier to keep unwanted people out of your channel, and much much more. * The source code for zomg is available via svn! * $ svn co svn://vsterminus.homelinux.org/svn/zomg === How can I get zomg in my channel? === #GetZomg * It is as simple as typing a single command into your chat room. /invite zomg #yourname-chat ''(replace #yourname-chat with the name of your channel)'' * Keep in mind, you must be logged in, and an administrator in the channel you are inviting zomg to. zomg will deny invites from non-admins and users who are not logged in. === How can I control zomg? === #ControlZomg * Controlling zomg is easy. All of the commands can be issued in one simple way. You talk to the bot in the channel like any other user, but you give it commands to do. A command is always prefixed by the public command trigger. For zomg, that trigger is ! * An example of giving a command would be to type: !version * This would cause the bot to display it's internal version publicly in the channel. * You can also talk to zomg by addressing it by name rather than using the command trigger. * Example: You may type something like this: zomg, whoami * The bot would then look up some information on you and display it in the channel. This is the equivalent of typing !whoami. You may use either version for any and all commands. == The Big List of Commands == #ListOfCommands The access you have to the bot at any given time is denoted by your status in the channel. When you have voice in a channel (+v, or a speaker in mibbit) you will have access to the voice commands, and everything below (the public commands). Similarly, if you are currently an op (@, or a star in mibbit) you have access to the Op commands and everything below that (Halfop, Voice, and Public). Certain commands (such as !up) will be based on your permanent access level in the channel, as stored by ChanServ. === Public Commands === #PublicCommands Public commands are useable by anyone in the channel, even if they do not have voice or another status level. These commands are very limited in terms of number and functionality. For all commands below, < > denotes a required parameter, [ ] denotes an optional parameter, and | denotes OR. ( ) are used to group certain items. [=#cmd_version]!version:: * Display the current bot version publicly * Example: !version [=#cmd_help]!help:: * Use this to get the latest help file available * Example: !help [=#cmd_iam]!iam | undefine:: * This command allows you to define yourself as you see fit. Others will be able to see your description by typing 'who is ' in the chat. * You can remove your definition if you so wish by passing !iam the undefine argument * Example: !iam Super awesome and totally not fat * Example: !iam undefine [=#cmd_who_is]Who is :: * This command will look up the definition of a user, if it exists. * This command should not be confused with !whois, which is entirely different. * This command can be used with, or without a trigger. * Example: who is vsTerminus * Example: !who is vsTerminus [=#cmd_who_kicked]Who kicked :: * This will look up the data on the last time was kicked and display it publicly * This command can be used with or without a trigger * Example: who kicked me * Example: Who kicked vsTerminus [=#cmd_what_is]What is :: * This command looks up the definition of something besides a user. If a definition exists, it will be displayed publicly * Only staff members may define items here. * Example: what is op * Example: !what is halfop [=#cmd_up]!up:: * This command should only be used if you have permanent access in the channel already. * It will cause the bot to look up your access with ChanServ and give you the status you are supposed to have (voice, halfop, or op) * If you do not have channel access, this command will do nothing. * !up === Voice Commands === #VoiceCommands These commands will require you to have voice in the channel to use. Even if you have >= voice access in the channel according to chanserv, you must have voice currently to use these commands. That means if you purposely de-status yourself (Read the !down command), you will be unable to use these until you have restored your status level (Read the !up command). Voice commands are generally informational and have little funcionality to them. [=#cmd_down]!down:: * This is much the opposite of !up. It will remove any and all status you have in the channel temporarily. Next time you join, or next time you use !up, your status will be restored. * !down [=#cmd_alias]!alias:: * This command will look up and display a list of all the nicknames the bot has seen you using. * Nicks are tracked based on an IP address, so if you have a Dynamic IP, the bot may tend to 'forget' who you are from time to time. * You cannot lookup the aliases of another user. If you require this, a staff member can do it, or you can look into a nick tracer script online. * !alias * !alias vsTerminus [=#cmd_whois]!whois :: * This command will look up information about you on the server and display it publicly. * Among the displayed information is your name, hostmask, and ChanServ access. * !whois IbitePrettyHard [=#cmd_whoami]!whoami:: * This command is the equivalent of typing !whois * !whoami [=#cmd_lastcommand]!lastcommand:: * This command will display publicly the last command that was used and who issued it. * This will reflect the last '''attempted''' command, regardless of whether it succeeded. * !lastcommand [=#cmd_common]!common [user]:: * This command will display publicly how many channels [user] is in with the bot. * If a user is not specified, your name will be used instead. * !common * !common ChanServ [=#cmd_host]!host :: * This command will return the host of and display it publicly if it exists * !host NeGaTiVe [=#cmd_seen]!seen :: * Seen can be used to find out when the last time the bot saw was, and what they were doing. * Channel information will not be divulged, and is not logged. * !seen dho [=#cmd_autobans]!autobans:: * This will list all known autobans for the channel via PM * Example: !autobans * Example: !list bans (not yet implemented) [=#cmd_idle]!idle :: * This will look up the user's idle time and connection time and display it publicly * Example: !idle xsiick [=#cmd_kickme]!kickme [reason]:: * This command will make the bot kick you. It is a Voice command because that way voiced users can kick themselves but nobody else. A harmless loophole to usual IRC kick permissions. * If you specify a reason, it will be used. If not, a default message will be used. * Example: !kickme * Example: !kickme off to bed! [=#cmd_kickcount]!kickcount [user]:: * This command can be used to display kick information about yourself, or another user. * Four items will be displayed. Your kick total in the channel and overall, as well as how many times the bot has kicked you from the current channel, and overall. * If you do not supply a user name, your own will be used. * Example: !kickcount * Example: !kickcount vsTerminus [=#cmd_peak]!peak:: * Peak will display some info on the current channel's peak * The channel peak is the highest recorded number of users that have been there at one time * You will also see who joined to set that record, and how long ago it was set. * Example: !peak [=#cmd_listcmd]!listcmd :: * This command allows you to see the aliases for any given command * It also allows you to see what command an alias points to * What is an alias? * An alias is just another name for an existing command. * For example, !kb is an alias of !kickban and is used the same way * This command now supports custom command info as well * Both local and global customs work. * Example: !listcmd kickban [=#cmd_nowplaying]!nowplaying [user]:: * This command uses the data from the !lastfm command to retrieve now playing information from http://last.fm/ and display it in the channel * If you don't have an account, you can register for free and I recommend that you do! * You can look up another user or yourself if you leave the argument blank. * The user must link their name to a Last.FM account using the !lastfm command in order to see their now-playing info. * As of 0.8.1 this command uses the Last.FM API to retrieve your information. It is more accurate and reliable than screen scraping, and removes the need for pacing. * This command has 1 – 3 lines of output, and so is pace controlled. * You will only be able to use this command once every 20 seconds. I may change this value without notice. * Example: !nowplaying * Example: !nowplaying vsTerminus [=#cmd_ccinfo]!ccinfo :: * Because CustomCommand is an admin-only command, this command has been added to allow voiced users to get info on existing custom commands in the channel * This is the same thing as typing !customcommand info , but requires less access. * Example: !ccinfo slap [=#cmd_cclist]!cclist:: * Same idea as ccinfo, but this will list all of the existing custom commands in the channel you are in. * This is the same as typing !customcommand list, but requires less access [=#cmd_gcinfo]!gcinfo :: * Same as ccinfo, but applies to global custom commands * This command was added to allow regular users access to see what global custom commands exist, since that command is limited to opers * Example: !gcinfo ccinfo [=#cmd_gclist]!gclist:: * This command will list all of the existing global commands * It was created to allow regular users to view Global Custom Commands, since that command itself is limited to opers * Example: !gclist * As a side note, it's worth mentioning that ccinfo, cclist, gclist and gcinfo are all Global Custom Commands, not hard coded commands. [=#cmd_wins]!wins [user]:: * Display a user's current win count * Wins can only be awarded by an oper (staff member) * Asking for them is probably a bad idea * If you do not pass a name, your own will be used. * This command will look up who [user] is logged in as, that way wins transcend nick changes. * Example: !wins * Example: !wins vsTerminus [=#cmd_text]!text [user]:: * Display information about how much [user] has been typing * Logging started for this on 30 April 2009, not in Feb like most of the other stats. * [user] is optional, if you do not specify your own nick will be used. * Example: !text * Example: !text vsTerminus [=#cmd_top3]!top3 :: * This will provide a top 3 list of one of several data items * nicks will give you the three users with the most aliases * kicks will be the three most kicked users * peak will be the three channels with the highest peaks * lines will give you the three users who have sent the most messages * words for the three users who have typed the most words * chars for the three users who have typed the most characters * commands will give you the three commands with the most aliases * customs will give you the three channels that have the most custom commands * Example: !top3 wins * Example: !top3 nicks * Example: !top3 kicks * Example: !top3 peak * Example: !top3 lines * Example: !top3 words * Example: !top3 chars * Example: !top3 commands * Example: !top3 customs [=#cmd_uptime]!uptime:: * This command shows the bot's connection uptime as well as the host machine's uptime * Example: !uptime [=#who_is_banned]Who is banned:: * This works like “who is ” and “who kicked ”, except it requires voice because of the potentially large amount of output. * A trigger is not required for this command, but may be used if you so desire. * This will read the channel's ban list, and PM you some information on each ban. This information includes * The banned hostmask * Up to three known aliases of that user if a match is found * Or the number of matches found if there are many * The time that the ban will last * The time until the ban expires * These last two will only be defined (known) if the bans were places while the bot was present. Bans places while the bot is absent are never automatically removed * This command always sends results via PM to keep spam out of the channel. * Example: who is banned [=#cmd_wordoftheday]!wordoftheday:: * This command shows the status of the Word of the Day game * Information includes how long the current word has been un-guessed for, and who guessed the previous word. * Example: !wordoftheday [=#cmd_slogan]!slogan :: * This command displays a random slogan, with your word(s) inserted into it in often funny places. * Example: !slogan Dry Humping * Example: !slogan Fun [=#cmd_lastfm]!lastfm