1.0.0-beta.2 • Published 5 months ago

elemapi-lib v1.0.0-beta.2

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

ElemApi-lib

Неофициальная библиотека для работы с API социальной сети Element через WebSocket.

Установка

npm install elemapi-lib

Быстрый старт

const ElementAPI = require('elemapi-lib');
const api = new ElementAPI();

async function start() {
    try {
        await api.login('ваш_email@example.com', 'ваш_пароль');
        api.onMessage = (rawMessage, parsedMessage) => {
            console.log('Сообщение:', parsedMessage);
        };
    } catch (error) {
        console.error('Ошибка:', error.message);
    }
}

start();

Подключение и авторизация

const api = new ElementAPI();
const loginResult = await api.login('email@example.com', 'password');
console.log('Результат:', loginResult);

Результат:

{
    "status": "success",
    "S_KEY": "ваш_ключ_сессии",
    "accountID": 1234
}

Обработка WebSocket сообщений

api.onMessage = (rawMessage, parsedMessage) => {
    switch(parsedMessage.type) {
        case 'onlineUsers':
            console.log('Онлайн:', parsedMessage.data);
            break;
        case 'posts':
            console.log('Посты:', parsedMessage.data);
            break;
        case 'connectionStatus':
            console.log('Статус:', parsedMessage);
            break;
    }
};

Структура данных

Пользователь

{
    id: number,
    name: string,
    username: string,
    avatar: string,
    email: string,
    description: string,
    eBalls: number,
    permissions: { Admin, Posts, Comments, NewChats, MusicUpload },
    channels: array,
    links: array
}

Пост

{
    id: number,
    author: Object,
    text: string,
    content: array,
    createDate: Date,
    likes: number,
    dislikes: number,
    comments: number,
    isMyPost: boolean
}

Примеры использования

Получение онлайн пользователей

api.onMessage = (rawMessage, parsedMessage) => {
    if (parsedMessage.type === 'onlineUsers') {
        console.log('Онлайн:', parsedMessage.data.length);
    }
};

Получение постов

await api.getPosts(0);
api.onMessage = (rawMessage, parsedMessage) => {
    if (parsedMessage.type === 'posts') {
        parsedMessage.data.forEach(post => {
            console.log(`${post.author.name}: ${post.text}`);
        });
    }
};

Отключение

api.disconnect();

Требования

  • Node.js >= 14.0.0
  • WebSocket

Зависимости

  • axios
  • ws
  • form-data
1.0.0-beta.2

5 months ago

1.0.0-beta.1

5 months ago

1.0.0

5 months ago