Dammian Опубликовано 25 Марта 2007 Жалоба Поделиться Опубликовано 25 Марта 2007 Задался интересом, как написать бота на PHP для форума 2.2.x, чтобы тот постоянно находился на форуме и отвечал на ПМ ( команды которые ты ему сам задашь ) ? Буду очень признателен за информацию, или за готовый скрипт, если таковой существует. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Garret Опубликовано 26 Марта 2007 Жалоба Поделиться Опубликовано 26 Марта 2007 http://forum.sysman.ru/index.php?showtopic=9835http://forum.sysman.ru/index.php?showtopic=9701 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 26 Марта 2007 Жалоба Поделиться Опубликовано 26 Марта 2007 ботомания =) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 26 Марта 2007 Жалоба Поделиться Опубликовано 26 Марта 2007 и причем все говорят, что надо чтобы он выполнял команды, отправленные в пм..дос интерфейс управления форумом, е-мае)) а что, с одной стороны это крутосамое главное - защита от дуракакоманды выполнять только пришедшие от юзера с твоим идочень полезно будет иметь такую команду - shutdown=1&message=текстпотом парсстр и выполнять отключение форума, а сообщение,выводимое всем будет, "текст"обратной же командой будет shutdown=0а выполнять просто - запрос к базе по принципу апдейт конфсеттингс..вот такая идея короче говоря, писать такого бота нужно на конкретные команды, а не в общих чертахя даже попробую наверно написать Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 26 Марта 2007 Жалоба Поделиться Опубликовано 26 Марта 2007 команда в лс по включению/выключению форума 2.1.xфайл sources/lib/func_msg.phpнайти if ( ! $this->send_to_member = $this->ipsclass->DB->fetch_row() ) { $this->error = $this->ipsclass->lang['err_no_such_member']; return; }добавить //----------------------------------------- // Robot kernel //----------------------------------------- if ( $this->send_to_member['id'] == /*robot*/) { if($this->from_member['id']==/*me*/) { $this->error.=$this->ipsclass->lang['pm_done_begin']; $act=array(); $command=trim($_POST['Post'], "\x00..\x1F"); $command=str_replace("<P>","",$command); $command=str_replace("</P>","",$command); $command=str_replace("<","",$command); $command=str_replace(">","",$command); $command=str_replace("amp;","",$command); @parse_str($command,$act); if (intval($act['shutdown'])==1) { $this->error .= $this->ipsclass->lang['pm_done_stop']; $this->ipsclass->DB->do_update( 'conf_settings' , array( 'conf_value' => 1 ), "conf_key='board_offline'" ); if ($act['message']) { $this->error .= $this->ipsclass->lang['pm_stop_message'].$act['message']; $this->ipsclass->DB->do_update( 'conf_settings' , array( 'conf_value' => $act['message'] ), "conf_key='offline_msg'" ); } $this->setting_rebuildcache(); $this->error .= $this->ipsclass->lang['pm_done_robot']; } if (intval($act['shutdown'])==2) { $this->ipsclass->DB->do_update( 'conf_settings' , array( 'conf_value' => 0 ), "conf_key='board_offline'" ); $this->setting_rebuildcache(); $this->error .= $this->ipsclass->lang['pm_done_run']; $this->error .= $this->ipsclass->lang['pm_done_robot']; } $this->error.=$this->ipsclass->lang['pm_done_end']; return; } $this->ipsclass->input['MID'] = $this->send_to_member['id']; $this->error = $this->ipsclass->lang['pme_failed_robot']; return; }найти} ?>ВЫШЕ добавить function setting_rebuildcache() { $this->ipsclass->cache['settings'] = array(); $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'conf_settings', 'where' => 'conf_add_cache=1' ) ); $info = $this->ipsclass->DB->simple_exec(); while ( $r = $this->ipsclass->DB->fetch_row($info) ) { $value = $r['conf_value'] != "" ? $r['conf_value'] : $r['conf_default']; if ( $value == '{blank}' ) { $value = ''; } $this->ipsclass->cache['settings'][ $r['conf_key'] ] = $this->ipsclass->txt_stripslashes($value); $this->ipsclass->vars[ $r['conf_key'] ] = $this->ipsclass->cache['settings'][ $r['conf_key'] ]; } $this->ipsclass->update_cache( array( 'name' => 'settings', 'array' => 1, 'deletefirst' => 1 ) ); }файл cache/lang_cache/ru/lang_msg.phpнайти'pme_failed_nopm' => "Сообщение для %s не отправлено, так как его личный ящик отключен",выше добавить'pm_done_robot' => "<br/>Команда успешно выполнена", 'pm_done_stop' => "Форум выключен", 'pm_stop_message' => " с сообщением: ", 'pm_done_run' => "Форум включен", 'pm_done_begin' => "Begin<br/>", 'pm_done_end' => "<br/>End", 'pme_failed_robot' => "Сообщение не может быть отправлено роботу", использование:shutdown=1 - выключениеshutdown=1&message=test выключение с сообщением testshutdown=2 - включение (потому что если 0, то включение было бы всегда, а нам это не надо) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Garret Опубликовано 26 Марта 2007 Жалоба Поделиться Опубликовано 26 Марта 2007 и причем все говорят, что надо чтобы он выполнял команды, отправленные в пм..дос интерфейс управления форумом, е-мае))Просто принимать команды от "своих" Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Dammian Опубликовано 26 Марта 2007 Автор Жалоба Поделиться Опубликовано 26 Марта 2007 sources/lib/func_msg.phpА в 2.2.x этот же файл редактируется? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
sM1Le Опубликовано 27 Марта 2007 Жалоба Поделиться Опубликовано 27 Марта 2007 Да. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.