Skip to content

Commit

Permalink
add sticker
Browse files Browse the repository at this point in the history
  • Loading branch information
Kry9toN committed Jan 20, 2021
1 parent 4ed0531 commit ff4be49
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 2 deletions.
94 changes: 94 additions & 0 deletions command/sticker.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
/* eslint-disable no-mixed-operators */
const { exec } = require('child_process')
const { getRandom } = require('../utils/functions')

module.exports = {
name: 'sticker',
aliases: ['s', 'st'],
description: 'Untuk menyimpan note atau catatan di group\nPenggunaan: !notes <save/remove> <key> <value>',
async execute (client, chat, pesan, args) {
if (!client.isPmium) return client.client.reply(pesan.error.premium)
const encmedia = client.isQuotedImage ? JSON.parse(JSON.stringify(chat).replace('quotedM', 'm')).message.extendedTextMessage.contextInfo : chat
const media = await client.downloadAndSaveMediaMessage(encmedia)
ranw = getRandom('.webp')
ranp = getRandom('.png')
if ((client.isMedia && !chat.message.videoMessage || client.isQuotedImage) && args.length == 0) {
await ffmpeg(`./${media}`)
.input(media)
.on('start', function (cmd) {
console.log(`Started : ${cmd}`)
})
.on('error', function (err) {
console.log(`Error : ${err}`)
fs.unlinkSync(media)
client.reply(mess.error.stick)
})
.on('end', function () {
console.log('Finish')
client.sendMessage(client.from, fs.readFileSync(ranw), sticker, { quoted: chat })
fs.unlinkSync(media)
fs.unlinkSync(ranw)
})
.addOutputOptions(['-vcodec', 'libwebp', '-vf', 'scale=\'min(320,iw)\':min\'(320,ih)\':force_original_aspect_ratio=decrease,fps=15, pad=320:320:-1:-1:[email protected], split [a][b]; [a] palettegen=reserve_transparent=on:transparency_color=ffffff [p]; [b][p] paletteuse'])
.toFormat('webp')
.save(ranw)
} else if ((client.isMedia && chat.message.videoMessage.seconds < 11 || client.isQuotedVideo && chat.message.extendedTextMessage.contextInfo.quotedMessage.videoMessage.seconds < 11) && args.length == 0) {
client.reply(mess.wait)
await ffmpeg(`./${media}`)
.inputFormat(media.split('.')[1])
.on('start', function (cmd) {
console.log(`Started : ${cmd}`)
})
.on('error', function (err) {
console.log(`Error : ${err}`)
fs.unlinkSync(media)
tipe = media.endsWith('.mp4') ? 'video' : 'gif'
client.reply(`❌ Gagal, pada saat mengkonversi ${tipe} ke stiker`)
})
.on('end', function () {
console.log('Finish')
client.sendMessage(client.from, fs.readFileSync(ranw), sticker, { quoted: chat })
fs.unlinkSync(media)
fs.unlinkSync(ranw)
})
.addOutputOptions(['-vcodec', 'libwebp', '-vf', 'scale=\'min(320,iw)\':min\'(320,ih)\':force_original_aspect_ratio=decrease,fps=15, pad=320:320:-1:-1:[email protected], split [a][b]; [a] palettegen=reserve_transparent=on:transparency_color=ffffff [p]; [b][p] paletteuse'])
.toFormat('webp')
.save(ranw)
} else if ((client.isMedia || client.isQuotedImage) && args[0] == 'nobg') {
client.reply(mess.wait)
keyrmbg = process.env.KEY_REMOVEBG
await removeBackgroundclient.fromImageFile({ path: media, apiKey: keyrmbg.result, size: 'auto', type: 'auto', ranp }).then(res => {
fs.unlinkSync(media)
const buffer = Buffer.client.from(res.base64img, 'base64')
fs.writeFileSync(ranp, buffer, (err) => {
if (err) return client.reply('Gagal, Terjadi kesalahan, silahkan coba beberapa saat lagi.')
})
exec(`ffmpeg -i ${ranp} -vcodec libwebp -filter:v fps=fps=20 -lossless 1 -loop 0 -preset default -an -vsync 0 -s 512:512 ${ranw}`, (err) => {
fs.unlinkSync(ranp)
if (err) return client.reply(mess.error.stick)
client.sendMessage(client.from, fs.readFileSync(ranw), sticker, { quoted: chat })
})
})
/* } else if ((client.isMedia || client.isQuotedImage) && colors.includes(args[0])) {
await ffmpeg(`./${media}`)
.on('start', function (cmd) {
console.log('Started :', cmd)
})
.on('error', function (err) {
fs.unlinkSync(media)
console.log('Error :', err)
})
.on('end', function () {
console.log('Finish')
fs.unlinkSync(media)
client.sendMessage(client.from, fs.readFileSync(ran), sticker, {quoted: chat})
fs.unlinkSync(ran)
})
.addOutputOptions([`-vcodec`,`libwebp`,`-vf`,`scale='min(320,iw)':min'(320,ih)':force_original_aspect_ratio=decrease,fps=15, pad=320:320:-1:-1:color=${args[0]}@0.0, split [a][b]; [a] palettegen=reserve_transparent=off; [b][p] paletteuse`])
.toFormat('webp')
.save(ran) */
} else {
client.reply('Kirim gambar dengan caption !sticker atau tag gambar yang sudah dikirim')
}
}
}
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@
"release-it": "^14.2.2",
"cfonts": "^2.9.1",
"node-fetch": "^2.6.1",
"pg": "^8.5.1"
"pg": "^8.5.1",
"child_process": "^1.0.2"
},
"devDependencies": {
"babel-eslint": "^10.1.0",
Expand Down
7 changes: 6 additions & 1 deletion utils/functions.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,16 @@ const getBuffer = async (url, options) => {
}
}

const getRandom = (ext) => {
return `${Math.floor(Math.random() * 10000)}${ext}`
}

module.exports = {
start,
success,
processTime,
getGroupAdmins,
banner,
getBuffer
getBuffer,
getRandom
}

0 comments on commit ff4be49

Please sign in to comment.