async function kirim(chat, options) {
    let {
        title = "title - SH",
        body = "body - SH",
        text = "text - SH",
        footer = "body - SH",
        fileName = "balxzzy",
        docFilePath = "./src/declare/Database.js",
        headerFilePath = "./src/declare/image/banner.png",
        adThumbnailPath = "./src/declare/image/picture.png",
        bottomSheetTitle = "Shiina",
        bottomSheetButtonTitle = "MENU",
        buttons = [],
        quoted = m
    } = options

    return await clients.sendMessage(
        chat,
        {
            interactiveMessage: {
                title: title,
                footer: footer,
                document: fs.readFileSync(docFilePath),
                mimetype: "text/javascript",
                fileName: fileName,
                jpegThumbnail: fs.readFileSync(headerFilePath),
                contextInfo: {
                    mentionedJid: [chat],
                    forwardingScore: 1,
                    isForwarded: false
                },
                externalAdReply: {
                    title: title,
                    body: body,
                    mediaType: 3,
                    thumbnail: fs.readFileSync(adThumbnailPath),
                    sourceUrl: "https://github.com/balxz",
                    showAdAttribution: true,
                    renderLargerThumbnail: false
                },
                nativeFlowMessage: {
                    messageParamsJson: JSON.stringify({
                        limited_time_offer: {
                            text: text,
                            url: "",
                            copy_code: "SH - TEAM",
                            expiration_time: null //Date.now() * 99999
                        },
                        bottom_sheet: {
                            in_thread_buttons_limit: 2,
                            divider_indices: [1, 2, 3, 4, 5, 999],
                            list_title: bottomSheetTitle,
                            button_title: bottomSheetButtonTitle
                        },
                        tap_target_configuration: {
                            title: "balxzzy",
                            description: "SH TEAM",
                            canonical_url: "",
                            domain: "balxzzy.web.id",
                            button_index: 0
                        }
                    }),
                    buttons: buttons
                }
            }
        },
        { quoted: quoted }
    )
}