Просмотр полной версии : ICQ на php
Есть задумка написать icq бот, который мог бы не только отправлять сообщения, но и вести переписку, а ответы записывать в БД. Проблема в том, как сделать принятие сообщений, чтоб реально работали условия if-else, а ответ писался хотя бы для начала в какую-нибудь переменную. :confused:
root_sashok
31.07.2009, 23:23
Бери WebIcqLite.php (http://wip.asminog.com/projects/icq/WebIcqLite.class.phps) движок, пиши управляющий скрипт, вот пример такого скрипта:
<?php
include('WebIcqLite.class.php');
define('UIN', 987654321);
define('PASSWORD', 'password');
$icq = new WebIcqLite();
if($icq->connect(UIN, PASSWORD)){
if(!$icq->send_message('123456789', 'Привет, Античат!')){
echo $icq->error;
}else{
echo 'Message sent';
}
$icq->disconnect();
}else{
echo $icq->error;
}
?>
А запись всех входящих сообщений в отдельные переменные как делать?
root_sashok
31.07.2009, 23:39
Автор, специально для тебя выкладываю бота. Итак. Запуск производится через файл 55.php. В нем же имееются комментарии как что работает, там есть условия "ответ на то, что прислал пользователь", там есть функция записи лога, там есть функция управления ботом с $ADMINUIN, добавления новых фраз в библиотеку бота (fraza.txt, оттуда берется рандомная фраза, если то, что ввел пользователь не совпадает с тем, на что имеются ответы в 55.php), смена статуса бота, посылка сообщения на $UIN через бота. Движком является Icq.php.
Залил сюда (http://rghost.ru/376079), пароль на скачивание - ICQBOT.
С тебя плюсик ;)
Будет что не понятно - пиши в ICQ.
root_sashok
31.07.2009, 23:44
Условия добавлять примерно так:
if (strpos($text,'хай') or strpos($text,'привет')) {$otvet.="привет!";}
Я вроде начинаю понимать. А как вот это исправить?
Fatal error: Call to undefined function socket_create() in W:\home\localhost\www\WebIcqLite.class.php on line 393
В той строке это: $this->socet = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
root_sashok
01.08.2009, 00:19
Sockets включил?
Я на компе через денвер пробую. Реально проверить?
root_sashok
01.08.2009, 00:26
По-моему ты меня не понимаешь. У тебя не включены Sockets видимо.
Я в первый раз с сокетами и асей пробую. Не знаю как их включать
root_sashok
01.08.2009, 00:33
Не помню как на денвере... Зарегистрируй себе бесплатный хостинг с сокетами. Или платный...
Русских не нашел. А с иностранными все какие-то проблемы
ТС, открой свой php.ini и найтди там строку :
;extension=php_sockets.dll
Убери вначале знак ";" и сохрани изменения. Перезапуск сервера, все, сокеты работают. Совет #2: подучи основы, ты слишком рано начинаеш работать с классами и тд, незная что такое Call to undefined function и что такое сокеты.
Есть предложение. Условие например такое:
$а = "сколько вам лет";
$b = "любимый цвет";
$c = "1. да";
$d = "2. нет";
Дальше смысл такой: пишет чел в асю. Ему приходит первое сообщение из $а. Ответ на него записывается в бд. Как только ответили, бот отсылает второе сообщение из $b. Ответ снова сохраняется. Третим идет вопрос с вариантами ответа $c, $d. Если ответ приходит цифрой из вариантов, то идем дальше на условие if-else, иначе пишем текст с пояснением его ошибки и спрашиваем заново. Если ответ нормальный, то снова пишем его в бд. Ну и т.д.
Закину полтинник на счет тому, кто первым разместит работоспособный код. Спс. :-)
JIexaPol
01.08.2009, 16:02
чувак, если бы было время - я бы помог бесплатно и объяснил..стукни в асю если можешь тогда объясню как бота делать..я тоже на денвере запускаю :) аська 7876878 просто я на ачате не сижу....
mailbrush
01.08.2009, 16:12
Идите в ПМ/Аську ругаться, кодеры, блин...
ТС, стукни мне в аську, 674542, помогу :)
Естественно бесплатно :)
Парни, мне б его сделать в ближайшие дни. Сам бы пробовал всяко разно, но времени впритык, работать заставляют:-). Я могу написать в аську часа через три, но времени разбирать мало. Буду признателен за готовое решение. Кстати, забыл написать про плюсики в репутацию на анчате. Мне не жалко
root_sashok
01.08.2009, 16:32
Так что, у тебя получается что бот сам должен писать?
mailbrush
01.08.2009, 16:36
Вообще то, такие вещи пишутся на компилируемом языке.
root_sashok
01.08.2009, 16:38
mailbrush, почему? Боты на PHP неплохо работают.
ТС: тебе нужно, чтобы начинал пользователь... Например пишет он комманду Привет. Бот отвечает "Привет". Дальше уже идет вопрос "Ваш любимый цвет" и т.д. Я правильно понимаю?
mailbrush
01.08.2009, 16:42
root_sashok, я имею в виду в ТС'овом случае, т.к. сомневаюсь, что он купит и настроит платный хостинг. А на фришных стоит ограничение на время выполнения скрипта.
PS: ТС, ща забацаем :)
root_sashok
01.08.2009, 16:44
Тогда лучше действительно поставить денвер.
Deathdreams
01.08.2009, 16:54
Сообщения надо брать strtolower
mailbrush
01.08.2009, 17:02
Deathdreams, а я обойдусь и без этой ф-ции :)
Да, мне надо, чтоб бот сам писал. И вообще он должен работать всегда без какого-либо вмешательства человека.
JIexaPol
01.08.2009, 17:08
strtolower Эта функция разные кодировки не воспринимает у меня))..английские буквы преобразует а вот русские... ( по крайней мере это только у меня были такие проблемы )
у кого тоже проблема то у меня вот так:
function strtolowex($txt) {
$txt=strtolower(strtr($txt, "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧ ШЩЪЫЬЭЮЯ", "абвгдеёжзийклмнопрстуфхцч шщъыьэюя"));
return($txt);
}
:-)
Неужели никто не может помочь?
Надеялся на кодеров для начала)))
Условие например такое:
$а = "сколько вам лет";
$b = "любимый цвет";
$c = "1. да";
$d = "2. нет";
Дальше смысл такой: пишет чел в асю. Ему приходит первое сообщение из $а. Ответ на него записывается в бд. Как только ответили, бот отсылает второе сообщение из $b. Ответ снова сохраняется. Третим идет вопрос с вариантами ответа $c, $d. Если ответ приходит цифрой из вариантов, то идем дальше на условие if-else, иначе пишем текст с пояснением его ошибки и спрашиваем заново. Если ответ нормальный, то снова пишем его в бд. Ну и т.д.
Закину полтинник на счет тому, кто первым разместит работоспособный код. Спс. :-)
KaMiKadZe
02.08.2009, 08:04
Надеялся на кодеров для начала)))
Условие например такое:
$а = "сколько вам лет";
$b = "любимый цвет";
$c = "1. да";
$d = "2. нет";
Дальше смысл такой: пишет чел в асю. Ему приходит первое сообщение из $а. Ответ на него записывается в бд. Как только ответили, бот отсылает второе сообщение из $b. Ответ снова сохраняется. Третим идет вопрос с вариантами ответа $c, $d. Если ответ приходит цифрой из вариантов, то идем дальше на условие if-else, иначе пишем текст с пояснением его ошибки и спрашиваем заново. Если ответ нормальный, то снова пишем его в бд. Ну и т.д.
Закину полтинник на счет тому, кто первым разместит работоспособный код. Спс. :-)
Лучше иди книгу почитай...
Вот тебе для начала
interface IcqBot {
protected var $MsgIn = array();
protected var $MsgOut = array();
public function SendMessage($IcqNum,$MsgOut);
public function SaveAnswer($IcqNum,$MsqIn,$MsgOut);
}
И вообще если без знаний хотел скрипт, то тебе в раздел Покупка/Продажа, а то надоели "помогите написать" = "напишите за меня"
Почему у меня постоянно выскакивает ошибка:
Fatal error: Call to undefined function socket_create() in W:\home\localhost\www\WebIcqLite.class.php on line 393
391 function open($url = array('login.icq.com', 5190))
392 {
393 $this->socet = socket_create (AF_INET, SOCK_STREAM, SOL_TCP);
394 if ($this->socet < 0 || $this->socet === false)
395 {
dk-ne, вам уже в прошлых постах говорили, что у вас не включены сокеты. Если не работает denwer(хотя вам были предложены и номера ась для помощи и одно из решений, как включить), попробуйте другие сборки-сервера, например: Vertrigo, XMMP, UniServer
А как-то включить можно то, что есть уже?
KaMiKadZe
02.08.2009, 19:45
А как-то включить можно то, что есть уже?
Смотрим в php.ini (eg. %WINDIR%\php.ini) и смотрим в раздел "Dynamic Extensions". Там должна быть раскоментирована строчка "extension=php_sockets.dll ". Далее смотрим директиву "extension_dir" она должна указывать на путь где лежат все динамически подключаемые модули. Лезем туда и смотрим присутсвует ли библиотека там. Если да то читаем дальше, если нет то скачайте модуль под вашу версию php и положите в эту директорию.
У тебя зависит расположение php.ini от сборки как и прочее
И маленькие совет: Лучше все скрипты проверять на хостинге котором будете запускать этот скрипт, меньше гемороя после будет
Вобщем нет у меня там путей на модули. Php.ini у меня находится только в C://PHP. А стоит денвер. Причем кроме php.ini по тому пути ничего нет
imajo.ati
05.08.2009, 09:03
через поиск по файлам находишь все php.ini на твоём компьютере и если думать особо лень то во всех раскомментируешь модуль сокетов. как он называется уже сказали. как искать в файле строчку думаю тоже понятно )
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot