diff --git a/packages/provider/src/baileys/index.js b/packages/provider/src/baileys/index.js index 0c76ea808..7ae47594d 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 diff --git a/starters/apps/base-bailey-memory/package.json b/starters/apps/base-bailey-memory/package.json index 5e3ee48cc..9d9bb38f3 100644 --- a/starters/apps/base-bailey-memory/package.json +++ b/starters/apps/base-bailey-memory/package.json @@ -14,7 +14,8 @@ "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", "@adiwajshing/baileys": "^4.4.0", - "mime-types": "^2.1.35" + "mime-types": "^2.1.35", + "wa-sticker-formatter": "^4.3.2" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-bailey-mongo/package.json b/starters/apps/base-bailey-mongo/package.json index 64660e7f0..d154742cd 100644 --- a/starters/apps/base-bailey-mongo/package.json +++ b/starters/apps/base-bailey-mongo/package.json @@ -15,7 +15,8 @@ "@bot-whatsapp/provider": "latest", "@adiwajshing/baileys": "^4.4.0", "mime-types": "^2.1.35", - "mongodb": "^4.12.1" + "mongodb": "^4.12.1", + "wa-sticker-formatter": "^4.3.2" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-bailey-mysql/package.json b/starters/apps/base-bailey-mysql/package.json index cbf2eb537..337ea1a29 100644 --- a/starters/apps/base-bailey-mysql/package.json +++ b/starters/apps/base-bailey-mysql/package.json @@ -15,7 +15,8 @@ "@bot-whatsapp/provider": "latest", "@adiwajshing/baileys": "^4.4.0", "mime-types": "^2.1.35", - "mysql2": "^2.3.3" + "mysql2": "^2.3.3", + "wa-sticker-formatter": "^4.3.2" }, "author": "", "license": "ISC"