Архив: Технология создания плагинов

Здесь обсуждаются технические аспекты создания дополнений.
Maxim Mirgorodsky
Администратор
Сообщения: 6869
Зарегистрирован: 09:56, 27.06.2005

Re: Технология создания плагинов

Сообщение Maxim Mirgorodsky »

Изменения по системе плагинов в клиенте 5.03:
- Исправлен ID события входа другого пользователя в канал (32);
- Добавлена возможность получения информации о подключенном пользователе (состояние, иконка, индикация активности, время простоя, активный процесс).

Изменения по системе плагинов в сервере 5.03:
- Добавлена возможность публикации изображений;
- Добавлена возможность получения информации о подключенном пользователе (состояние, иконка, индикация активности, время простоя, активный процесс);
- Папка для временных файлов плагинов создается автоматически;
- Исправлено отключение функции премодерации при остановке плагина;
- Исправлена ошибка при получении данных от программы с ID=1080;
- Исправлена ошибка при обработке запроса на изменение приветствия канала;
- Исправлена ошибка с отправкой события о выходе виртуального пользователя из канала (ID=1073);
- Исправлена ошибка с информацией об игнорировании виртуальных пользователей.

Документация по плагинам обновлена.

Обращаем внимание, что при публикации изображений серверный плагин должен самостоятельно сжимать изображения до допустимых (в системы плагинов предусмотрены функции для получения значений ограничений).
yaotzin
Сообщения: 105
Зарегистрирован: 01:38, 21.07.2008
Контактная информация:

Re: Технология создания плагинов

Сообщение yaotzin »

Где можно почитать или как сделать плагин на C# под клиент чата?.
Аватара пользователя
supermet
Сообщения: 245
Зарегистрирован: 02:35, 19.07.2009

Re: Технология создания плагинов

Сообщение supermet »

yaotzin писал(а):Где можно почитать или как сделать плагин на C# под клиент чата?.
У меня аналогичный вопрос - можно ли плагин написать на Java? Все таки Java и C# (.NET) во многом похожи.
ОреЛ
Сообщения: 376
Зарегистрирован: 11:18, 11.07.2008
Откуда: Ульяновск
Контактная информация:

Re: Технология создания плагинов

Сообщение ОреЛ »

supermet писал(а):У меня аналогичный вопрос - можно ли плагин написать на Java? Все таки Java и C# (.NET) во многом похожи.
Сорри за оффтоп
Я еще писал об этом, вроде, когда было тестирование системы плагинов, что необходим переписанный пример на C#. Вещь очень необходимая, имхо.
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
yaotzin
Сообщения: 105
Зарегистрирован: 01:38, 21.07.2008
Контактная информация:

Re: Технология создания плагинов

Сообщение yaotzin »

ОреЛ писал(а):Сорри за оффтоп
Я еще писал об этом, вроде, когда было тестирование системы плагинов, что необходим переписанный пример на C#. Вещь очень необходимая, имхо.
Я это писал еше в 4й версии чтоб сделали :mrgreen: так что я раньше :mrgreen:
Я пытался написать но там такие для C# мутки были чтоб написать подгружаемую библиотеку, что то типа написать на C++ чтоб потом этот C++ подключал C# библиотеку. Что то в таком духе. Хотя может сейчас ситуация изменилась.
$teelR@t
Сообщения: 348
Зарегистрирован: 19:14, 30.03.2008
Откуда: Украина
Контактная информация:

Re: Технология создания плагинов

Сообщение $teelR@t »

