This is a WhatsApp bot to convert images and videos to stickers.
The bot supports two primary commands in addition to the !help command, which can be used by sending an image or video along with the command or by quoting a previously sent image or video in your message:
!sticker: Converts an image or video into a sticker. For images, it generates a standard sticker, while for videos, it creates an animated sticker (gif-like).!image: Processes an image and returns it with applied edits. By default, it returns the original image unless combined with one or more of the following arguments.
Both !sticker and !image commands can be enhanced with these optional arguments:
Warning
For the !sticker command, arguments are applicable only to images, not videos.
resize=width/height: Resizes the sticker/image to the specified width and height. Usex,., or/as separators.negate: Inverts the colors of the sticker/image. No additional value required.grayscale/greyscale: Converts the sticker/image to black and white. No additional value required.blur=level: Applies a blur effect to the sticker/image. Accepts values from 0.3 (no blur) to 1000 (fully blurred).lightness=level: Adjusts the lightness of the sticker/image. Accepts numeric values. Lightness is additive, impacting the overall brightness without altering the relative luminance of colors.brightness=level: Modifies the brightness of the sticker/image. Accepts positive numeric values. Brightness operates multiplicatively, affecting the luminance of each color in the image.saturation=level: Alters the saturation level. Accepts positive numeric values, enhancing or reducing the color intensity.hue=level: Changes the hue. Accepts values from 0 to 360 degrees.removeBg: Removes the background. Requires a remove.bg API key in the .env file. No additional value required.bgColor=color: Replaces the background with a specified color. Accepts color names (e.g.,red) or hex codes (e.g.,#ff0000).bgImageUrl=URL: Replaces the background with an image from the provided URL.text='Your text': Adds custom text to the image. Expects a string.textSize=size: Sets the size of the text. Effective only if text is added. Default is128.textColor=color: Sets the text color. Effective only if text is added. Accepts color names or hex codes, defaulting toblack.textPosition=position: Adjusts text position. Effective only if text is added. Options includetop,topRight,right,bottomRight,bottom,bottomLeft,left,topLeft, andcenter. Default istop.
Tip
Multiple arguments can be combined and used at the same time for more customized effects.
Here is an example of the base command:

Note
For more detailed examples, please see the examples documentation.
- Node.js: You need to have Node.js installed on your computer to run this bot. You can download it here.
In the project directory, you can run:
Installs every dependency needed for the project.
Runs the app in the development mode.
The app will reload every time you save a file.
You will also see any lint errors/warnings in the console.
yarn devandnpm run devdo the same.
Runs the app in the production mode.
Before running the app, it will run the linter, format code with Prettier, and build the project.
Builds the app for production to the build folder.
Your app is ready to be deployed!
yarn prodandnpm run proddo the same, and also run the app after building it.
Runs the linter and logs every error and warning to the console.
yarn lint:fixandnpm run lint:fixfix every autofixable error/warning.
Runs Prettier and logs every error and warning to the console.
yarn prettier:fixandnpm run prettier:fixfix every autofixable error/warning.
Runs both the linter and Prettier and logs every error and warning to the console.
yarn check:fixandnpm run check:fixfix every autofixable error/warning.
A normal Dockerfile for a Node.js app won't work for this bot, as the whatsapp-web.js library uses Puppeteer, and needs Chromium to run.
This project's Dockerfile handles every installation, and sets the whole environment needed for the bot to run and be authenticated.
If the Docker image is built in a directory that has a .wwebjs_auth folder, it will use that file to authenticate and the container will start the bot without further authentication. If not, a QR code will be logged to the console and the user will have to scan it to authenticate.
You can use Docker to run your app. This project has a multi-stage build process so your final image doesn't have any TypeScript files nor dev dependencies, resulting in a smaller image size.
To build your image run: docker build -t <image-name> .
To run your image run: docker run -p 80:80 <image-name>
If you haven't used Docker before, you can get started with it here.
Contributions are more than welcome!
We think that you might have great ideas to make this project even better. If you do, please create a pull request and/or issue following the contribution guidelines.
Give a βοΈ if this project helped you!
Copyright Β© 2022 Toti MuΓ±oz.
This project is MIT licensed.
This project was made with β€ and TypeScript