@emby-chat/node-sdk

1.8.0 • Public • Published

emby-node-sdk

EMBY SDK for Node

Getting Started

Installation

npm install @emby-chat/node-sdk

or

yarn add @emby-chat/node-sdk

Configuration

    const Emby = require('@emby-chat/node-sdk');

    const emby = new Emby({
        id: 'your id',
        secret: 'your secret key',
        api_token: 'your api token',
        base_url: 'https://app.getchat.dev/'
    });

Methods

url

/**
* Generate a chat URL.
*
* @param {Object} options - The options object containing all parameters.
* @param {Object} [options.chat] - The chat object containing chat details. This parameter is required.
* @param {string} [options.chat.id] - The unique identifier for the chat. This parameter is required.
* @param {string} [options.chat.title] - The title of the chat.
* @param {Object} options.user - The user object containing user details. This parameter is required.
* @param {string} options.user.id - The unique identifier for the user.
* @param {string} [options.user.name] - The name of the user.
* @param {string} [options.user.email] - The email of the user.
* @param {string} [options.user.picture] - The picture URL of the user.
* @param {string} [options.user.link] - The link associated with the user.
* @param {Object} [options.user.rights] - The rights object containing user permissions.
* @param {boolean} [options.user.rights.send_messages=true] - Enable or disable sending messages.
* @param {("none"|"my"|"any")} [options.user.rights.edit_messages="my"] - Permission to edit messages.
* @param {("none"|"my"|"any")} [options.user.rights.delete_messages="my"] - Permission to delete messages.
* @param {("none"|"for_me"|"for_everyone")} [options.user.rights.pin_messages="for_me"] - Permission to pin messages.
* @param {boolean} [options.user.rights.send_photos=false] - Enable or disable sending photos.
* @param {boolean} [options.user.rights.send_audio=false] - Enable or disable sending audio.
* @param {boolean} [options.user.rights.send_documents=false] - Enable or disable sending documents.
* @param {boolean} [options.user.rights.send_location=false] - Enable or disable sending location.
* @param {boolean} [options.user.rights.create_pools=false] - Enable or disable creating pools.
* @param {boolean} [options.user.rights.vote_pool=false] - Enable or disable voting in pools.
* @param {boolean} [options.user.rights.kick_users=false] - Enable or disable kicking users.
* @param {Object[]} [options.recipients=[]] - An array of recipient objects.
* @param {string} options.recipients[].id - The unique identifier for the recipient.
* @param {string} options.recipients[].name - The name of the recipient.
* @param {boolean} [options.recipients[].is_bot=false] - Indicates if the recipient is a bot.
* @param {Object} [options.extra={}] - Additional options.
* @param {Object} [options.extra.skin_options] - Skin options for the chat interface.
* @param {boolean} [options.extra.skin_options.display_header=true] - Show or hide header.
* @param {boolean} [options.extra.skin_options.display_network_pane=true] - Show or hide network pane (only works for default skin).
* @param {boolean} [options.extra.skin_options.hide_day_delimiter=false] - Hide date delimiter.
* @param {boolean} [options.extra.skin_options.hide_deleted_message=false] - If true, deleted messages won't be displayed.
* @param {number} [options.extra.skin_options.message_max_length=0] - Set limit for input message length (0 means no limit).
* @param {("en"|"pt"|"ru")} [options.extra.skin_options.lang="en"] - Set language for skin.
* 
* @returns {string} The generated chat URL.
*/
emby.url({
    chat: {
        id: 'some_unique_string',
        title: 'The name of the chat'
    },
    user: {
        id: 10001,
        name: 'Howard Lovecraft',
        picture: 'https://via.placeholder.com/400',
        rights: {
            kick_users: 'on',
            edit_messages: 'any:extra',
            delete_messages: 'my',
            send_messages: true,
            pin_messages: 'for_everyone',
            send_read_state: true,
        }
    },
    extra: {
        'skin': 'default',
        'skin_options': {
            'display_header': true,
            'hide_day_delimiter': true,
            'message_max_length': 150,
        }
    }
})

urlByChatId

