Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Forum AI

Идеи для расширения функциональности phpBB 2.0.x
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

MAzZY писал(а):я не понял как теперь должен выглядеть запрос
VVVas писал(а):Код мода не смотрел, так что не могу сказать чья бага.
я люблю daft punk | новый sugoi.ru
MAzZY
Бывший член :)
Сообщения: 2925
Стаж: 18 лет 11 месяцев
Благодарил (а): 20 раз
Поблагодарили: 30 раз
Забанен: Бессрочно

Сообщение MAzZY »

Вот код целиком. 120-я строка в functions_post.php помечена

Код: Выделить всё

# 
#-----[ OPEN ]------------------------------------------ 
#
includes/functions_post.php

# 
#-----[ FIND ]------------------------------------------ 
#
//
// This function will prepare a posted message for
// entry into the database.
//

# 
#-----[ ADD BEFORE ]------------------------------------------ 
#
//
// Post IAI's response to database
//
function iai_submit_post($mode, &$iai_id, &$forum_id, &$topic_id, &$iai_post_id, &$topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, &$bbcode_uid, &$iai_username, &$iai_subject, &$iai_message)
{
	global $board_config, $lang, $db, $phpbb_root_path, $phpEx;
        
	//Stores user's IP since IAI has none. Can be changed as wished.
	global $user_ip;

	$current_time = time();

	$sql = "INSERT INTO " . POSTS_TABLE . " (topic_id, forum_id, poster_id, post_username, post_time, poster_ip, enable_bbcode, enable_html, enable_smilies, enable_sig) VALUES ($topic_id, $forum_id, $iai_id, '$iai_username', $current_time, '$user_ip', $bbcode_on, $html_on, $smilies_on, $attach_sig)";
	if ( !($result = $db->sql_query($sql, BEGIN_TRANSACTION)) )
	{
		message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
	}

	$iai_post_id = $db->sql_nextid();

	$sql = "INSERT INTO " . POSTS_TEXT_TABLE . " (post_id, post_subject, bbcode_uid, post_text) VALUES ($iai_post_id, '$iai_subject', '$bbcode_uid', '$iai_message')";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
	}

	add_search_words($iai_post_id, stripslashes($iai_message), stripslashes($iai_subject));

	return false;
}
//
// Update Stats for IAI: must be run AFTER update_post_stats() for original post
//
function iai_update_post_stats(&$forum_id, &$topic_id, &$iai_post_id, &$iai_id)
{
	global $db;

	//This simply runs the 3 db updating functions (only used for IAI replies).

	$sql = "UPDATE " . FORUMS_TABLE . "
		SET forum_posts = forum_posts + 1, forum_last_post_id = $iai_post_id
		WHERE forum_id = $forum_id";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
	}

	$sql = "UPDATE " . TOPICS_TABLE . "
		SET topic_last_post_id = $iai_post_id, topic_replies = topic_replies + 1
		WHERE topic_id = $topic_id";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
	}

	// Comment out the next 7 lines if you don't want user posts to be updated (it will annoy some users otherwise).
	$sql = "UPDATE " . USERS_TABLE . "
		SET user_posts = user_posts + 1
		WHERE user_id = $iai_id";
	if ( !($result = $db->sql_query($sql, END_TRANSACTION)) )
	{
		message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
	}

	return;
}
//
// Allows bot to send pms requiring only subject, message and user_id of user it is being sent to.
// I've made it an easy to use function so you can adapt it to use in many situations on your site
// an example is in the welcome message system which is included with this package. The function
// also sends emails (if $send_email set) and does all the inbox checking stuff that normal pms do.
//
function iai_send_pm($user_to_id, $iai_subject, $iai_message, $send_email)
{
	global $board_config, $lang, $db, $phpbb_root_path, $phpEx;

	$sql = "SELECT *
		FROM " . USERS_TABLE . " 
		WHERE user_id = " . $user_to_id . "
		AND user_id <> " . ANONYMOUS;
	if ( !($result = $db->sql_query($sql)) )
	{
***120--------->		message_die(GENERAL_ERROR, 'Tried obtaining data for a non-existent user', '', __LINE__, __FILE__, $sql);
	}
	$usertodata = $db->sql_fetchrow($result);

	// prepare IAI message (IAI may have used html, smilies etc...)
	$bbcode_uid = make_bbcode_uid();
	$iai_message = str_replace("'", "''", $iai_message);

	// This is to fix up some of the bad formatting which comes out of the AI
	if(empty($iai_message))
	{
		$iai_message = "Thank you.";
	}
	$iai_message = prepare_message(trim($iai_message), 0, 1, 1, $bbcode_uid);

	$msg_time = time();

	// Do inbox limit stuff
	$sql = "SELECT COUNT(privmsgs_id) AS inbox_items, MIN(privmsgs_date) AS oldest_post_time 
		FROM " . PRIVMSGS_TABLE . " 
		WHERE ( privmsgs_type = " . PRIVMSGS_NEW_MAIL . " 
			OR privmsgs_type = " . PRIVMSGS_READ_MAIL . "  
			OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " ) 
			AND privmsgs_to_userid = " . $usertodata['user_id'];
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_MESSAGE, $lang['No_such_user']);
	}

	$sql_priority = ( SQL_LAYER == 'mysql' ) ? 'LOW_PRIORITY' : '';

	if ( $inbox_info = $db->sql_fetchrow($result) )
	{
		if ( $inbox_info['inbox_items'] >= $board_config['max_inbox_privmsgs'] )
		{
			$sql = "DELETE $sql_priority FROM " . PRIVMSGS_TABLE . " 
				WHERE ( privmsgs_type = " . PRIVMSGS_NEW_MAIL . " 
					OR privmsgs_type = " . PRIVMSGS_READ_MAIL . " 
					OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . "  ) 
					AND privmsgs_date = " . $inbox_info['oldest_post_time'] . " 
					AND privmsgs_to_userid = " . $usertodata['user_id'];
			if ( !$db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, 'Could not delete your oldest privmsgs', '', __LINE__, __FILE__, $sql);
			}
		}
	}

	$sql_info = "INSERT INTO " . PRIVMSGS_TABLE . " (privmsgs_type, privmsgs_subject, privmsgs_from_userid, privmsgs_to_userid, privmsgs_date, privmsgs_ip, privmsgs_enable_html, privmsgs_enable_bbcode, privmsgs_enable_smilies, privmsgs_attach_sig)
		VALUES (" . PRIVMSGS_NEW_MAIL . ", '" . str_replace("\'", "''", $iai_subject) . "', " . $board_config['iai_userid'] . ", " . $usertodata['user_id'] . ", $msg_time, '$user_ip', 0, 1, 1, 1)";

	if ( !($result = $db->sql_query($sql_info, BEGIN_TRANSACTION)) )
	{
		message_die(GENERAL_ERROR, "Could not insert private message sent info.", "", __LINE__, __FILE__, $sql_info);
	}

	$privmsg_sent_id = $db->sql_nextid();

	$sql = "INSERT INTO " . PRIVMSGS_TEXT_TABLE . " (privmsgs_text_id, privmsgs_bbcode_uid, privmsgs_text)
		VALUES ($privmsg_sent_id, '" . $bbcode_uid . "', '" . str_replace("\'", "''", $iai_message) . "')";

	if ( !$db->sql_query($sql, END_TRANSACTION) )
	{
		message_die(GENERAL_ERROR, "Could not insert/update private message sent text.", "", __LINE__, __FILE__, $sql_info);
	}

	// Add to the users new pm counter
	$sql = "UPDATE " . USERS_TABLE . "
		SET user_new_privmsg = user_new_privmsg + 1, user_last_privmsg = " . time() . "  
		WHERE user_id = " . $usertodata['user_id']; 
	if ( !$status = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, 'Could not update private message new/read status for user', '', __LINE__, __FILE__, $sql);
	}

	// now send email if all the usual conditions & $send_email is set
	if ( $send_email && $usertodata['user_notify_pm'] && !empty($usertodata['user_email']) && $usertodata['user_active'] )
	{
		$email_headers = 'From: ' . $board_config['board_email'] . "\nReturn-Path: " . $board_config['board_email'] . "\r\n";

		$script_name = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($board_config['script_path']));
		$script_name = ( $script_name != '' ) ? $script_name . '/privmsg.'.$phpEx : 'privmsg.'.$phpEx;
		$server_name = trim($board_config['server_name']);
		$server_protocol = ( $board_config['cookie_secure'] ) ? 'https://' : 'http://';
		$server_port = ( $board_config['server_port'] <> 80 ) ? ':' . trim($board_config['server_port']) . '/' : '/';

		include($phpbb_root_path . 'includes/emailer.'.$phpEx);
		$emailer = new emailer($board_config['smtp_delivery']);
			
		$emailer->use_template('privmsg_notify', $usertodata['user_lang']);
		$emailer->extra_headers($email_headers);
		$emailer->email_address($usertodata['user_email']);
		$emailer->set_subject(); //$lang['Notification_subject']
			
		$emailer->assign_vars(array(
			'USERNAME' => $usertodata['username'], 
			'SITENAME' => $board_config['sitename'],
			'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']), 

			'U_INBOX' => $server_protocol . $server_name . $server_port . $script_name . '?folder=inbox')
		);

		$emailer->send();
		$emailer->reset();
	}

	return;
} 
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

