Seagull Bot

How to set it up


  • PEAR::Net_SmartIRC (atm CVS version)
  • PEAR::mdb
  • PEAR::HTTP_Request


The file that should be modified to set up the bot is config.php The most important options are:

  • $configchannels? an array containing the name of channels that you want the bot to login to
  • $confignick?, $configident?, $configalt_nick? and $configreal_name? these properties' purposes are self-describing, setting the nick, ident and so on
  • $configirc_server? and $configirc_port? use these for your channel's IRC server and the port that it uses (like: and 6667)

If you want that identify your IRC bot to the NickServ in FreeNode add this line to the phpbitch.php after $irc->login()

$irc->message(SMARTIRC_TYPE_QUERY, 'NickServ', 'identify password');

Now simply run phpbitch with:

$ php phpbitch.php

and that's it!

Setting-up bot users

Make a database for phpbitch and set proper settings in config.php for database connection (phpbitch uses mdb for its DBAL) and now import two sql files (phpbitch.sql & update_mysql.sql) to your newly created database.

In the users table add nickname, ident and host to register a new user, for example for n=demian@ you should fill nickname with demian, ident with n=demian and host with

Now you should add this new user to the users_levels table too and give him/her a proper ACL: in the user field putthe nickname, in the channel set what channels you want to give that certain ACL to the user (* for all channels) and finally into the level set his/her ACL (5 for a bot, 4 for a Master, 3 for an Operator, 2 for a Voice, 1 for a Friend and finally 0 for a Normal user).




  • !help - Displays this help.
  • !time - Displats current time on my server.
  • !uptime - Displays how long bot has been running.
  • !search $keyword - Querys bot's brain for $keyword.
  • !up/!opme - Ops/voices you depending on level.
  • !down - removes your op/voice depending on level.
  • !op $nick - Grants operator status to $nick (lvl3 required).
  • !deop $nick - Revokes operator status to $nick (lvl3 required).
  • !topic $topic - Sets topic to $topic (lvl2 required).
  • !invite $nick - Invites $nick to current channel (lvl2 required).
  • !kick $nick - Kicks $nick from current channel (lvl2 required).
  • !ban $nick - Bans $nick from current channel (lvl2 required).
  • !kb $nick - Kick-bans $nick from current channel (lvl2 required).
  • !die - Disconnects bot from the network (lvl4 required).
  • !learn $keyword $response - Learns $keyword as $response. (lvl 3 required).
  • !forget $keyword - Erases $keyword from brain. (lvl 3 required).
  • !join $channel $key - Joins $channel with $key (lvl 3 required).
  • !part $channel - Leaves $channel (lvl 3 required).
  • !adduser $nick $ident $host - Adds user to bot's userlist (lvl 4 required).
  • !addlevel $nick $channe $level - Adds the level for user (lvl 4 required).
  • !deluser $nick - Removes user from bot's userlist and all his levels (lvl 4 required).
  • !dellevel $nick $channel - Removes the level of the user (lvl 4 required).
  • !cvs-checkout - rebuilds the bot from CVS and restarts it (lvl 4 required).
  • !mastah - all bots will reply if they are the current bot-master or not (lvl 4 required).
  • !who - looks up a user in the master bots databases.
  • !who_all - looks up a user in all bots databases.

Trac module

Note: You should edit modules/trac.php and set $baseurl to your Trac install's root URI with trailing / (for example:

  • !roadmap <roadmap> Will return the Active and Closed tickets with progress percentage of that roadmap
  • !ticket <ticket_number> Will return status and description of ticket_number
  • !changeset <changeset> Will return timestamp, author and reason of the changeset

Brain module

  • !learn <keyword> <definition> Will learn the definition of the keyword
  • !forget <keyword> Will forget about that keyword
  • !search <keyword> Will return the definition of keyword if it's in the brain database
  • !tell <user> about <keyword> Will tell user about that keyword as /msg


Thanks a lot to Amir Mohammad from the Jaws project who set this up for us.