/**
 * Generate a chat URL by chat ID.
 *
 * @param {Object} chat - The chat object containing chat details. This parameter is required.
 * @param {string} chat.id - The unique identifier for the chat. This parameter is required.
 * @param {string} chat.title - The title of the chat.
 * @param {Object} user - The user object containing user details. This parameter is required.
 * @param {string} user.id - The unique identifier for the user.
 * @param {string} user.name - The name of the user.
 * @param {string} [user.email] - The email of the user.
 * @param {string} [user.picture] - The picture URL of the user.
 * @param {string} [user.link] - The link associated with the user.
 * @param {Object} [user.rights] - The rights object containing user permissions.
 * @param {boolean} [user.rights.send_messages=true] - Enable or disable sending messages.
 * @param {("none"|"my"|"any")} [user.rights.edit_messages="my"] - Permission to edit messages.
 * @param {("none"|"my"|"any")} [user.rights.delete_messages="my"] - Permission to delete messages.
 * @param {("none"|"for_me"|"for_everyone")} [user.rights.pin_messages="for_me"] - Permission to pin messages.
 * @param {boolean} [user.rights.send_photos=false] - Enable or disable sending photos.
 * @param {boolean} [user.rights.send_audio=false] - Enable or disable sending audio.
 * @param {boolean} [user.rights.send_documents=false] - Enable or disable sending documents.
 * @param {boolean} [user.rights.send_location=false] - Enable or disable sending location.
 * @param {boolean} [user.rights.create_pools=false] - Enable or disable creating pools.
 * @param {boolean} [user.rights.vote_pool=false] - Enable or disable voting in pools.
 * @param {boolean} [user.rights.kick_users=false] - Enable or disable kicking users.
 * @param {Object[]} [recipients=[]] - An array of recipient objects.
 * @param {string} recipients[].id - The unique identifier for the recipient.
 * @param {string} recipients[].name - The name of the recipient.
 * @param {boolean} [recipients[].is_bot=false] - Indicates if the recipient is a bot.
 * @param {Object} [extra={}] - Additional options.
 * @param {Object} [extra.skin_options] - Skin options for the chat interface.
 * @param {boolean} [extra.skin_options.display_header=true] - Show or hide header.
 * @param {boolean} [extra.skin_options.display_network_pane=true] - Show or hide network pane (only works for default skin).
 * @param {boolean} [extra.skin_options.hide_day_delimiter=false] - Hide date delimiter.
 * @param {boolean} [extra.skin_options.hide_deleted_message=false] - If true, deleted messages won't be displayed.
 * @param {number} [extra.skin_options.message_max_length=0] - Set limit for input message length (0 means no limit).
 * @param {("en"|"pt"|"ru")} [extra.skin_options.lang="en"] - Set language for skin.
 * 
 * @returns {string} The generated chat URL.
 */
available user rights
{
    "$schema": "https://json-schema.org/draft-07/schema",
    "type": "object",
    "properties": {
        "send_messages": {
            "type": "boolean",
            "default": true,
            "description": "Enable or disable sending messages"
        },
        "edit_messages": {
            "type": "string",
            "enum": ["none", "my", "any"],
            "default": "my",
            "description": "Permission to edit messages (none, my, any)"
        },
        "delete_messages": {
            "type": "string",
            "enum": ["none", "my", "any"],
            "default": "my",
            "description": "Permission to delete messages (none, my, any)"
        },
        "pin_messages": {
            "type": "string",
            "enum": ["none", "for_me", "for_everyone"],
            "default": "for_me",
            "description": "Permission to pin messages (none, for_me, for_everyone)"
        },
        "send_photos": {
            "type": "boolean",
            "default": false,
            "description": "Enable or disable sending photos"
        },
        "send_audio": {
            "type": "boolean",
            "default": false,
            "description": "Enable or disable sending audio"
        },
        "send_documents": {
            "type": "boolean",
            "default": false,
            "description": "Enable or disable sending documents"
        },
        "send_location": {
            "type": "boolean",
            "default": false,
            "description": "Enable or disable sending location"
        },
        "create_pools": {
            "type": "boolean",
            "default": false,
            "description": "Enable or disable creating pools"
        },
        "vote_pool": {
            "type": "boolean",
            "default": false,
            "description": "Enable or disable voting in pools"
        },
        "kick_users": {
            "type": "boolean",
            "default": false,
            "description": "Enable or disable kicking users"
        }
    },
    "required": [
        "send_messages",
        "edit_messages",
        "delete_messages",
        "pin_messages",
        "send_photos",
        "send_audio",
        "send_documents",
        "send_location",
        "create_pools",
        "vote_pool",
        "kick_users"
    ]
}

So you can specify options for some rights. For instance edit_messages right can have an additional option "extra" (edit_messages:extra). It's means that user can edit not only a text, but also an extra options

available skin_options
{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
        "display_header": {
            "type": "boolean",
            "default": true,
            "description": "Show or hide header"
        },
        "display_network_pane": {
            "type": "boolean",
            "default": true,
            "description": "Show or hide network pane (only works for default skin)"
        },
        "hide_day_delimiter": {
            "type": "boolean",
            "default": false,
            "description": "Hide date delimiter"
        },
        "hide_deleted_message": {
            "type": "boolean",
            "default": false,
            "description": "If true, deleted messages won't be displayed"
        },
        "message_max_length": {
            "type": "integer",
            "default": 0,
            "description": "Set limit for input message length (0 means no limit)"
        },
        "lang": {
            "type": "string",
            "enum": ["en", "pt", "ru"],
            "default": "en",
            "description": "Set language for skin"
        }
    },
    "required": [
        "display_header",
        "display_network_pane",
        "hide_day_delimiter",
        "hide_deleted_message",
        "message_max_length",
        "lang"
    ]
}

