| import { WAMessageStubType } from '@adiwajshing/baileys' |
| import PhoneNumber from 'awesome-phonenumber' |
| import chalk from 'chalk' |
| import { watchFile } from 'fs' |
|
|
| const terminalImage = global.opts['img'] ? require('terminal-image') : '' |
| const urlRegex = (await import('url-regex-safe')).default({ strict: false }) |
|
|
| export default async function (m, conn = { user: {} }) { |
| let _name = await conn.getName(m.sender) |
| let sender = PhoneNumber('+' + m.sender.replace('@s.whatsapp.net', '')).getNumber('international') + (_name ? ' ~' + _name : '') |
| let chat = await conn.getName(m.chat) |
| |
| let img |
| try { |
| if (global.opts['img']) |
| img = /sticker|image/gi.test(m.mtype) ? await terminalImage.buffer(await m.download()) : false |
| } catch (e) { |
| console.error(e) |
| } |
| let filesize = (m.msg ? |
| m.msg.vcard ? |
| m.msg.vcard.length : |
| m.msg.fileLength ? |
| m.msg.fileLength.low || m.msg.fileLength : |
| m.msg.axolotlSenderKeyDistributionMessage ? |
| m.msg.axolotlSenderKeyDistributionMessage.length : |
| m.text ? |
| m.text.length : |
| 0 |
| : m.text ? m.text.length : 0) || 0 |
| let user = global.DATABASE.data.users[m.sender] |
| let me = PhoneNumber('+' + (conn.user?.jid).replace('@s.whatsapp.net', '')).getNumber('international') |
| console.log(` |
| ${chalk.redBright('%s')} ${chalk.black(chalk.bgYellow('%s'))} ${chalk.black(chalk.bgGreen('%s'))} ${chalk.magenta('%s [%s %sB]')} |
| ${chalk.green('%s')} ${chalk.yellow('%s%s')} ${chalk.blueBright('to')} ${chalk.green('%s')} ${chalk.black(chalk.bgYellow('%s'))} |
| `.trim(), |
| me + ' ~' + conn.user.name, |
| (m.messageTimestamp ? new Date(1000 * (m.messageTimestamp.low || m.messageTimestamp)).toLocaleString('id', { timeZone: 'Asia/Jakarta' }) : new Date).toLocaleString('id', { timeZone: 'Asia/Jakarta' }), |
| m.messageStubType ? WAMessageStubType[m.messageStubType] : '', |
| filesize, |
| filesize === 0 ? 0 : (filesize / 1009 ** Math.floor(Math.log(filesize) / Math.log(1000))).toFixed(1), |
| ['', ...'KMGTP'][Math.floor(Math.log(filesize) / Math.log(1000))] || '', |
| sender, |
| m ? m.exp : '?', |
| user ? '|' + user.exp + '|' + user.limit : '' + ('|' + user.level), |
| m.chat + (chat ? ' ~' + chat : ''), |
| m.mtype ? m.mtype.replace(/message$/i, '').replace('audio', m.msg.ptt ? 'PTT' : 'audio').replace(/^./, v => v.toUpperCase()) : '' |
| ) |
| if (img) console.log(img.trimEnd()) |
| if (typeof m.text === 'string' && m.text) { |
| let log = m.text.replace(/\u200e+/g, '') |
| let mdRegex = /(?<=(?:^|[\s\n])\S?)(?:([*_~])(.+?)\1|```((?:.||[\n\r])+?)```)(?=\S?(?:[\s\n]|$))/g |
| let mdFormat = (depth = 4) => (_, type, text, monospace) => { |
| let types = { |
| _: 'italic', |
| '*': 'bold', |
| '~': 'strikethrough' |
| } |
| text = text || monospace |
| let formatted = !types[type] || depth < 1 ? text : chalk[types[type]](text.replace(mdRegex, mdFormat(depth - 1))) |
| |
| return formatted |
| } |
| if (log.length < 4096) |
| log = log.replace(urlRegex, (url, i, text) => { |
| let end = url.length + i |
| return i === 0 || end === text.length || (/^\s$/.test(text[end]) && /^\s$/.test(text[i - 1])) ? chalk.blueBright(url) : url |
| }) |
| log = log.replace(mdRegex, mdFormat(4)) |
| if (m.mentionedJid) for (let user of m.mentionedJid) log = log.replace('@' + user.split`@`[0], chalk.blueBright('@' + await conn.getName(user))) |
| console.log(m.error != null ? chalk.red(log) : m.isCommand ? chalk.yellow(log) : log) |
| } |
| if (m.messageStubParameters) console.log(m.messageStubParameters.map(jid => { |
| jid = conn.decodeJid(jid) |
| let name = conn.getName(jid) |
| return chalk.gray(PhoneNumber('+' + jid.replace('@s.whatsapp.net', '')).getNumber('international') + (name ? ' ~' + name : '')) |
| }).join(', ')) |
| if (/document/i.test(m.mtype)) console.log(`π ${m.msg.fileName || m.msg.displayName || 'Document'}`) |
| else if (/ContactsArray/i.test(m.mtype)) console.log(`π¨βπ©βπ§βπ¦ ${' ' || ''}`) |
| else if (/contact/i.test(m.mtype)) console.log(`π¨ ${m.msg.displayName || ''}`) |
| else if (/audio/i.test(m.mtype)) { |
| const duration = m.msg.seconds |
| console.log(`${m.msg.ptt ? 'π€ (PTT ' : 'π΅ ('}AUDIO) ${Math.floor(duration / 60).toString().padStart(2, 0)}:${(duration % 60).toString().padStart(2, 0)}`) |
| } |
|
|
| console.log() |
| |
| } |
|
|
| let file = global.__filename(import.meta.url) |
| watchFile(file, () => { |
| console.log(chalk.redBright("Update 'lib/print.js'")) |
| }) |