Esempio n. 1
0
        } catch (Exception $e) {
            $irc->message(SMARTIRC_TYPE_CHANNEL, GAMECHANNEL, CTRL_B . $data->nick . CTRL_B . ": An internal error occured trying to send your Dogecoins.. Unfortunately, you win nothing.. :(");
            $this->game = false;
            return;
        }
        // aaand kill the game finally
        $this->game = false;
        $irc->message(SMARTIRC_TYPE_CHANNEL, GAMECHANNEL, CTRL_B . $data->nick . CTRL_B . ": You won " . DOGE . $amount . "!");
        file_put_contents("/tmp/moon.info", "");
    }
}
$bot = new monopoly();
$irc = new Net_SmartIRC();
$irc->setDebug(SMARTIRC_DEBUG_NONE);
//$irc->setUseSockets(true);
$irc->setChannelSyncing(true);
$irc->registerActionHandler(SMARTIRC_TYPE_CHANNEL, '/^!taketurn$/', $bot, "takeTurn");
$irc->registerActionHandler(SMARTIRC_TYPE_CHANNEL, '/^!endturn$/', $bot, "endTurn");
$irc->registerActionHandler(SMARTIRC_TYPE_CHANNEL, '/^!payfine$/', $bot, "payFine");
$irc->registerActionHandler(SMARTIRC_TYPE_CHANNEL, '/^!usecard$/', $bot, "useCard");
$irc->registerActionHandler(SMARTIRC_TYPE_CHANNEL, '/^!buy$/', $bot, "buyProperty");
$irc->registerActionHandler(SMARTIRC_TYPE_CHANNEL, '/^!auction$/', $bot, "auctionProperty");
$irc->registerActionHandler(SMARTIRC_TYPE_CHANNEL, '/^!bid\\s/', $bot, "bidProperty");
$irc->registerActionHandler(SMARTIRC_TYPE_CHANNEL, '/^!buildhouse/', $bot, "buildHouse");
$irc->registerActionHandler(SMARTIRC_TYPE_CHANNEL, '/^!sellhouse/', $bot, "sellHouse");
$irc->registerActionHandler(SMARTIRC_TYPE_CHANNEL, '/^!mortgage/', $bot, "mortgageProperty");
$irc->registerActionHandler(SMARTIRC_TYPE_CHANNEL, '/^!unmortgage/', $bot, "unmortgageProperty");
$irc->registerActionHandler(SMARTIRC_TYPE_CHANNEL, '/^!starttrade/', $bot, "startTrade");
$irc->registerActionHandler(SMARTIRC_TYPE_CHANNEL, '/^!stoptrade$/', $bot, "stopTrade");
$irc->registerActionHandler(SMARTIRC_TYPE_CHANNEL, '/^!addprop.*/', $bot, "addProp");
$irc->registerActionHandler(SMARTIRC_TYPE_CHANNEL, '/^!delprop.*/', $bot, "delProp");
Esempio n. 2
0
// prevent MySQL timeouts on slow channels.
db_query('SET SESSION wait_timeout = %d', 24 * 60 * 60);
// initialize the bot with some sane defaults.
global $irc;
// allow it to be slurped by Drupal modules if need be.
$bot = new drupal_wrapper();
// wrapper that integrates with Drupal hooks.
$irc = new Net_SmartIRC();
// MmmmmmM. The IRC object itself. Magick happens here.
$irc->setDebug(variable_get('bot_debugging', 0) ? SMARTIRC_DEBUG_ALL : SMARTIRC_DEBUG_NONE);
// the (boolean) here is required, as Net_SmartIRC doesn't respect a FAPI checkbox value of 1, only TRUE.
$irc->setAutoReconnect((bool) variable_get('bot_auto_reconnect', 1));
// reconnect to the server if disconnected.
$irc->setAutoRetry((bool) variable_get('bot_auto_retry', 1));
// retry if a server connection fails.
$irc->setChannelSyncing(TRUE);
// keep a list of joined users per channel.
$irc->setUseSockets(TRUE);
// uses real sockets instead of fsock().
// send every message type the library supports to our wrapper class.
// we can automate the creation of these actionhandlers, but not the
// class methods below (only PHP 5 supports default methods easily).
$irc_message_types = array('UNKNOWN', 'CHANNEL', 'QUERY', 'CTCP', 'NOTICE', 'WHO', 'JOIN', 'INVITE', 'ACTION', 'TOPICCHANGE', 'NICKCHANGE', 'KICK', 'QUIT', 'LOGIN', 'INFO', 'LIST', 'NAME', 'MOTD', 'MODECHANGE', 'PART', 'ERROR', 'BANLIST', 'TOPIC', 'NONRELEVANT', 'WHOIS', 'WHOWAS', 'USERMODE', 'CHANNELMODE', 'CTCP_REQUEST', 'CTCP_REPLY');
foreach ($irc_message_types as $irc_message_type) {
    $irc->registerActionhandler(constant('SMARTIRC_TYPE_' . $irc_message_type), '.*', $bot, 'invoke_irc_msg_' . strtolower($irc_message_type));
}
// set up a timers similar to Drupal's hook_cron(), multiple types. I would have
// liked to just pass a parameter to a single function, but SmartIRC can't do that.
$irc->registerTimehandler(300000, $bot, 'invoke_irc_bot_cron');
// 5 minutes.
$irc->registerTimehandler(60000, $bot, 'invoke_irc_bot_cron_faster');
Esempio n. 3
0
 /**
  * Create IRC Bot, connect, login and listen for events, and finally disconnect.
  */
 public function run()
 {
     $config = $this->config;
     // setup logging
     // redirect stderr to a log
     ini_set('log_errors', 'On');
     ini_set('error_log', $config['error_log']);
     $this->irc = $irc = new Net_SmartIRC();
     if (isset($config['debuglevel'])) {
         $irc->setDebugLevel($config['debuglevel']);
     }
     if (isset($config['logfile'])) {
         $irc->setLogdestination(SMARTIRC_FILE);
         $irc->setLogfile($config['logfile']);
     }
     // reconnect is poorly designed, do not use it
     // @see https://pear.php.net/bugs/bug.php?id=20974
     //$irc->setAutoRetry(true);
     $irc->setAutoRetry(false);
     $irc->setAutoRetryMax(PHP_INT_MAX);
     $irc->setReconnectDelay(10000);
     $irc->setReceiveTimeout(600);
     $irc->setTransmitTimeout(600);
     // enable user and channel syncing,
     // users are accessible via $irc->user array, i.e $irc->user['meebey']->host;
     $irc->setChannelSyncing(true);
     $irc->setUserSyncing(true);
     $this->registerHandlers($this->irc);
     $irc->connect($config['hostname'], $config['port']);
     if (empty($config['username'])) {
         $irc->login($config['nickname'], $config['realname']);
     } elseif (empty($config['password'])) {
         $irc->login($config['nickname'], $config['realname'], 0, $config['username']);
     } else {
         $irc->login($config['nickname'], $config['realname'], 0, $config['username'], $config['password']);
     }
     $this->joinChannels($irc);
     // loop forever, reconnect and retry
     // @see https://pear.php.net/bugs/bug.php?id=20974
     while (!$this->shutdown) {
         $irc->listen();
         $irc->reconnect();
     }
     $irc->disconnect();
 }