Проблема с удалением пользователя с сервера.
Вызываю событие с ID 1071, передаю ник бота и ник удаляемого пользователя. Права у бота полные, пользователь 100% зарегистрирован на сервере. Ошибок с памятью никаких не происходит, пользователь с сервера не удаляется :( . В чем может быть проблема?
Аватара пользователя
supermet
Сообщения: 245
Зарегистрирован: 02:35, 19.07.2009

Re: Технология создания плагинов

Сообщение supermet »

yaotzin писал(а): Я это писал еше в 4й версии чтоб сделали :mrgreen: так что я раньше :mrgreen:
Я пытался написать но там такие для C# мутки были чтоб написать подгружаемую библиотеку, что то типа написать на C++ чтоб потом этот C++ подключал C# библиотеку. Что то в таком духе. Хотя может сейчас ситуация изменилась.
Если бы протокол Коммфорт был открыт(как в Jabber), ботов можно было бы написать на любом языке - Python, Perl, C++ и др., запускаемых как процесс или сервис. Например, для Jabber есть куча Python ботов с открытым кодом Talisman, Isida, Gluxi и т.д. Для этого не нужен ни клиент, ни сервер.
yaotzin
Сообщения: 105
Зарегистрирован: 01:38, 21.07.2008
Контактная информация:

Re: Технология создания плагинов

Сообщение yaotzin »

supermet писал(а):Если бы протокол Коммфорт был открыт(как в Jabber), ботов можно было бы написать на любом языке - Python, Perl, C++ и др., запускаемых как процесс или сервис. Например, для Jabber есть куча Python ботов с открытым кодом Talisman, Isida, Gluxi и т.д. Для этого не нужен ни клиент, ни сервер.
Это не так уж сложно написать эмуляцию пакетов чат клиента, но требует много времени, но это того не стоит. Просто нужна поддержка подгружаемых библиотек с C#.
ZigZagkms
Сообщения: 109
Зарегистрирован: 08:23, 11.12.2008
Откуда: Комсомольск-на-Амуре
Контактная информация:

Re: Технология создания плагинов

Сообщение ZigZagkms »

ZigZagkms писал(а):Серверный плагин. Инициирование событий.
Почему то у событий "Создать общий канал или подключиться к уже существующему" и "Изменить иконку" одинаковое ID... 1026..
Попробовал сменить иконку а сервер мне в ответ событие с id 1091 "Подключение к каналу виртуального пользователя невозможно".
жаль что мое сообщение было проигнорировано и ошибка не была исправлена =(
Забросил, всем спасибо, исходники раздаю кому надо https://github.com/ZigZagkms
$teelR@t
Сообщения: 348
Зарегистрирован: 19:14, 30.03.2008
Откуда: Украина
Контактная информация:

Re: Технология создания плагинов

Сообщение $teelR@t »

ZigZagkms писал(а):жаль что мое сообщение было проигнорировано и ошибка не была исправлена =(
:D сам только заметил, что реально один и тот же ID))).. глупо...

Maxim Mirgorodsky, жду ответа http://www.commfort.com/ru/forum/viewto ... 736#p47736
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

Re: Технология создания плагинов

Сообщение @serg@ »

Было замечено очень странное поведение клиента коммфорта. Если плагин будет работать в момент, когда авторизация пользователя не завершена, то клиент перестаёт видеть сервер. Подобная ситуация произошла с моим плагином, при запуске на нём бота, бот пытается опубликовать сообщение в приват, при этом приватный канал создаётся (авторизация на сервере при этом ещё не завершена) и закрывается но на сервер в это время попасть не получается, вот один из пользователей плагина прислал http://www.commfort.com/ru/forum/downlo ... hp?id=2390.

Это моя недоработка и мне необходимо постоянно контролировать состояние связи. Или это проблема системы плагинов, которую вы будете исправлять?
Maxim Mirgorodsky
Администратор
Сообщения: 6869
Зарегистрирован: 09:56, 27.06.2005

Re: Технология создания плагинов

Сообщение Maxim Mirgorodsky »