MAzZY
Наверняка сейчас бред пишу...

Попробуйте в куске

Код: Выделить всё

{ 
   global $board_config, $lang, $db, $phpbb_root_path, $phpEx; 

   $sql = "SELECT * 
      FROM " . USERS_TABLE . " 
      WHERE user_id = " . $user_to_id . " 
      AND user_id <> " . ANONYMOUS; 
   if ( !($result = $db->sql_query($sql)) ) 
   {
Поменять

Код: Выделить всё

 . $user_to_id . 
на

Код: Выделить всё

 . $usertodata['user_id'] . 
Это чисто наитие и я не понимаю что я вам посоветовал. Если жить не будет, отпишитесь и будем ждать умных людей.
я люблю daft punk | новый sugoi.ru
MAzZY
Бывший член :)
Сообщения: 2925
Стаж: 18 лет 11 месяцев
Благодарил (а): 20 раз
Поблагодарили: 30 раз
Забанен: Бессрочно

Сообщение MAzZY »

VVVas, не помогло. Та же ошибка

Добавлено спустя 3 минуты 58 секунд:

Кстати, про сам бот. Я ему загрузил много новых "мозгов". Пытаюсь теперь понять, что это дало. Еще и хостинг тупит постоянно - теряется связь с базой. Хотелось бы еще понять кто в этом виноват - сам хостинг(хотя у меня там есть еще аккаунт и там все в порядке) или это из-за бота такое происходит. :?

Тут есть люди, которые хоть что-то понимают в искуственных интеллектах? Как понять - обучаемый он или нет?
Аватара пользователя
Crow
phpBB 1.4.4
Сообщения: 149
Стаж: 18 лет 9 месяцев
Откуда: Киев

Сообщение Crow »

помоему нет
у него в мозгах прописаны маски фраз и он рандомно в зависимости от маски выбирает ответы для этих масок.. вроде так он работает..
MAzZY
Бывший член :)
Сообщения: 2925
Стаж: 18 лет 11 месяцев
Благодарил (а): 20 раз
Поблагодарили: 30 раз
Забанен: Бессрочно

