Вштырилось мне как-то написать твиттер-бота для игры "Мафия". И я его написал, почти. А потом ещё одного...
Как всем известно, программист - существо ленивое, так и мне стало лень копипастить пачку свич-кейсов из одного бота в другого. Пришлось рефакторить (переписывать, да), выделять сущности, строить модель... И получился класс Bot, который реагирует на поток строковых команд. Так как он вызывает колбеки с параметрами, то оказалось, что его можно использовать как роутер, или интерпретатор, или как вам фантазия подскажет ;)
лежит здесь http://code.google.com/p/angry/downloads/list
В качестве небольшой хаутушки кусок кода из погодного бота @WeaTwi
$bot = new WeaTwiBot($config['username'],$config['password']);$bot->addBatch(array(Bot::COMMAND => '~!info|!help|!about~i',Bot::ACTION => array($bot,'updateStatus'),Bot::PARAMETER => array('%s %s','~^(@[a-z0-9_]+):~i'=>1,$bot->URL_INFO),Bot::LAST => 1));$bot->addBatch(array(Bot::COMMAND => '~.+~',Bot::ACTION => array($bot,'getWeather'),Bot::PARAMETER => array('~^@[a-z0-9_]+:(.+)~i'=>0),Bot::LAST => 1));$s = array();foreach ($bot->getLastMentions() as $m)$s[] = '@'.$m->user->screen_name.':'.preg_replace('~@'.$config['username'].'~i','',$m->text);$bot->setQueue($s);$bot->run();die;
Вот так и живём =:)
Ах да, про дебиан и пхп. Оказывается, в репах дебиана нет такого вкусного php5.3! Как подсказывает гугл и http://www.openkazan.info/node/3515 обновиться можно из http://packages.dotdeb.org
$ nano /etc/apt/sources.list
...
deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all
#
deb http://php53.dotdeb.org stable all
deb-src http://php53.dotdeb.org stable all
...
$ apt-get update
$ apt-get install php5
, о чём продвинутый юзер и так знает
Оставайтесь с нами, фоловьте ботов ;)
А кто предложит лучший алгоритм для мафиозного бота, тому плюшка
ps: чем бы таким код нормально отформатировать?..