pachca это полностью типизированный, лёгкий и современный JS клиент для мессенджера Пачка. Документация к API Пачки доступна здесь.
npm i pachcaДругие менеджеры пакетов
pnpm add pachcayarn add pachcabun add pachcaimport{Pachca}from"https://esm.sh/pachca";import{CustomPropertyEntityType,Pachca}from"pachca";constpachca=newPachca({accessToken: process.env.PACHCA_ACCESS_TOKEN!,// Токен доступа});const{ data }=awaitpachca.customProperties.get({entity_type: CustomPropertyEntityType.User});// Получаем все дополнительные поля для пользователейdata.at(0).name;// Результат типизированБиблиотека использует Web APIs, т.е. fetch, FormData, Blob и т.п. Для использования библиотеки в средах, которые не поддерживают Web APIs, необходимо использовать полифиллы.
Экспорты библиотеки доступны только в формате ESM.
/** * Опции создания API клиента */exportinterfaceApiClientOptions{/** * Базовый URL API * @default https://api.pachca.com/api/shared/v1 */baseUrl?: string;/** * Токен доступа * @see https://crm.pachca.com/dev/getting-started/requests-and-responses/ */accessToken: string;/** * Заголовок User-Agent в запросах * @default pachca/${version} (+https://github.com/MonsterDeveloper/pachca) */userAgent?: string;/** ID пользователя/бота, которому принадлежит токен */userId?: number;}constpachca=newPachca({// Опции});В классе Pachca есть эндпоинты для запросов к API, которые названы в соответствии с URL, описанными в документации Пачки. Доступные эндпоинты описаны в разделе Функционал. Методы эндпоинты названы в соответствии с HTTP методами, которые они используют.
// Получить список сотрудниковconst{data: users}=awaitpachca.users.get();// Получить сотрудника по idconst{data: user}=awaitpachca.users.getById(1);// Удалить сотрудникаawaitpachca.users.delete(1);// Обновить беседу или каналconst{data: chat}=awaitpachca.chats.put(1,{chat: {name: "Новое название"}});Для удобства библиотека экспортирует кастомные классы ошибок:
PachcaError— общая ошибка ПачкиPachcaClientError— клиентская ошибка, которая происходит при ответе с кодом 4xx. Пояснения доступны в документации Пачки
try{awaitpachca.chats.post({chat: {name: "Новая беседа"}});}catch(error){if(errorinstanceofPachcaClientError){console.log(error.errors[0].message);}elseif(errorinstanceofPachcaError){console.log(error.response?.status);}}Также во избежание Callback Hell, можно использовать @open-draft/until:
import{until}from"@open-draft/until";asyncfunctiongetChatById(id: number){const{ error, data }=awaituntil(()=>pachca.chats.getById(id));if(error){// обработать ошибкуreturn;}returndata;}Пример для Bun:
constfile=Bun.file("test-pachca.txt");constuploadsData=awaitpachca.uploads.post();awaitpachca.uploads.postFile(file,uploadsData);Пожалуйста, прочитайте гайд перед тем как отправлять PR.
Библиотека лицензирован GPL-3.0.