Skip to content

Commit

Permalink
Sticker WM
Browse files Browse the repository at this point in the history
  • Loading branch information
SlavyanDesu committed Jan 14, 2021
1 parent b323c90 commit d089c6e
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 0 deletions.
43 changes: 43 additions & 0 deletions message/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ const sagiri = require('sagiri')
const NanaAPI = require('nana-api')
const nana = new NanaAPI()
const isPorn = require('is-porn')
const exec = require('await-exec')
const webp = require('webp-converter')
const sharp = require('sharp')
const saus = sagiri(config.nao, { results: 5 })
const axios = require('axios')
const tts = require('node-gtts')
Expand All @@ -46,6 +49,8 @@ const { nsfw, weeaboo, downloader, sticker, fun, misc, toxic } = require('../lib
const { uploadImages } = require('../tools/fetcher')
const { ind, eng } = require('./text/lang/')
const { limit, level, card, register, afk, reminder, premium } = require('../function')
const Exif = require('../tools/exif')
const exif = new Exif()
const cd = 4.32e+7
const errorImg = 'https://i.ibb.co/jRCpLfn/user.png'
const tanggal = moment.tz('Asia/Jakarta').format('DD-MM-YYYY')
Expand All @@ -63,6 +68,7 @@ const _premium = JSON.parse(fs.readFileSync('./database/bot/premium.json'))
const _registered = JSON.parse(fs.readFileSync('./database/bot/registered.json'))
const _level = JSON.parse(fs.readFileSync('./database/user/level.json'))
const _limit = JSON.parse(fs.readFileSync('./database/user/limit.json'))
const _jodoh = JSON.parse(fs.readFileSync('./database/user/jodoh/jodoh.json'))
const _afk = JSON.parse(fs.readFileSync('./database/user/afk.json'))
const _reminder = JSON.parse(fs.readFileSync('./database/user/reminder.json'))
const _bg = JSON.parse(fs.readFileSync('./database/user/card/background.json'))
Expand Down Expand Up @@ -2023,6 +2029,43 @@ module.exports = msgHandler = async (bocchi = new Client(), message) => {
break

// Sticker
case 'stickerwm': // By Slavyan
case 'stcwm':
if (!isRegistered) return await bocchi.reply(from, ind.notRegistered(), id)
if (!isOwner) return await bocchi.reply(from, ind.ownerOnly(), id)
if (!q.includes('|')) return await bocchi.reply(from, ind.wrongFormat(), id)
if (isMedia && isImage || isQuotedImage) {
await bocchi.reply(from, ind.wait(), id)
const packname = q.substring(0, q.indexOf('|') - 1)
const author = q.substring(q.lastIndexOf('|') + 2)
exif.create(packname, author)
const encryptMedia = isQuotedImage ? quotedMsg : message
const mediaData = await decryptMedia(encryptMedia, uaOverride)
webp.buffer2webpbuffer(mediaData, 'jpg', '-q 100')
.then(async (res) => {
sharp(res)
.resize(256, 256)
.toFile(`./temp/stage_${sender.id}.webp`, async (err) => {
if (err) return console.error(err)
await exec(`webpmux -set exif ./temp/data.exif ./temp/stage_${sender.id}.webp -o ./temp/${sender.id}.webp`, { log: true })
if (fs.existsSync(`./temp/${sender.id}.webp`)) {
const data = fs.readFileSync(`./temp/${sender.id}.webp`)
const base64 = `data:image/webp;base64,${data.toString('base64')}`
await bocchi.sendRawWebpAsSticker(from, base64)
fs.unlinkSync(`./temp/${sender.id}.webp`)
fs.unlinkSync(`./temp/stage_${sender.id}.webp`)
fs.unlinkSync('./temp/data.exif')
}
})
})
.catch(async (err) => {
console.error(err)
await bocchi.reply(from, 'Error!', id)
})
} else {
await bocchi.reply(from, ind.wrongFormat(), id)
}
break
case 'sticker':
case 'stiker':
if (!isRegistered) return await bocchi.reply(from, ind.notRegistered(), id)
Expand Down
5 changes: 5 additions & 0 deletions message/text/lang/ind.js
Original file line number Diff line number Diff line change
Expand Up @@ -679,6 +679,11 @@ Konversi emoji ke stiker.
Aliases: *emojistiker*
Usage: *${prefix}emojisticker* emoji
8. *${prefix}stickerwm*
Buat stiker dengan WM.
Aliases: *stcwm*
Usage: Kirim gambar dengan caption *${prefix}stickerwm* pack_name | author_name atau reply gambar dengan caption *${prefix}stickerwm* pack_name | author_name.
_Index of [4]_
`
}
Expand Down
43 changes: 43 additions & 0 deletions tools/exif.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// Originally created by cwke and recoded by SlavyanDesu

const fs = require('fs-extra')
const packID = "com.snowcorp.stickerly.android.stickercontentprovider b5e7275f-f1de-4137-961f-57becfad34f2"
const playstore = "https://play.google.com/store/apps/details?id=com.marsconstd.stickermakerforwhatsapp"
const itunes = "https://itunes.apple.com/app/sticker-maker-studio/id1443326857"

module.exports = class Exif {
constructor() {}

create(packname, authorname) {
const json = {
"sticker-pack-id": packID,
"sticker-pack-name": packname,
"sticker-pack-publisher": authorname,
"android-app-store-link": playstore,
"ios-app-store-link": itunes
}
let len = JSON.stringify(json).length
const f = Buffer.from([0x49, 0x49, 0x2A, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x41, 0x57, 0x07, 0x00])
const code = [0x00, 0x00, 0x16, 0x00, 0x00, 0x00]
if (len > 256) {
len = len - 256
code.unshift(0x01)
} else {
code.unshift(0x00)
}
const fff = Buffer.from(code)
const ffff = Buffer.from(JSON.stringify(json))
if (len < 16) {
len = len.toString(16)
len = "0" + len
} else {
len = len.toString(16)
}
const ff = Buffer.from(len, 'hex')
const buffer = Buffer.concat([f, ff, fff, ffff])
fs.writeFile('./temp/data.exif', buffer, (err) => {
if (err) return console.error(err)
console.log('Success!')
})
}
}

0 comments on commit d089c6e

Please sign in to comment.