Сообщение MAzZY »

Crow, ну это я понял. Теперь надо понять - он может отойти от этой схемы или всегда будет только по шаблону работать?
Аватара пользователя
Crow
phpBB 1.4.4
Сообщения: 149
Стаж: 18 лет 9 месяцев
Откуда: Киев

Сообщение Crow »

вроде как по шаблону.
чем больше фаблонов и вариантов ему накидаеш - тем он "умнее"
точнее "рандомнее".
MAzZY
Бывший член :)
Сообщения: 2925
Стаж: 18 лет 11 месяцев
Благодарил (а): 20 раз
Поблагодарили: 30 раз
Забанен: Бессрочно

Сообщение MAzZY »

Crow, а ты что взялся переводить?

Вот что я выяснил поработав над ним некоторое время.

По поводу обучаемости: механизм самообучения есть, но результатов его не видно и не понятно, как же их увидеть.

По поводу применения: единственная польза, которую он может дать, - это FAQ. Он может отвечать на вопросы, которые есть там. Только опять же проблема - фразы должны быть стандартными, т.е. если есть ответ на "Я забыл пароль", то на "Я потерял пароль" ответа нет. Поэтому надо либо его постоянно обучать(знать бы как), либо постоянно добавлять в базу новые варианты с новыми ответами. Но тут опять же возникает проблема с возможными ошибками/опечатками в запросе. Еще вариант - простой болтун в каком-то спец.разделе или в чате. В обоих случаях надо много чего переводить на русский.


