Перейти к контенту

PHP бот на форум 2.2.x


Рекомендуемые сообщения

Задался интересом, как написать бота на PHP для форума 2.2.x, чтобы тот постоянно находился на форуме и отвечал на ПМ ( команды которые ты ему сам задашь ) ? Буду очень признателен за информацию, или за готовый скрипт, если таковой существует.
Ссылка на комментарий
Поделиться на других сайтах

и причем все говорят, что надо чтобы он выполнял команды, отправленные в пм..дос интерфейс управления форумом, е-мае))

 

а что, с одной стороны это круто

самое главное - защита от дурака

команды выполнять только пришедшие от юзера с твоим ид

очень полезно будет иметь такую команду -

shutdown=1&message=текст

потом парсстр и выполнять отключение форума, а сообщение,выводимое всем будет, "текст"

обратной же командой будет shutdown=0

а выполнять просто - запрос к базе по принципу апдейт конфсеттингс..вот такая идея

 

короче говоря, писать такого бота нужно на конкретные команды, а не в общих чертах

я даже попробую наверно написать

Ссылка на комментарий
Поделиться на других сайтах

команда в лс по включению/выключению форума 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 выключение с сообщением test

shutdown=2 - включение (потому что если 0, то включение было бы всегда, а нам это не надо)

Ссылка на комментарий
Поделиться на других сайтах

и причем все говорят, что надо чтобы он выполнял команды, отправленные в пм..дос интерфейс управления форумом, е-мае))
Просто принимать команды от "своих" :D
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.