dew-md-mini / msg.js
hansa-dewmina's picture
Upload 11 files
c880704 verified
const {
proto,
downloadContentFromMessage,
getContentType
} = require('baileys')
const fs = require('fs')
const downloadMediaMessage = async (m, filename) => {
if (m.type === 'viewOnceMessage') {
m.type = m.msg.type
}
if (m.type === 'imageMessage') {
var nameJpg = filename ? filename + '.jpg' : 'undefined.jpg'
const stream = await downloadContentFromMessage(m.msg, 'image')
let buffer = Buffer.from([])
for await (const chunk of stream) {
buffer = Buffer.concat([buffer, chunk])
}
fs.writeFileSync(nameJpg, buffer)
return fs.readFileSync(nameJpg)
} else if (m.type === 'videoMessage') {
var nameMp4 = filename ? filename + '.mp4' : 'undefined.mp4'
const stream = await downloadContentFromMessage(m.msg, 'video')
let buffer = Buffer.from([])
for await (const chunk of stream) {
buffer = Buffer.concat([buffer, chunk])
}
fs.writeFileSync(nameMp4, buffer)
return fs.readFileSync(nameMp4)
} else if (m.type === 'audioMessage') {
var nameMp3 = filename ? filename + '.mp3' : 'undefined.mp3'
const stream = await downloadContentFromMessage(m.msg, 'audio')
let buffer = Buffer.from([])
for await (const chunk of stream) {
buffer = Buffer.concat([buffer, chunk])
}
fs.writeFileSync(nameMp3, buffer)
return fs.readFileSync(nameMp3)
} else if (m.type === 'stickerMessage') {
var nameWebp = filename ? filename + '.webp' : 'undefined.webp'
const stream = await downloadContentFromMessage(m.msg, 'sticker')
let buffer = Buffer.from([])
for await (const chunk of stream) {
buffer = Buffer.concat([buffer, chunk])
}
fs.writeFileSync(nameWebp, buffer)
return fs.readFileSync(nameWebp)
} else if (m.type === 'documentMessage') {
var ext = m.msg.fileName.split('.')[1].toLowerCase().replace('jpeg', 'jpg').replace('png', 'jpg').replace('m4a', 'mp3')
var nameDoc = filename ? filename + '.' + ext : 'undefined.' + ext
const stream = await downloadContentFromMessage(m.msg, 'document')
let buffer = Buffer.from([])
for await (const chunk of stream) {
buffer = Buffer.concat([buffer, chunk])
}
fs.writeFileSync(nameDoc, buffer)
return fs.readFileSync(nameDoc)
}
}
const sms = (conn, m) => {
if (m.key) {
m.id = m.key.id
m.chat = m.key.remoteJid
m.fromMe = m.key.fromMe
m.isGroup = m.chat.endsWith('@g.us')
m.sender = m.fromMe ? conn.user.id.split(':')[0] + '@s.whatsapp.net' : m.isGroup ? m.key.participant : m.key.remoteJid
}
if (m.message) {
m.type = getContentType(m.message)
m.msg = (m.type === 'viewOnceMessage') ? m.message[m.type].message[getContentType(m.message[m.type].message)] : m.message[m.type]
if (m.msg) {
if (m.type === 'viewOnceMessage') {
m.msg.type = getContentType(m.message[m.type].message)
}
var quotedMention = m.msg.contextInfo != null ? m.msg.contextInfo.participant : ''
var tagMention = m.msg.contextInfo != null ? m.msg.contextInfo.mentionedJid : []
var mention = typeof(tagMention) == 'string' ? [tagMention] : tagMention
mention != undefined ? mention.push(quotedMention) : []
m.mentionUser = mention != undefined ? mention.filter(x => x) : []
m.body = (m.type === 'conversation') ? m.msg : (m.type === 'extendedTextMessage') ? m.msg.text : (m.type == 'imageMessage') && m.msg.caption ? m.msg.caption : (m.type == 'videoMessage') && m.msg.caption ? m.msg.caption : (m.type == 'templateButtonReplyMessage') && m.msg.selectedId ? m.msg.selectedId : (m.type == 'buttonsResponseMessage') && m.msg.selectedButtonId ? m.msg.selectedButtonId : ''
m.quoted = m.msg.contextInfo != undefined ? m.msg.contextInfo.quotedMessage : null
if (m.quoted) {
m.quoted.type = getContentType(m.quoted)
m.quoted.id = m.msg.contextInfo.stanzaId
m.quoted.sender = m.msg.contextInfo.participant
m.quoted.fromMe = m.quoted.sender.split('@')[0].includes(conn.user.id.split(':')[0])
m.quoted.msg = (m.quoted.type === 'viewOnceMessage') ? m.quoted[m.quoted.type].message[getContentType(m.quoted[m.quoted.type].message)] : m.quoted[m.quoted.type]
if (m.quoted.type === 'viewOnceMessage') {
m.quoted.msg.type = getContentType(m.quoted[m.quoted.type].message)
}
var quoted_quotedMention = m.quoted.msg.contextInfo != null ? m.quoted.msg.contextInfo.participant : ''
var quoted_tagMention = m.quoted.msg.contextInfo != null ? m.quoted.msg.contextInfo.mentionedJid : []
var quoted_mention = typeof(quoted_tagMention) == 'string' ? [quoted_tagMention] : quoted_tagMention
quoted_mention != undefined ? quoted_mention.push(quoted_quotedMention) : []
m.quoted.mentionUser = quoted_mention != undefined ? quoted_mention.filter(x => x) : []
m.quoted.fakeObj = proto.WebMessageInfo.fromObject({
key: {
remoteJid: m.chat,
fromMe: m.quoted.fromMe,
id: m.quoted.id,
participant: m.quoted.sender
},
message: m.quoted
})
m.quoted.download = (filename) => downloadMediaMessage(m.quoted, filename)
m.quoted.delete = () => conn.sendMessage(m.chat, {
delete: m.quoted.fakeObj.key
})
m.quoted.react = (emoji) => conn.sendMessage(m.chat, {
react: {
text: emoji,
key: m.quoted.fakeObj.key
}
})
}
}
m.download = (filename) => downloadMediaMessage(m, filename)
}
m.reply = (teks, id = m.chat, option = {
mentions: [m.sender]
}) => conn.sendMessage(id, {
text: teks,
contextInfo: {
mentionedJid: option.mentions
}
}, {
quoted: m
})
m.replyS = (stik, id = m.chat, option = {
mentions: [m.sender]
}) => conn.sendMessage(id, {
sticker: stik,
contextInfo: {
mentionedJid: option.mentions
}
}, {
quoted: m
})
m.replyImg = (img, teks, id = m.chat, option = {
mentions: [m.sender]
}) => conn.sendMessage(id, {
image: img,
caption: teks,
contextInfo: {
mentionedJid: option.mentions
}
}, {
quoted: m
})
m.replyVid = (vid, teks, id = m.chat, option = {
mentions: [m.sender],
gif: false
}) => conn.sendMessage(id, {
video: vid,
caption: teks,
gifPlayback: option.gif,
contextInfo: {
mentionedJid: option.mentions
}
}, {
quoted: m
})
m.replyAud = (aud, id = m.chat, option = {
mentions: [m.sender],
ptt: false
}) => conn.sendMessage(id, {
audio: aud,
ptt: option.ptt,
mimetype: 'audio/mpeg',
contextInfo: {
mentionedJid: option.mentions
}
}, {
quoted: m
})
m.replyDoc = (doc, id = m.chat, option = {
mentions: [m.sender],
filename: 'undefined.pdf',
mimetype: 'application/pdf'
}) => conn.sendMessage(id, {
document: doc,
mimetype: option.mimetype,
fileName: option.filename,
contextInfo: {
mentionedJid: option.mentions
}
}, {
quoted: m
})
m.replyContact = (name, info, number) => {
var vcard = 'BEGIN:VCARD\n' + 'VERSION:3.0\n' + 'FN:' + name + '\n' + 'ORG:' + info + ';\n' + 'TEL;type=CELL;type=VOICE;waid=' + number + ':+' + number + '\n' + 'END:VCARD'
conn.sendMessage(m.chat, {
contacts: {
displayName: name,
contacts: [{
vcard
}]
}
}, {
quoted: m
})
}
m.react = (emoji) => conn.sendMessage(m.chat, {
react: {
text: emoji,
key: m.key
}
})
return m
}
module.exports = {
sms,
downloadMediaMessage
}