message_content_image.js

import { SingleMessage } from '../../index.js';

/**
 * `Image` 类型代表一个图片消息元素。
 * 
 * @property { String } #path 图片路径。
 */
class Image extends SingleMessage {

    #path;

    /**
     * 返回该消息元素所对应的 **elementType**,值为 **2**。
     * 
     * @returns { Number } 该消息元素所对应的 **elementType**,值为 **2**。
     */
    static getElementType() {
        return 2;
    }

    /**
     * 构造一个路径为 `path` 的图片消息元素。
     * 
     * @param { String } path 图片路径。
     */
    constructor(path) {
        super();
        this.#path = path;
    }

    /**
     * 返回该消息元素的 `#path` 属性。
     * 
     * @returns { String } 该消息元素的 `#path` 属性。
     */
    getPath() {
        return this.#path;
    }

    /**
     * 构造并返回该消息元素所对应的 **element** 对象。
     * 
     * @returns { Native } 该消息元素所对应的 **element** 对象。
     */
    async toElement() {
        const fileMd5 = await euphonyNative.invokeNative('ns-FsApi', 'getFileMd5', false, this.#path);
        const imageSize = await euphonyNative.invokeNative('ns-FsApi', 'getImageSizeFromPath', false, this.#path);
        const fileSize = await euphonyNative.invokeNative('ns-FsApi', 'getFileSize', false, this.#path);
        const cachePath = await euphonyNative.invokeNative('ns-ntApi', 'nodeIKernelMsgService/getRichMediaFilePathForGuild', false, {
            path_info: {
                md5HexStr: fileMd5,
                fileName: fileMd5,
                elementType: 2,
                elementSubType: 0,
                thumbSize: 0,
                needCreate: true,
                downloadType: 1,
                file_uuid: ''
            }
        });
        await euphonyNative.invokeNative('ns-FsApi', 'copyFile', false, {
            fromPath: this.#path,
            toPath: cachePath
        });
        return {
            elementId: '',
            elementType: Image.getElementType(),
            picElement: {
                md5HexStr: fileMd5,
                fileSize,
                picWidth: imageSize.width,
                picHeight: imageSize.height,
                fileName: fileMd5,
                sourcePath: cachePath,
                original: true,
                picType: 1001,
                picSubType: 0,
                fileUuid: '',
                fileSubId: '',
                thumbFileSize: 0,
                summary: '',
            }
        };
    }

}

export default Image