An IRC poker dealing program
Simple Instructions for Windows {95,98,NT}
A freely available graphical client is available for
download from its author,
Greg Reynolds. I highly recommend using this client in order to get started
playing quickly and to become familiar with the games and the players.
Complete Information
IRCbot is a poker dealing program designed to use Internet Relay
Chat (IRC) as its communication medium. The program (also referred
to as dealer or as a bot) resides on a particular channel and manages
the action of a game.
History
IRCbot is a result of some poker simulation work done by the author
(Todd Mummert). This work entailed the
simulation and statistical evaluation of a wide variety of games.
The author became aware of a poker dealing robot (Hbot) running on
IRC that dealt only Holdem which was written my Anthony Chang, based
on some work by Bob Herlien. Using the commands that Hbot understood
as a basis from which to work, IRCbot took shape.
An IRC network consists of one or more interconnected servers.
An IRC client program is used to connect to this network and
communication with other IRC clients can then be made using
an established protocol. In general, once you've connected
to a server you will join a specific channel that consists of
clients with interests similar to yours.
Finding an IRC client
Hopefully, your system already contains an IRC client program.
In general, it is usually called irc or ircII.
If you do not have such a program, you can compile one from
sources available via ftp from cs-ftp.bu.edu (/pub/irc/clients).
Currently, the ircII2.2.9* files are known to work well.
Connecting to the poker server
The poker server currently resides an an isolated IRC server, one
that is not connected to any of the established IRC networks.
This isolation was necessary to allow the poker dealers to
communicate with the channels at a sufficiently high rate to
increase the rate at which a game is played. The name of the
server is irc.poker.net, and its current IP
address is 204.32.41.79.
You can connect to this particular server with a command
similar to:
% irc foobar irc.poker.net
or
% irc foobar 204.32.41.79
The 2nd argument is your nickname for that session, and is
limited to nine primarily alphanumeric characters. Alternatively,
if you just use the command irc and it connects you
to a different server you can change servers using the IRC
command /server irc.poker.net.
The easiest way to become familiar with the poker server is
to join in on one of the active channels and just watch the
play for a while. You join a channel by using the following
command: /join #holdem, where #holdem is the name
of one of the poker channels. You can see the names of the
channels and the number of clients connected with the
/list command. After joining a channel, any command
you issue that does not begin with a leading '/' will simply
be echoed publicly to the channel. This is a simple way
to ask questions of the other players, or if you're playing
for the first time, to send commands to the dealer.
In general, the dealer is parsing everything that is sent publicly over
the channel, as well as commands that are sent privately to it. However,
the dealer expects to receive its commands in a very specific format.
All commands to the dealer, whether public or private, should begin with
the single character identifier P. For example, to inquire about
the status of a game, type p status. The dealer is case
insensitive, except when entering a password. Game action
commands such as call, raise, check, etc may be done in advance.
The dealer will remember the command and act upon it when it is your turn
to act.
Upon playing a game for the first time, or if you just drop by to watch,
you may notice the lack of public action by the other players. This is
because once players become familiar w/ IRC, they realize that all actions
can be sent privately to the dealer. This has several advantages:
- Commands may be entered in advance, without the other players knowing
the specific action. Publicly announcing your action is similiar
to 'acting out of turn' in a real game, and should not be done
under normal circumstances.
- The channel traffic is kept to a minimum. This increases the
overall rate at which the game progresses, and those players
w/ slow net connections will really appreciate it.
For example, to send a private message to a dealer named Dbot (all the
dealers have unique names), we would use a command like:
/msg dbot p fold
/msg is the irc command to send a msg to a person or channel. dbot is
the case-insensitive name of our dealer and the rest of the command is
the specific action we wish to make. Notice that the 'p' is still a
necessary part of the command.
This is only a description of the commands that the poker dealer
understands. It does not describe any of the IRC commands necessary
for joining a channel.
- Commands for joining/leaving a game
- join password --- This command is used to join the game. The
password is case sensitive.
- quit --- Quit immediately. However, since you may have money in
the pot, your seat is not freed until the end of the hand.
- wait password --- In case the game is full, join the waiting list
on a particular channel. You must give the correct password here,
since it will attempt to use it to join the game once a seat is
available.
- unwait --- Remove yourself from the waiting list. Quit would
also check the waiting list to see if you were on it.
- Status commands
- status --- Check the status of a game. This is displayed
using the same format as was used for WRGPT3, for those who
are familiar with that game. Basically, the only non-obvious
symbols would be the flags preceding the name. V means
on vacation, B means that the person is the virtual
dealer (i.e., blinds start to his left). As far as pot numbers
go, a player is in all pots less than or equal to his pot number.
- board --- Print out the current board (common cards).
Generally, only holdem and omaha and derivitives thereof have
board cards.
- cards --- Show your current cards. This will show both your
up and down (hole) cards.
- game --- Print out what game is being dealt. This is
primarily useful on the dealer's choice channel.
- rank --- For games that maintain statistics print out
your current ranking.
- top --- Print out the list of the top players ranked by
largest bankroll.
- top2 [#hands] --- Another method of ranking players, by
number of units won per hand. The optional argument is to
require some minimum number of hands to have been played.
- Game actions
All these commands may be made in advance. Making as many of
your actions in advance is recommended to speed up play.
- fold --- Fold your hand.
- call [amount] --- Call up to amount. If it
is more than amount to you, then fold. With no
arguments, call any amount.
- check --- Check. That is if it is 0 to you, then
call, otherwise you will get a warning.
- raise [amount] --- Raise amount. If amount
is insufficient, you will be given an error message. On
channels with a fixed betting limit, no argument is necessary.
Certain channels also limit the number of raises during a
betting round.
- make amount --- Make it amount to you. If
amount is an illegal raise, then you'll be prompted
again. For example, if you wish to raise if it is unraised
when it gets to you but wish to call at least one raise, you
can do p make 20. Therefore, if it is unraised, you'll
raise 20, if it is 20 to call you'll call; otherwise, you'll
be prompted for another action.
- toss [card1] [card2] [...] --- In draw games, specify
which cards you'd like to toss. Cards are numbered from
1...N. Use toss 0 to toss no cards.
- undo --- undo any advance actions.
- Tournament commands
Certain of the channels have been set up to facilitate the playing
of tournaments. Basically, the dealer keeps track of when the
blinds double, and prevents new players from joining in mid-tournament.
There are a few commands that are enabled only on the tournament
channels.
- double interval [hands] --- Blinds will double at this
frequency. Generally in seconds, although you can double by
number of hands played if you wish.
- bankroll amount --- Start with a bankroll of this size.
- blind amount --- The small blind will be this size
initially. Large blind is twice the small blind.
- start --- Start the tournament. New players cannot join
after this. Game parameters (above) must be set before the
tournament starts.
- abort --- Abort the tournament. The current hand can
be played out, but after that you're back into the pre-tournament
mode.
- vacation [nick] --- If a person's connection lags or is dropped,
you can put them on vacation. This is also useful if you need to
take a short break. A person on vacation either checks or folds
when it is his turn to act.
- back --- This is how to return from vacation. Only the
player on vacation can return himself.
- Miscellaneous
- help --- Prints out the helpfile for this channel.
- commands --- Print out the list of commands.
- deal [game number] --- In the non-tournament channels,
you need to tell the dealer to deal the next game. On the
dealer's choice channels, you may specify a different game.
- password new_password --- Change your password to
new_password. You must be in the game to use this command.
- remind --- Remind a player that it is his turn to act.
- list --- List the games that are available.
- motd --- Print the message-of-the-day.
- kick --- Kick a player from the game. Should only be used
if a player's connection drops or they're seriously lagging.
Not yet done.
This is a list of the known problems w/ the current IRCbot:
- A tournament dealer capable of handling multiple tables
- The current tournament channels assume all the players are
at the same table. Obviously this puts an absolute limit
on the number of players in a tournament. I'd like to expand
the capabilities of the program to manage multiple tables.
When enough people bust out of the tournament, seats would
be redrawn at the remaining tables.
- Divorce the game from IRC
- While IRC was an easy medium to bring the game up on, it has
some serious shortcomings. One thing I would like to see would
be graphical (i.e., X windows) interfaces for the game. These
would not have to connect through IRC, but could connect directly
to the dealer. Most of the support code for this was designed
into the current dealer program.
Currently, the bot "understands" the following games:
- Five stud high
- Five stud low
- Five stud high/low (no req)
- Five stud high/low (8 or better)
- Six stud high/low (no req)
- Seven stud high
- Seven stud low
- Seven stud high/low
- Seven stud high/low (8 or better)
- 5 card draw high
- 5 card draw low
- 5 card draw high/low (no requirements)
- 5 card draw high/low (8 or better)
- Holdem high
- Holdem high/low (8 or better)
- Omaha high
- Omaha high/low (8 or better)
- Omaha high double flop
- Omaha high/low double flop (8 or better)
- Tic-Tac Omaha high/low (8 or better)
- Spit - 5 card draw high/low w/ 1 common card
- 54321 high only
Three shareware front-end programs for accessing the poker game are available.
These programs still maintain the IRC client side interface where users
write to each other by typing lines of input.
The user still specifies game actions with messages to the dealer bot
(often using special aliases).
-
Xpoker
is an X11-based front-end for IRC poker games.
It provides a graphical front-end interface for playing most of the
poker games.
-
ircpoker
is a curses-based front-end for IRC poker games.
It provides a more-or-less visual front-end interface for playing most of the
poker games.
-
Holdem
is a curses-based front-end for IRC Hold-em poker games.
It provides a more-or-less visual front-end interface for playing
Texas and Omaha Hold-em poker.
These programs are available for public ftp from
ftp.jcsw.com
Todd W. Mummert