From 0b4e35308dace0ccdf618cb1d04987ed5200d58c Mon Sep 17 00:00:00 2001 From: Joseph VTX <1395609@senati.pe> Date: Tue, 20 Dec 2022 01:04:07 -0500 Subject: [PATCH] feat(provider): :zap: add new methods add new methods --- packages/provider/src/baileys/index.js | 92 ++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/packages/provider/src/baileys/index.js b/packages/provider/src/baileys/index.js index 0c76ea8..7ae4759 100644 --- a/packages/provider/src/baileys/index.js +++ b/packages/provider/src/baileys/index.js @@ -1,4 +1,5 @@ const { ProviderClass } = require('@bot-whatsapp/bot') +const { Sticker } = require('wa-sticker-formatter') const pino = require('pino') const mime = require('mime-types') const { existsSync, createWriteStream } = require('fs') @@ -214,6 +215,97 @@ class BaileysProvider extends ProviderClass { return this.sendMedia(number, options.media, message) return this.sendText(number, message) } + + /** + * @param {string} remoteJid + * @param {string} latitude + * @param {string} longitude + * @param {any} messages + * @example await sendLocation("xxxxxxxxxxx@c.us" || "xxxxxxxxxxxxxxxxxx@g.us", "xx.xxxx", "xx.xxxx", messages) + */ + + sendLocation = async (remoteJid, latitude, longitude, messages = null) => { + await this.vendor.sendMessage( + remoteJid, + { + location: { + degreesLatitude: latitude, + degreesLongitude: longitude, + }, + }, + { quoted: messages } + ) + + return { status: 'success' } + } + + /** + * @param {string} remoteJid + * @param {string} contactNumber + * @param {string} displayName + * @param {any} messages - optional + * @example await sendContact("xxxxxxxxxxx@c.us" || "xxxxxxxxxxxxxxxxxx@g.us", "+xxxxxxxxxxx", "Robin Smith", messages) + */ + + sendContact = async ( + remoteJid, + contactNumber, + displayName, + messages = null + ) => { + const cleanContactNumber = contactNumber.replaceAll(' ', '') + const waid = cleanContactNumber.replace('+', '') + + const vcard = + 'BEGIN:VCARD\n' + + 'VERSION:3.0\n' + + `FN:${displayName}\n` + + 'ORG:Ashoka Uni;\n' + + `TEL;type=CELL;type=VOICE;waid=${waid}:${cleanContactNumber}\n` + + 'END:VCARD' + + await this.client.sendMessage( + remoteJid, + { + contacts: { + displayName: 'XD', + contacts: [{ vcard }], + }, + }, + { quoted: messages } + ) + + return { status: 'success' } + } + + /** + * @param {string} remoteJid + * @param {string} WAPresence + * @example await sendPresenceUpdate("xxxxxxxxxxx@c.us" || "xxxxxxxxxxxxxxxxxx@g.us", "recording") + */ + sendPresenceUpdate = async (remoteJid, WAPresence) => { + await this.client.sendPresenceUpdate(WAPresence, remoteJid) + } + + /** + * @param {string} remoteJid + * @param {string} url + * @param {object} stickerOptions + * @param {any} messages - optional + * @example await sendSticker("xxxxxxxxxxx@c.us" || "xxxxxxxxxxxxxxxxxx@g.us", "https://dn/image.png" || "https://dn/image.gif" || "https://dn/image.mp4", {pack: 'User', author: 'Me'} messages) + */ + + sendSticker = async (remoteJid, url, stickerOptions, messages = null) => { + const sticker = new Sticker(url, { + ...stickerOptions, + quality: 50, + type: 'crop', + }) + + const buffer = await sticker.toMessage() + + await this.client.sendMessage(remoteJid, buffer, { quoted: messages }) + } } module.exports = BaileysProvider