generate chat url for unauth user

emby.urlByChatId('user10', {session: 'YOUR_SESSION_ID'});

generate chat url for unauth user with custom name

emby.urlByChatId('user10', {name: 'Custom Name for Guest User', session: 'YOUR_SESSION_ID'});

generate chat url for auth user

emby.urlByChatId('user10', {id: '10', name: 'User Name'});

generate chat url for auth user with avatar

emby.urlByChatId('user10', {id: '10', name: 'User Name', avatar: 'source to avatar'});

generate chat url for auth user with options

emby.urlByChatId('user10', {id: '10', name: 'User Name'}, [], {
    'skin': 'default',
    'skin_options': {
        'hideDeletedMessage' => true
    }
});

generate chat url with Portuguese language

emby.urlByChatId('user10', {id: '10', name: 'User Name'}, [], {
    'skin': 'default',
    'skin_options': {
        'hideDeletedMessage' => true,
        'lang' => 'pt'
    }
});

generate chat url for auth user with right to edit myself messages

emby.urlByChatId('chatId10',
    {
        id: '10',
        name: 'User Name',
        rights: {
            edit_messages: 'my:extra'
        }
    }, [], {
        'skin': 'default',
        'skin_options': {
            'hideDeletedMessage' => true
        }
    }
);

sendMessage

/**
 * Send a message to a chat.
 *
 * @param {string} chatId - The unique identifier for the chat. This parameter is required.
 * @param {Object} user - The user object sending the message. This parameter is required.
 * @param {string} user.id - The unique identifier for the user.
 * @param {string} [user.name] - The name of the user.
 * @param {string} [user.email] - The email of the user.
 * @param {string} [user.picture] - The picture URL of the user.
 * @param {string} [user.link] - The link associated with the user.
 * @param {Object[]} [recipients] - An array of recipient objects. This parameter is required.
 * @param {string} recipients[].id - The unique identifier for the recipient.
 * @param {string} recipients[].name - The name of the recipient.
 * @param {string} message - The message content to be sent. This parameter is required.
 * @param {Object[]} [extra=[]] - Additional options for the message.
 * @param {Object[]} [buttons=[]] - An array of button objects to be included with the message.
 * @param {string} buttons[].label - The label of the button. This parameter is required.
 * @param {string} buttons[].action - The action associated with the button. This parameter is required.
 * @param {string} buttons[].type - The type of the button (local or remote). This parameter is required.
 * @param {string} [buttons[].style] - The style of the button.
 * 
 * @returns {Promise<Object>} A promise that resolves to the response of the send message action.
 */
emby
    .sendMessage('chat_id', {
        'id': userId,
        'name': userName
    }, [], message)
    .then(response => {
        console.info('message was successfully sent', response);
    })
    .catch(e => {
        console.error(e.message);
    });

updateMessage

/**
 * Update a message in a chat.
 *
 * @param {string} chatId - The unique identifier for the chat. This parameter is required.
 * @param {string} messageId - The unique identifier for the message. This parameter is required.
 * @param {Object} updateData - The data to update the message with. This parameter is required.
 * @param {string} updateData.text - The new text content of the message.
 * @param {boolean} [updateData.isDeleted=false] - Flag indicating if the message is deleted.
 * @param {Object} [updateData.extra={}] - Additional options for the message.
 * @param {Object[]} [updateData.buttons=[]] - An array of button objects to be included with the message.
 * @param {string} updateData.buttons[].label - The label of the button. This parameter is required.
 * @param {string} updateData.buttons[].action - The action associated with the button. This parameter is required.
 * @param {string} [updateData.buttons[].type] - The type of the button (local or remote).
 * @param {string} [updateData.buttons[].style] - The style of the button.
 * @param {Object} [options={}] - Additional options for the update operation.
 * @param {boolean} [options.replaceExtra=false] - Flag to replace the existing extra options with the new ones.
 * @param {boolean} [options.returnMessage=false] - Flag to return the updated message.
 * 
 * @returns {Promise<Object>} A promise that resolves to the response of the update message action.
 */
emby.updateMessage(messageId, {
    text: "Change the message text to so-and-so",
    extra: {
        someParameter: 'someValue'
    }
});
to delete message
emby.updateMessage(messageId, {isDeleted: true});

Dependents (0)

Package Sidebar

Install

npm i @emby-chat/node-sdk

Weekly Downloads

9

Version

1.8.0

License

MIT

Unpacked Size

60.9 kB

Total Files

11

Last publish

Collaborators

  • the_buddha