Включение чата
1. Скачиваем самую последнюю версию чата.
2. Распаковываем архив и запускаем файл ICQChat Manager.exe
3. Переходим в Меню » Общие » Настройки.
4. Заполняем данные авторизации и нажимаем «Сохранить».
5. Запускаем чат через Меню » Общие » Подключиться, или же сочетанием клавиш Ctrl + Enter.
Командная строка
/server:<address> — изменение стандартного сервера авторизации (login.icq.com), <address> — новый адрес.
/port:<port> — изменение стандартного порта авторизации (5190), <port> — новый порт.
/debug — включение режима отладки.
/timeout:<timeout> — изменение стандартного времени паузы между сообщениями (200 мсек), <timeout> — новый таймаут.
Возможные проблемы
Изменение данного параметра влияет на оптимизацию. Изменять его рекомендуется только в том случае, если при большой нагрузке сервер разрывает соединение, и, как следствие, чат инициализирует новую попытку подключения.
Ссылка на данную страницу: http://icqmanager.net/index/doc/0-24-1
Создание плагинов
1. Открываем Visual Studio Express 2012 и создаем новый проект «Библиотека классов».
2. Добавляем ссылку на Interface.dll и Components.dll (находятся в корневой папке программы).
3. Объявляем новый класс, который унаследуем от Interface.IPlugin
4. Описываем информацию о плагине.
public string Name { get { return "Тест"; } } public string Version { get { return "1.0"; } } public string Author { get { return "Username"; } } public string Description { get { return "Тестовый плагин"; } } public string[] Commands { get { return new string[] { "!тест" }; } } public string[][] Help { /* * Вывод команды в справке * Первое значение - номер типа справки * 1 - Основное * 2 - Пользователи * 3 - Игры * 4 - Вип команды * 5 - Админские команды * * Второе значение - строка выводимая в справке */ get { return new string[][] { new string[] { "1", Commands[0] + " - тестовая команда" } }; } }
Public ReadOnly Property Name As String Implements [Interface].IPlugin.Name Get Return "Тест" End Get End Property Public ReadOnly Property Version As String Implements [Interface].IPlugin.Version Get Return "1.0" End Get End Property Public ReadOnly Property Author As String Implements [Interface].IPlugin.Author Get Return "Username" End Get End Property Public ReadOnly Property Description As String Implements [Interface].IPlugin.Description Get Return "Тестовый плагин" End Get End Property Public ReadOnly Property Commands As String() Implements [Interface].IPlugin.Commands Get Return New String() {"!тест"} End Get End Property Public ReadOnly Property Help As String()() Implements [Interface].IPlugin.Help Get 'Вывод команды в справке 'Первое значение - номер типа справки '1 - Основное '2 - Пользователи '3 - Игры '4 - Вип команды '5 - Админиские команды 'Второе значение - строка выводимая в справке Return New String()() {New String() {"1", Command(0) + " - тестовая команда"}} End Get End Property
5. Ставим обработчик точки входа в плагин.
public void Main(Interface.IResult Application) { Application.ReceivedMessageEvent += new ReceivedMessageEventHandler(Application_ReceivedMessageEvent); }
Public Sub Main(Application As Interface.IResult) Application.ReceivedMessageEvent += New ReceivedMessageEventHandler(Application_ReceivedMessageEvent) End Sub
6. Прописываем обработчик события принятия сообщения.
public bool Application_ReceivedMessageEvent(object sender, Components.ReceivedMessageEventArgs eArgs) { // Делаем необходимые проверки ((IResult)sender).SendMessage(eArgs.UIN, "Тестовое сообщение"); // Отсылаем ответ отправителю return true; // Если все проверки были пройдены — возвращаем истину, иначе — ложь }
Public Function Application_ReceivedMessageEvent(sender As Object, eArgs As Components.ReceivedMessageEventArgs) As Boolean ' Делаем необходимые проверки DirectCast(sender, IResult).SendMessage(eArgs.UIN, "Тестовое сообщение") ' Отсылаем ответ отправителю Return True ' Если все проверки были пройдены — возвращаем истину, иначе — ложь End Function
7. Компилируем, нажав F6.
8. Копируем получившийся *.dll файл в папку /plugins.
9. Запускаем чат и проверяем успешность загрузки плагина.
Ссылка на данную страницу: http://icqmanager.net/index/doc/0-24-2
Шаблоны сообщений
В шаблонах сообщений присутствует возможность вывода практический любой динамической информации из чата (никнейм пользователя, ID комнаты, текущего часа и т.д.), что осуществляется путем помещения переменной в код шаблона.
Все переменные по своей структуре подобны <module:type>
module — инициализирует все переменные заданного модуля (всего их 4).
type — тип переменной, для которой необходимо получить значение.
Стоит учитывать, что в шаблоне каждого сообщения доступны только те модули, которые связаны с выводом этих сообщений. К примеру, в сообщении о смене комнаты невозможно разместить данные из модуля «Викторина (quiz)». Однако, модуль «Время (time)» работает во всех шаблонах.
Ниже приводится таблица переменных для всех модулей чата.
Модуль | Тип | Описание | Пример |
---|---|---|---|
Пользователи (user) | uin | UIN пользователя. | <user:uin> |
id | ID пользователя. | <user:id> |
|
nick | Никнейм пользователя. | <user:nick> |
|
group | Название группы пользователя. | <user:group> |
|
group_id | ID группы пользователя. | <user:group_id> |
|
name | Имя пользователя. | <user:name> |
|
sex | ID пола пользователя. | <user:sex> |
|
city | Город пользователя. | <user:city> |
|
money | Количество денег пользователя. | <user:money> |
|
status | Статус пользователя. | <user:status> |
|
Комнаты (room) | id | ID комнаты. | <room:id> |
name | Название комнаты. | <room:name> |
|
description | Описание комнаты. | <room:description> |
|
closed | Булевое число, указывающее на доступность комнаты для входа. | <room:closed> |
|
quiz | Булевое число, указывающее на проводимость викторины в комнате. | <room:quiz> |
|
access | ID групп через запятую, которым разрешено входить в комнату. | <room:access> |
|
Викторина (quiz) | id | ID вопроса. | <quiz:id> |
question | Содержание вопроса. | <quiz:question> |
|
answer | Правильный ответ на вопрос. | <quiz:answer> |
|
prompt | Подсказка на вопрос. | <quiz:prompt> |
|
bonus | Бонус за дачу правильного ответа. | <quiz:bonus> |
|
Время (time) | hour | Текущий час. | <time:hour> |
minute | Количество минут, прошедших с нулевой минуты текущего часа. | <time:minute> |
|
second | Количество секунд, прошедших с нулевой секунды текущей минуты. | <time:second> |
|
month | Название текущего месяца. | <time:month> |
|
tod | Текущее время суток (1 - ночь, 2 - утро, 3 - день, 4 - вечер). | <time:tod> |
|
season | Текущее время года (1 - зима, 2 - весна, 3 - лето, 4 - осень). | <time:season> |
Условные операторы
Возможные проблемы
Данная функция представляет собой отдельный метод-обработчик, разработка которого еще продолжается.
При использовании могут возникать отдельные ошибки, но, тем не менее, они никак не скажутся на основных функциях чата.
Движок чата также поддерживает условные операторы.
Их применение бывает зачастую своеобразным, что и делает их полезным инструментом для создания уникального чата.
Синтаксис условных блоков следующий:
<?if(<expression>)?>
— задает границу начала условия и выражение.
<?else?>
— задает границу инверсии выражения, если первое выражение возвратило ложь, выведется то, что стоит после этого кода.
<?endif?>
— задает конечную границу условия.
Пример условия:
<?if(<time:tod>='1')?>Доброй ночи<?endif?><?if(<time:tod>='2')?>Доброе утро<?endif?><?if(<time:tod>='3')?>Добрый день<?endif?><?if(<time:tod>='4')?>Добрый вечер<?endif?>
Функции работы со строками
Для расширения возможности «программирования» выводимых сообщений были добавлены функции для работы со строками.
Любая из функций выполнится только в том случае, если она заключена между <?
и ?>
, иначе выведется обычным текстом.
Функция | Параметры | Описание | Пример |
---|---|---|---|
substr | string, int, int | Возвращает подстроку из строки, начиная с указанной позиции (первый символ имеет позицию 0), с указанной длинной символов. Если длина строки не указана, возвращается подстрока с указанной позиции до конца строки. Если указанная начальная позиция отрицательна, начальная позиция отсчитывается от конца строки. Если указанная длина строки отрицательна, задается конечная позиция от конца строки. | <?substr('Доброе утро', 7)?> |
strpos | string, string | Ищет первое вхождение подстроки в строку. Сравнение производится с учетом регистра. Возвращает целое число — позицию подстроки в строке, считая от 0. Если вхождение не найдено, возвращает -1. | <?strpos('Доброе утро', 'утро')?> |
len | string | Возвращает длину строкового параметра. Результат всегда целочисленный. | <?len('Доброе утро')?> |
Ссылка на данную страницу: http://icqmanager.net/index/doc/0-24-3
API чата
Программа чата использует функции для работы с базами данных чата (пользователи, комнаты), которые могут быть также использованы и через плагины. Набор всех этих функции расположен в единой библиотеке API.ChatManager.dll
Дополнительно
Присутствует возможность использования XML-документации для упрощения навигации при разработке.
Для этого используйте файл, который поставляется отдельно — API.ChatManager.xml
Структура библиотеки
class Modules ├── class Users │ ├── class Get │ │ ├── enum TypeId │ │ ├── enum TypeInfo │ │ ├── DictionaryOperation(TypeId type, long id) │ ├── class Set │ │ ├── enum TypeId │ │ ├── enum TypeInfo │ │ ├── Operation(TypeId typeId, long id, TypeInfo typeInfo, string value) ├── class Rooms │ ├── class Get │ │ ├── enum TypeInfo │ │ ├── Dictionary Operation(long id) │ ├── class Set │ │ ├── enum TypeInfo └── └── └── Operation(long id, TypeInfo typeInfo, string value)
Ссылка на данную страницу: http://icqmanager.net/index/doc/0-24-4