Installation
> npm i wa-sticker-formatter
Usage
Wa-Sticker-Formatter provides two ways to create stickers.
The paramers are the same for both.
-
First is the Buffer, SVG String, URL, SVG String or File path of static image, GIF or Video. The second is the options. GIFs and Videos will output an animated WebP file.
-
2nd Paramter, an object, Sticker Options accepts the following fields
pack
- The pack name.
author
- The author name.
type
- Value from StickeTypes enum (exported). Can be 'crop' or 'full' or undefined (default).
categories
- The sticker category. Can be an array of Emojis or undefined (default).
quality
- The quality of the output file. Can be an integer from 0 to 100. Defaults to 100.
id
- The sticker id. If this property is not defined, it will be generated.
background
- Background color in hexadecimal format or an RGBA Object. Defaults to undefined (transparent).
Import
Before using the library, you need to import it.
import { Sticker, createSticker, StickerTypes } from 'wa-sticker-formatter'
Using The Sticker
constructor (Recommended)
const sticker = new Sticker(image, {
pack: 'My Pack',
author: 'Me',
type: StickerTypes.FULL,
categories: ['🤩', '🎉'],
id: '12345',
quality: 50,
background: '#000000'
})
const buffer = await sticker.toBuffer()
await sticker.toFile('sticker.webp')
conn.sendMessage(jid, await sticker.toMessage())
You can also chain methods like this:
const buffer = await new Sticker(image)
.setPack('My Pack')
.setAuthor('Me')
.setType(StickerTypes.FULL)
.setCategories(['🤩', '🎉'])
.setId('12345')
.setBackground('#000000')
.setQuality(50)
.toBuffer()
The image
(first parameter) can be a Buffer, URL, SVG string, or File path.
SVG Example
const sticker = new Sticker(`
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
<path d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 464c-119.1 0-216-96.9-216-216S136.9 40 256 40s216 96.9 216 216-96.9 216-216 216z" fill="#ff0000" />
</svg>
`, { author: 'W3' })
Using the createSticker
function
const buffer = await createSticker(buffer, options)
Options
The following options are valid:
interface IStickerConfig {
pack?: string
author?: string
id?: string
categories?: Categories[]
background?: Sharp.Color
type?: StickerTypes | string
quality?: number
}
Sticker Types
Sticker types are exported as an enum.
enum StickerTypes {
DEFAULT = 'default',
CROPPED = 'crop',
FULL = 'full',
CIRCLE = 'circle,
ROUNDED = 'rounded'
}
Background
Background can be a hex color string or a sharp color object.
{
"background": "#FFFFFF"
}
or
{
"background": {
"r": 255,
"g": 255,
"b": 255,
"alpha": 1
}
}
Metadata
Here's some basic information about WhatsApp Sticker Metadata.
In WhatsApp, stickers have their own metadata embedded in the WebP file as They hold info like the author, the title or pack name and the category.
1. Author and Pack Title
The text on bold is the pack title and the rest is the author.
This is actually Exif Metadata embedded in the WebP file.
2 Sticker Category
This is an array of Emojis. Learn More
To extract the metadata from the WebP file, you can use the extractMetadata()
function.
import { extractMetadata, Sticker } from 'wa-sticker-formatter'
import { readFileSync } from 'fs'
const sticker = readFileSync('sticker.webp')
let metadata = await extractMetadata(sticker)
metadata = await Sticker.extractMetadata(sticker)
Thanks for using Wa-Sticker-Formatter!