message_content_at.js

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

/**
 * `At` 类型代表一个 **@群聊成员** 消息元素。
 * 
 * @property { String } #uin 群聊成员的 **qq号**。
 * @property { String } #uid 群聊成员的 **uid**。
 */
class At extends SingleMessage {

    #uin;
    #uid;

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

    /**
     * 通过 **qq号** 来构造一个 **@群聊成员** 元素。
     * 
     * 若不存在,则会返回 `null`。
     * 
     * @param { String } uin 群聊成员的 **qq号**。
     * @returns { At } 构造出的消息元素。
     */
    static fromUin(uin) {
        const uid = euphonyNative.convertUinToUid(uin);
        if (!uid) {
            return null;
        }
        return new At(uin, uid);
    }

    /**
     * 通过 **uid** 来构造一个 **@群聊成员** 元素。
     * 
     * 若不存在,则会返回 `null`。
     * 
     * @param { String } uid 群聊成员的 **uid**。
     * @returns { At } 构造出的消息元素。
     */
    static fromUid(uid) {
        const uin = euphonyNative.convertUidToUin(uid);
        if (!uin) {
            return null;
        }
        return new At(uin, uid);
    }

    /**
     * 构造一个 **qq号** 为 `uin`,**uid** 为 `uid` 的 **@群聊成员** 消息元素。
     * 
     * @param { String } uin 群聊成员的 **uin**。
     * @param { String } uid 群聊成员的 **uid**。
     */
    constructor(uin, uid) {
        super();
        this.#uin = uin;
        this.#uid = uid;
    }

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

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

    /**
     * 构造并返回该消息元素所对应的 **element** 对象。
     * 
     * @returns { Native } 该消息元素所对应的 **element** 对象。
     */
    async toElement() {
        return {
            elementId: '',
            elementType: At.getElementType(),
            textElement: {
                atType: 2,
                atUid: this.#uin,
                atNtUid: this.#uid
            }
        };
    }

}

export default At