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.ChatManager.dll

Дополнительно

Присутствует возможность использования XML-документации для упрощения навигации при разработке.
Для этого используйте файл, который поставляется отдельно — API.ChatManager.xml

  class Modules
  ├── class Users
  │   ├── class Get
  │   │   ├── enum TypeId
  │   │   ├── enum TypeInfo
  │   │   ├── Dictionary Operation(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