Donutgramплагины
На этой страницеAPI files

Выбор файла

Попросите пользователя выбрать небольшой текстовый файл и прочитайте его по handle.

API files

Нужна возможность files.userSelected / selectedFile. Выбор выполняется через нативный интерфейс по явному действию пользователя.

Выбрать и прочитать

const picked = await api.files.pick();
const result = await api.files.read({ handle: picked.handle });
const text = result.text;

pick() возвращает handle, name и size. read() возвращает { text, encoding: "utf8" }.

Что именно доступно

Контракт предназначен для выбранного пользователем ограниченного UTF-8 текста. Текущий нативный адаптер ограничивает чтение 48 КиБ. Это не API произвольных путей, папок, загрузок или внешних носителей.

Handle принадлежит текущему runtime, истекает и не должен сохраняться между запусками. Отмена выбора — нормальный исход операции.

Пример применения

Импорт собственной таблицы замен: пользователь выбирает JSON-файл, плагин читает его как текст, проверяет структуру и сохраняет допустимые записи в собственный storage.

const picked = await api.files.pick();
const { text } = await api.files.read({ handle: picked.handle });
const value = JSON.parse(text);
if (!Array.isArray(value)) throw new Error("Ожидался список замен");

Не записывайте разобранный объект без проверки его размера, типов и ожидаемых полей.

Ресурсы из пакета

Для собственных изображений используйте assets. Установка .dgplugin выполняется открытием документа в чате, а не этим API выбора пользовательского текста.