April 23, 2021

Разработка плагина (PluginAPI 1.0) для бота 🤖 (Premium 👑)

Функционал плагинов доступен только обладателям Premium 👑

Предварительная настройка (Visual Studio, C#)

Тип проекта: Библиотека классов (.NET Framework)
Имя главного класса: Любое
Имя публичного класса: Engine
Имя метода: Kernel
Принимаемые значения метода:

  • api - версия PluginAPI
  • arguments - параметр(ы), который(е) был(и) отправлен(ы) плагину
  • path - путь к папке с плагином (при тестировании с помощью /import данный параметр не доступен, т.к. он необходим только после установки плагина пользователем из Менеджера плагинов, его необходимо удалить из определения метода Kernel при тестировании, но обязательно нужно добавить перед использованием WiT PluginSDK)
  • wit_path - путь к WiT3.exe (без самого файла) (рабочая папка для плагина)
  • token - токен бота 🤖
  • username - @username пользователя (именно того, который пользуется ботом 🤖 в данный момент)
  • userid - UserID пользователя (именно того, который пользуется ботом 🤖 в данный момент)

Пример кода (для тестирования с помощью /import)

public class Engine
{
    public string Kernel(string api, string arguments, string wit_path, string token, string username, string userid)
    {
        return "Message: Hello World!\nAPI: " + api + "\nArguments: " + arguments + "\nWiT Path: " + wit_path + "\nToken: " + token + "\nUsername: " + username + "\nUserID: " + userid;
    }
}

Замените код из Engine.cs на тот, что приведён выше

Данный код выведет в бота 🤖 текст, который указан в операторе return

Пример кода (перед использованием WiT PluginSDK)

public class Engine
{
    public string Kernel(string api, string arguments, string path, string wit_path, string token, string username, string userid)
    {
        return "Message: Hello World!\nAPI: " + api + "\nArguments: " + arguments + "\nPath: " + path + "\nWiT Path: " + wit_path + "\nToken: " + token + "\nUsername: " + username + "\nUserID: " + userid;
    }
}

Если вы хотите сделать свой плагин настраиваемым

Если вы собираетесь сделать свой плагин с настройками, то обязательно убедитесь, что они будут записаны в файл core.pcf, который будет лежать в папке с плагином. Рекомендуемый формат настроек - ini, но можно использовать и более современные - xml, json и другие. Созданный файл необходимо ложить всегда рядом с DLL плагина во время тестирования в боте 🤖. При работе с WiT PluginSDK необходимо добавить файл конфигурации вручную, после добавления Библиотеки плагина, с помощью импорта Дополнительных файлов

Зарезервированные параметры

Данные параметры нельзя использовать в своём плагине, т.к. они зарезервированы для доступа к служебным функциям плагина:

  • about - используется для вывода информации о плагине, которую также можно увидеть в Менеджере плагинов (указывается в WiT PluginSDK)
  • help - используется для вывода справки по плагину (указывается во время работы в WiT PluginSDK), параметр поддерживает HTML-форматирование при выводе

Однако данные параметры можно использовать во время отладки, т.к. они не используются во время тестирования с помощью команды /import из режима разработчика 🔨

Я использую дополнительные библиотеки в своём проекте плагина. Будут ли они корректно работать?

Да, будут, Возможно (пока это тестируется), но есть ограничение - все библиотеки должны будут добавляться вручную через ссылки проекта в Visual Studio. Также потребуется удалить файл app.config из Обозревателя решений.

Для тех, кто использует NuGet для установки библиотек - есть решение. Необходимо установить все библиотеки и, после их установки, Собрать решение. Далее скопируйте все DLL от установленных библиотек, которые появились в папке после компиляции, в другое место, которое будет доступно вам всегда в случае Пересборки решения. Теперь удалите все библиотеки из NuGet. Добавьте ссылку на библиотеки, которые вы ранее скопировали. Соберите решение и проверьте работоспособность.

Тестирование

1. Скомпилируйте плагин

2. Полученный DLL скопируйте в папку 📁 с приложением и переименуйте в api.dll (в будующем файл плагина переименовывать нельзя)

Введите нужный параметр (если параметр не требуется то введите любой символ)

3. В боте 🤖 активируйте режим разработчика 🔨 и отправьте /import

4. Получите ответ от плагина 👍

5. Если вы получили ответ Ошибка 🙁: Импорт недоступен!, значит Вы что-то упустили или сделали неверно, перепроверьте свои действия, особенно код самого плагина! Если всё верно, то попробуйте перезапустить приложение и выполнить пункт 4 заново

Подготовка к публикации (WiT PluginSDK)

Работа с SDK (создание установщика плагина)

  1. Протестируйте плагин в соответствии с инструкцией выше
  2. Скачайте WiT PluginSDK
  3. Заполните графу Настройки проекта
  4. Выберите API последней версии Windows in Telegram. Нумерация API идёт от Windows in Telegram версии 3.3. Соответственно для версии 3.3 версия API будет 1.0, для последующих версий Windows in Telegram - версия API увеличивается
  5. Нажмите Проект Сформировать проект
  6. Нажмите Импортировать рядом с Библиотека плагина и выберите собранный вами файл плагина (api.dll). При необходимости можно добавить дополнительные файлы: нажмите Импортировать рядом с Дополнительные файлы. Файлы и библиотеку плагина также можно удалять в соответствующей графе снизу
  7. Нажмите Проект Упаковать плагин и сохраните установщик плагина под названием плагина

Обновление существующего установщика плагина

  1. Протестируйте плагин в соответствии с инструкцией выше
  2. Если работали с другим плагином или прошлой версией этого плагина, то нажмите Проект Очистить сформированный проект
  3. Нажмите Проект Открыть плагин и выберите файл установщика плагина
  4. Нажмите Проект Сформировать проект
  5. Выполните редактирование плагина в соответствии с пунктами 3 и 6 из раздела Работа с SDK (создание установщика плагина)
  6. Нажмите Проект Сформировать проект
  7. Нажмите Проект Упаковать плагин и сохраните установщик плагина под названием плагина

Примечание

  • В случае возможных проблем используйте Проект Очистить сформированный проект, а далее Проект → Сформировать проект. Теперь можете сделать необходимое действие
  • Если у вас уже присутствует Библиотека плагина и её не возможно обновить/заменить, то удалите её в Дополнительных файлах и добавьте обновлённый api.dll. По аналогии нужно поступать и при обновлении/замене Дополнительных файлов

Публикация

Полученный установщик плагина отправьте @Zalexanninev15 со следующим сообщением:

Name=[Название плагина]
Version=[Верcия]
Author=[Автор]
About=[Описание]

Максимальный размер установщика плагина для публикации - 25 МБ!