ZigZagkms писал(а):жаль что мое сообщение было проигнорировано и ошибка не была исправлена =(
Приносим извинения, первоначально неправильно поняли информацию об ошибке. Разумеется, в следующей версии сервера исправим.
$teelR@t писал(а):Проблема с удалением пользователя с сервера.
Вызываю событие с ID 1071, передаю ник бота и ник удаляемого пользователя. Права у бота полные, пользователь 100% зарегистрирован на сервере. Ошибок с памятью никаких не происходит, пользователь с сервера не удаляется :( . В чем может быть проблема?
Проблема подтвердилась, спасибо, в следующей версии сервера исправим.
Maxim Mirgorodsky
Администратор
Сообщения: 6869
Зарегистрирован: 09:56, 27.06.2005

Re: Технология создания плагинов

Сообщение Maxim Mirgorodsky »

@serg@ писал(а):Было замечено очень странное поведение клиента коммфорта. Если плагин будет работать в момент, когда авторизация пользователя не завершена, то клиент перестаёт видеть сервер. Подобная ситуация произошла с моим плагином, при запуске на нём бота, бот пытается опубликовать сообщение в приват, при этом приватный канал создаётся (авторизация на сервере при этом ещё не завершена) и закрывается но на сервер в это время попасть не получается, вот один из пользователей плагина прислал http://www.commfort.com/ru/forum/downlo ... hp?id=2390.

Это моя недоработка и мне необходимо постоянно контролировать состояние связи. Или это проблема системы плагинов, которую вы будете исправлять?
Для этого реализовано получение данных от программы с ID=11 (состояние связи с сервером и авторизации). Считаем логичным именно на стороне плагина контролировать состояние подключения к серверу, так как команды инициируемые плагином выполняться не будут и эта информация плагину необходима в большинстве случаев. А в клиенте ближайшей версии сделаем полное игнорирование до авторизации событий, которые могут производиться только после авторизации.
Аватара пользователя
Aarts
Сообщения: 3
Зарегистрирован: 19:26, 11.11.2010

Re: Технология создания плагинов

Сообщение Aarts »

А где документация по плагинам? Один раз я как-то я скачал её отсюда: http://www.commfort.com/ru/forum/viewto ... =28&t=6418 , самое первое сообщение в теме. Но теперь, когда я обновился до 5.03 и плагин который я долго и упорно писал перестал работать, я, естественно, начал искать доки. Доков не нашёл. Подскажите мне, слабозрячему, где найти обновленную документацию по плагинам. То бишь для версии 5.03.
Даже Яндексом не нашёл ОО
http://yandex.ru/yandsearch?text=%D0%B4 ... mmfort.com
----

И да, пользуясь случаем.
Мне нужно получить Текущего пользователя. Delphi. Функция PluginGetData. ID для получения 12. Что-то я вообще не знаю как это сделать. Всяко-разно пробовал — тщетно.
Подскажите, пожалуйста.
http://mediumeex.livejournal.com
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

Re: Технология создания плагинов

Сообщение @serg@ »

Aarts писал(а):А где документация по плагинам? Один раз я как-то я скачал её отсюда: http://www.commfort.com/ru/forum/viewto ... =28&t=6418 , самое первое сообщение в теме. Но теперь, когда я обновился до 5.03 и плагин который я долго и упорно писал перестал работать, я, естественно, начал искать доки. Доков не нашёл. Подскажите мне, слабозрячему, где найти обновленную документацию по плагинам. То бишь для версии 5.03.
Даже Яндексом не нашёл ОО
http://yandex.ru/yandsearch?text=%D0%B4 ... mmfort.com
----

И да, пользуясь случаем.
Мне нужно получить Текущего пользователя. Delphi. Функция PluginGetData. ID для получения 12. Что-то я вообще не знаю как это сделать. Всяко-разно пробовал — тщетно.
Подскажите, пожалуйста.
Всё лежит на прежнем месте, в шапке топика http://www.commfort.com/download/commfo ... doc_ru.zip.
Как на дельфи не знаю, но могу привести код с++, может поможет.

Код: Выделить всё

   AnsiString aData;//буфер
	int iSize = (*CommFortGetData)(12, dwID, NULL, NULL, NULL, NULL); //получаем объем буфера
	aData.SetLength(iSize);
	(*CommFortGetData)(12, dwID,aData.c_str(),iSize, NULL, NULL);//заполняем буфер
	int rOffset=0;
	fReadText(aData.c_str(),&rOffset);//тут имя твоего пользователя
Закрыто