## Whatsapp API Multi Device Version





### Support ARM
Now that we support ARM64 for Linux:
- [Release](https://github.com/aldinokemal/go-whatsapp-web-multidevice/releases) for ARM64
- [Docker Image](https://hub.docker.com/r/aldinokemal2104/go-whatsapp-web-multidevice/tags) for ARM64.
### Feature
- Send whatsapp via http API, [docs/openapi.yml](./docs/openapi.yaml) for more details
- Compress image before send
- Compress video before send
- Change OS name become your app (it's the device name when connect via mobile)
- `--os=Chrome` or `--os=MyApplication`
- Basic Auth (able to add multi credentials)
- `--basic-auth=kemal:secret,toni:password,userName:secretPassword`, or you can simplify
- `-b=kemal:secret,toni:password,userName:secretPassword`
- Customizable port and debug mode
- `--port 8000`
- `--debug true`
- Auto reply message
- `--autoreply="Don't reply this message"`
- Webhook for received message
- `--webhook="http://yourwebhook.site/handler"`, or you can simplify
- `-w="http://yourwebhook.site/handler"`
- For more command `./main --help`
### Required (without docker)
- Mac OS:
- `brew install vips`
- `brew install ffmpeg`
- `export CGO_CFLAGS_ALLOW="-Xpreprocessor"`
- Linux:
- `sudo apt update`
- `sudo apt install libvips-dev`
- `sudo apt install ffmpeg`
- Windows (not recomended, prefer using [WSL](https://docs.microsoft.com/en-us/windows/wsl/install)):
- install vips library, or you can check here https://www.libvips.org/install.html
- install ffmpeg, download [here](https://www.ffmpeg.org/download.html#build-windows)
- add to vips & ffmpg to [environment variable](https://www.google.com/search?q=windows+add+to+environment+path)
### How to use
#### Basic
1. Clone this repo `git clone https://github.com/aldinokemal/go-whatsapp-web-multi-device`
2. open via cmd/terminal
3. run `go install github.com/markbates/pkger/cmd/pkger@latest`
4. run `cd src`
5. run `pkger && go run main.go`
6. open `http://localhost:3000`
7. run `go run main.go --help` for more detail flags
#### Docker (you don't need to install in required)
1. Clone this repo `git clone https://github.com/aldinokemal/go-whatsapp-web-multi-device`
2. open via cmd/terminal
3. run `docker-compose up -d --build`
4. open `http://localhost:3000`
#### Build your own binary
1. Clone this repo `git clone https://github.com/aldinokemal/go-whatsapp-web-multi-device`
2. open via cmd/terminal
3. run `go install github.com/markbates/pkger/cmd/pkger@latest`
4. run `cd src`
5. run
1. Linux & MacOS: `pkger && go build -o whatsapp`
2. Windows (CMD, not PowerShell): `pkger.exe && go build -o whatsapp.exe`
6. run
1. Linux & MacOS: `./whatsapp`
1. run `./whatsapp --help` for more detail flags
2. Windows: `.\whatsapp.exe` or you can double-click it
1. run `.\whatsapp.exe --help` for more detail flags
7. open `http://localhost:3000` in browser
### Production Mode (docker)
```
docker run --detach --publish=3000:3000 --name=whatsapp --restart=always --volume=$(docker volume create --name=whatsapp):/app/storages aldinokemal2104/go-whatsapp-web-multidevice --autoreply="Dont't reply this message please"
```
### Production Mode (binary)
- download binary from [release](https://github.com/aldinokemal/go-whatsapp-web-multidevice/releases)
You can fork or edit this source code !
### Current API
You can check [docs/openapi.yml](./docs/openapi.yaml) for detail API, furthermore you can generate HTTP Client from this
API using [openapi-generator](https://openapi-generator.tech/#try)
| Feature | Menu | Method | URL |
|---------|-------------------------|--------|-----------------------------|
| ✅ | Login | GET | /app/login |
| ✅ | Logout | GET | /app/logout |
| ✅ | Reconnect | GET | /app/reconnect |
| ✅ | User Info | GET | /user/info |
| ✅ | User Avatar | GET | /user/avatar |
| ✅ | User My Group List | GET | /user/my/groups |
| ✅ | User My Privacy Setting | GET | /user/my/privacy |
| ✅ | Send Message | POST | /send/message |
| ✅ | Send Image | POST | /send/image |
| ✅ | Send Audio | POST | /send/audio |
| ✅ | Send File | POST | /send/file |
| ✅ | Send Video | POST | /send/video |
| ✅ | Send Contact | POST | /send/contact |
| ✅ | Send Link | POST | /send/link |
| ✅ | Send Location | POST | /send/location |
| ✅ | Revoke Message | POST | /message/:message_id/revoke |
| ✅ | React Message | POST | /message/:message_id/react |
| ✅ | Join Group With Link | POST | /group/join-with-link |
| ✅ | Leave Group | POST | /group/leave |
```
✅ = Available
❌ = Not Available Yet
```
### App User Interface
1. Homepage 
2. Login 
3. Send Message 
4. Send Image 
5. Send File 
6. Send Video 
7. Send Contact 
8. Send Location 
9. Send Audio 
10. Revoke Message 
11. Reaction Message 
12. User Info 
13. User Avatar 
14. My Privacy 
15. My Group 
16. Auto Reply 
17. Basic Auth Prompt 
### Mac OS NOTE
- Please do this if you have an error (invalid flag in pkg-config --cflags: -Xpreprocessor)
`export CGO_CFLAGS_ALLOW="-Xpreprocessor"`