Главная проблема этого мероприятия - забитая база. Уже сейчас у меня размер базы - 7М. И это только его мозги и небольшое количество наших разговоров. Причем мозгов там очень мало, а он - не очень сообразительный. Чтобы он начал толком думать, надо еще мегов 5 закачать.
А если форум большой и там много разговоров?... База-то не резиновая.

Добавлено спустя 54 минуты 36 секунд:

С заливкой еще двух мегов мозгов он значительно поумнел, но какой ценой.
Да и перевести 9 мегов _такого_ текста на русский - задача не очень реальная. Вот такие дела.
Аватара пользователя
Crow
phpBB 1.4.4
Сообщения: 149
Стаж: 18 лет 9 месяцев
Откуда: Киев

Сообщение Crow »

MAzZY
я пока еще не лазил в него...времени нет...
По поводу обучаемости: механизм самообучения есть
где копать?
Еще вариант - простой болтун в каком-то спец.разделе или в чате
именно
Главная проблема этого мероприятия - забитая база

для меня - не проблема...
[/code]
Аватара пользователя
IGO
phpBB 2.0.1
Сообщения: 297
Стаж: 19 лет

Сообщение IGO »

Господа, кто поставил этот мод? Расскажите как работает? Вообще стоит его устанавливать?
Терпение и труд - всё перетрут
Я на этом форуме уже чуть больше года.. спасибо вам за помощь!
Аватара пользователя
Crow
phpBB 1.4.4
Сообщения: 149
Стаж: 18 лет 9 месяцев
Откуда: Киев

Сообщение Crow »

ну я ставил
ну отвечает он по шаблону..
без мозгов или их перевода юзать никак нельзя.. туповат он..
MAzZY
Бывший член :)
Сообщения: 2925
Стаж: 18 лет 11 месяцев
Благодарил (а): 20 раз
Поблагодарили: 30 раз
Забанен: Бессрочно

Сообщение MAzZY »

Crow писал(а):где копать?
Если он отвечает на вопрос не так, как надо, то пишешь "bad answer", он спрашивает, как надо отвечать, даешь ему нужный ответ. Вот только понял он его или нет - не ясно.
Посмотреть как это работает можно у меня - http://forumbot.jino-net.ru/viewtopic.php?p=169#169 и дальше несколько страниц :)

IGO, все уже написано в теме.
Аватара пользователя
TUMS
phpBB 2.0.0
Сообщения: 244
Стаж: 18 лет 6 месяцев
Откуда: Msk, RU

Сообщение TUMS »

[offtop]
http://forumbot.jino-net.ru/viewtopic.p ... &start=135
первые два поста на этой странице - это нечто :)
[/offtop]

судя по этому форуму бот годен пока что только для озвучивания FAQ.
Хотя если разобраться - можно его научить и водку пить :)
HorZa
phpBB 1.0.0
Сообщения: 1
Стаж: 18 лет 4 месяца

Сообщение HorZa »

Сегодня поставил, пытаюсь разобраться в синтаксисе его мозгов
Аватара пользователя
Ламер
phpBB 1.4.4
Сообщения: 107
Стаж: 19 лет 8 месяцев

Сообщение Ламер »

интересно, чем закончился перевод мозгов и обучение русскому)))))

Вернуться в «Запросы модов для phpBB 2.0.x»