Documentation Index
Fetch the complete documentation index at: https://bym.lonestill.uk/llms.txt
Use this file to discover all available pages before exploring further.
Минимальный плагин
Создай файл my-plugin.js в папке плагинов:
BYM.register({
id: 'my-plugin',
name: 'Мой плагин',
version: '1.0.0',
description: 'Описание',
author: 'Имя',
}, (api, getSetting) => {
return {
start() {
// вызывается при включении
},
stop() {
// вызывается при выключении
},
};
});
Файл подхватится автоматически. Включить плагин можно в BYM → кликнуть на него → тогл.
Плагин с настройками
BYM.register({
id: 'track-logger',
name: 'Track Logger',
version: '1.0.0',
settings: [
{ key: 'notify', type: 'boolean', label: 'Системное уведомление', default: true },
{ key: 'format', type: 'select', label: 'Формат',
options: ['artist — title', 'title'], default: 'artist — title' },
],
}, (api, getSetting) => {
function onTrack(track) {
if (!track) return;
const fmt = getSetting('format') ?? 'artist — title';
const text = fmt === 'title' ? track.title : `${track.artist} — ${track.title}`;
api.Logger.log('Новый трек:', text);
if (getSetting('notify') !== false) api.UI.notify(track.artist, track.title);
}
return {
start() { api.Events.on('trackChange', onTrack); },
stop() { api.Events.off('trackChange', onTrack); },
};
});
Все модули api
| Модуль | Что делает |
|---|
api.Player | Скорость, громкость, позиция, next/prev/like |
api.Events | play, pause, trackChange, volumeChange, seeked… |
api.Storage | Постоянное хранилище ключ-значение |
api.UI | toast, системные уведомления, confirm диалог |
api.HTTP | HTTP запросы без CORS (через main процесс) |
api.Hotkeys | Глобальные горячие клавиши |
api.Clipboard | Буфер обмена |
api.Patcher | Monkey-patching любых функций |
api.DOM | querySelector, waitFor, observe, injectCSS |
api.Net | Перехват fetch запросов YM |
api.React | Доступ к React Fiber дереву |
api.Webpack | Поиск webpack модулей YM |
api.Logger | Логгер с цветным префиксом плагина |
getSetting(key) возвращает null если пользователь не сохранял настройку. Всегда используй ?? defaultValue.