ICQ Bot

Мои поделки
Ответить
TechMike
Site Admin
Сообщения: 210
Зарегистрирован: Вт окт 06, 2009 3:37 pm
Контактная информация:

ICQ Bot

Сообщение TechMike »

Была поставлена задача, получить доступ к информации о температуре в квартире из вне, так как на работе и с телефона активно пользовалась ICQ то это было самым удобный для меня способом получать информацию.
Непосредственно температура собиралась устройством и программой, описанной в статье
Сеть температурных датчиков по квартире (умнеющий дом) viewtopic.php?f=3&t=5, и сама программа скидывала данные об измеренной температуре в файл curtemmp.html, то из него можно было получать текущую температуру по всем датчикам.
Далее последовал поиск в интернете, на основе какого протокола и желательно на VB5 или PHP можно было написать некую программу. Как оказалось протокол передачи сообщений по ICQ ни где не описан самим производителем и владельцем ICQ сервиса, да к тому же этот протокол периодически меняется и дополняется, причем не всегда совместим с предыдущей версией. Соответственно выдумывать, трейсить и потом периодически править программу, которая будет слать и принимать сообщения по ICQ очень трудоемко.
Решение было найдено всем известная Miranda im и плагина к ней под названием mBot, если кратно, кто при приходе сообщения в Miranda можно вызывать обычный PHP скрипт, в котором и обрабатывать, что пришло и от кого. Ноне все так просто, так как для работы этого плагина нужно устанавливать саму миранду, настраивать ее на переподключение при разрыве связи, регистрировать UIN, обновлять версию миранды, но зато все это совершенно бесплатно!
Что нужно сделать:
1. Качаем дистриутив Miranda Im вот от сюда http://www.miranda-im.org/
2. Качаем плагин MBot вот отсюда http://www.mbot.ovh.org/doku.php?id=dow ... 162e7f7fd8 или берем у меня files/miranda+mbot+dll.rar вместе с дистрибутивом миранды и все нужными библиотеками.
3. Настраиваем работу MBot в Miranda как написано вот здесь http://www.mbot.ovh.org/doku.php?id=installation
Вот в принципе и все, теперь нужно написать саму логику работы, которая мне была нужна следующая:
Отправлять температуру нужно только определенным контактам в ICQ и только при получении от них определенных команд. Есть пользователи с правами админа (файл admin.perm) и пользователи у которых просто доступен сервис (users.perm)
Админам не нужно вводить пароль (так и не было реализовано), как и пользователям, для остальных будет один пароль (так и не было реализовано) на выполнение почти всех действий. Админ может добавить пользователя в админы и удалить их оттуда, пользователь не может ничего, кроме как давать определенные команды и получать на них ответ.

Список команд:
РЕАЛИЗОВАНО И РАБОТАЕТ:
!ver или !info
Выдает информацию о программе, версию, IP адрес, текущее время, название машины, на какой ОС работает, загруженость системы.

!температура или !temp
Выдает считаную температуру с данчиков ds18b20(файл на экран выводит).

!users или !пользователи
Выдат список пользователей администраторов и просто узеров по номерам асек.

!adduser [uin]
Добавляет новых пользователей, с проверкой на уже добавленых по номерам асек.

!addadmin
Добавляет новых администраторов с проверкой на уже добавленых по номерам асек.

!test
Проверка связи, в ответ получаете PASSED.

!logs
Присылает часть лог-файла по пользованию сервисом

!курс или !course
Выдает текущий курс долара к рублю, евро к рублю и евро к долару, возможно выдаст еще изменение курсов по сравнению с предыдущим днем.

!пробки или !probki
Выдает текстовую информацию по пробка на текущую дату с Яндекса для Москвы.

!deluser [uin]
Удаляет пользователя с указаным uin из списка пользователей.

ПЛАНИРУЕТСЯ ДОБАВИТЬ (так и не было сделано):

!погода или !weather [город]
Выдает текущую погоды на 5 дней в перед для указаного города, если город не задан, то берется для Москвы.

!changepass [uin] [pass]
Меняет глобальный пароль для неавторизованых пользователей.

[www email url]
Присылает на указный email указаную страницу в mth или html.

Сам скрипт, реализующий такую логику можно скачать здесь files/php_script_mbot.rar, так как сервер, на котором работало все это, был залит водой и сгорел, то больше это не используется.
Ответить