Icq bot на php

Статус
В этой теме нельзя размещать новые ответы.

IEviLBoYI

Создатель
Регистрация
23 Ноя 2007
Сообщения
15
Реакции
0
Пользуюсь следующим ботом
PHP:
<?php 
error_reporting (E_ALL); 
set_time_limit(0); 
ini_set ('max_execution_time', "0"); 
require_once('WebIcqLite.class.php'); 
define('UIN', '666666'); 
define('PASSWORD', '666666'); 

//начало курс валют 



$content = get_content(); 
$pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i"; 
preg_match_all($pattern, $content, $out, PREG_SET_ORDER); 
$dollar = ""; 
$euro = ""; 
foreach($out as $cur) 
{ 
if($cur[2] == 840) $dollar = str_replace(",",".",$cur[4]); 
if($cur[2] == 978) $euro = str_replace(",",".",$cur[4]); 
} 

function get_content() 
{ 
// Формируем сегодняшнюю дату 
$date = date("d/m/Y"); 
// Формируем ссылку 
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date"; 
// Загружаем HTML-страницу 
$fd = fopen($link, "r"); 
$text=""; 
if (!$fd) echo "Запрашиваемая страница не найдена"; 
else 
{ 
// Чтение содержимого файла в переменную $text 
while (!feof ($fd)) $text .= fgets($fd, 4096); 
} 
// Закрыть открытый файловый дескриптор 
fclose ($fd); 
return $text; 
} 

// конец курс валют 

$icq = new WebIcqLite(); 
if(!$icq->connect(UIN, PASSWORD)) 
{ 
echo $icq->error; 
exit(); 
} 

while($icq->is_connected()){ 
$msg = $icq->read_message(); 
switch (strtolower($msg['message'])) { 
case'курс': 
$icq->send_message($msg['from'], 'Центральный банк Российской Федерации ([url]http://www.cbr.ru/[/url]) 
Доллар - '.$dollar.' 
Евро - '.$euro); 
break; 

case'помощь': 
$icq->send_message($msg['from'], 'Доступные команды: 
курс - выводит курс валют #Доллар и Евро# 
info - информаци о БОТе 
'); 
break; 

case'info': 
$icq->send_message($msg['from'], ' исходник БОТа с функцией вывода вылют'); 
break; 

case'quit': //сообщение для бота 
$icq->disconnect(); //действие бота (выход) 
exit; 
break; 

default: //если сообщение не содержит команду 
$icq->send_message($msg['from'], 'Введена неверная команда для отображения списка команд введите: помощь'); //ответ бота 
} 
flush(); 
sleep(1); 
} 
?>
Бот работает на классе WebIcqLite.class
Очень хочется переделать бота под свои нужды...
Ну например что-бы бот вместо курса выдавал погоду со страницы mail.ru, ну или более сложные запросы...
Я учусь в МФПА, оооочень хочется сделать удобный сервис расписания, и что-бы по команде в которой указана группа и дата в ответ приходило сообщение с парами. вот ссылка на страницу с расписанием
Проблема в том, что опыта в программировании на php я не имею, но имеется множество идей для реализации.
 
Так что Вам мешает приобретать опыт, за вас писать никто не будет, а подсказать это можно, такщо пишите где у вас возникает не ясность в скрипте.
 
Есть у меня такой бот, напиши в PM. делал тоже под расписание занятий))
 
Есть у меня такой бот, напиши в PM. делал тоже под расписание занятий))

Так выложи, неужели там такой код сложный и копирайченный? :)

Как универсальное решение - распарсить регуляркой страницу с нужным тебе контентом и слать её в аську
 
потихоньку начинаю врубать в тему.
НО есть много непонятных вещей, например что-это за строчка из кода?
$pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#
Что это озаначает???? не понимаю в ней смысла.
 
копай регулярные выражения ( regexp ) -- рядом по ним целый раздел
 
Это регулярное выражение формата РСRЕ, а точнее - шаблон. Функция preg_match возвращает строку с того места, которое соответствует этому шаблону, в данном случае, как я понял, с того момента когда начинается вывод валют и их курсов. Потом с ним выполняются строковые операции. Для грабберов (пример которого собственно представлен выше) - самое оно
 
Добавляем новый вариант выбора case ... где ikomanda будет то, на что наш бот будет реагировать, т.е. наше расписание...

а в переменную $raspisanije суем наше расписание которое мы скажем выводим в зависимости от нашей даты ... как с курсом валют...

PHP:
case'ikomanda':  
$icq->send_message($msg['from'], $raspisanije);  
break;
 
Полезная темка, только парсинг не совсем понятен...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху