На этой страницеОт команды к сообщению
Первый плагин
Создайте команду .hello, которая заменяет текст перед отправкой.
От команды к сообщению
Сделаем плагин: пользователь пишет .hello Алиса, а собеседнику приходит Привет, Алиса!. Текст приветствия можно изменить в настройках.
Создать проект
python tools/dgplugin.py create hello --id dev.example.hello
Описать плагин
Замените hello/manifest.json следующим содержимым. Разрешение относится только к изменению текста перед отправкой; сетевой доступ этому плагину не нужен.
{
"kind": "donutgram.plugin",
"schemaVersion": 1,
"id": "dev.example.hello",
"name": "Приветствие",
"version": "1.0.0",
"description": "Превращает .hello имя в приветствие",
"author": { "name": "Ваше имя" },
"apiVersion": "^1.0.0",
"minClientVersion": "13.2",
"entry": "main.js",
"profile": "localPrivate",
"permissions": [
{
"capability": "messages.intercept",
"scope": "activeComposer",
"reason": "Заменять команду .hello перед отправкой"
}
],
"settingsSchema": {
"type": "object",
"properties": {
"greeting": {
"type": "string",
"title": "Приветствие",
"default": "Привет",
"maxLength": 80
}
}
}
}
Написать обработчик
Поместите этот код в hello/main.js. Маркер в первой строке обязателен.
const _plugin = "donutgram";
export default definePlugin({
async activate(api) {
await api.messages.beforeSend({ id: "hello" }, async input => {
const match = /^\.hello(?:\s+(.+))?$/.exec(input.text.trim());
if (!match) return {};
const name = match[1]?.trim();
if (!name) return { cancel: true };
const settings = await api.settings.get();
const greeting = settings.greeting || "Привет";
return { text: `${greeting}, ${name}!` };
});
}
});
Пустой объект оставляет сообщение без изменений. { text } заменяет его текст, а { cancel: true } останавливает отправку и сохраняет черновик.
Проверить и собрать
python tools/dgplugin.py validate hello
python tools/dgplugin.py pack hello hello.dgplugin
python tools/dgplugin.py validate hello.dgplugin
Установить
Отправьте hello.dgplugin документом в избранное. Откройте его в Donutgram, оставьте «Включить после установки» включённым и нажмите «Установить».
Напишите .hello Алиса. Затем откройте настройки плагина и измените приветствие. Обычные сообщения плагин не трогает.
Частые ошибки
- Маркер отсутствует или стоит после исполняемого кода.
- В
permissionsнетmessages.intercept / activeComposer. - В приложении выключен общий переключатель плагинов.
- Внутрь архива упакована папка
hello, а не её содержимое.
Используйте CLI pack: он сам создаёт правильную структуру архива.