whatsapp_bot_flutter 0.0.6 whatsapp_bot_flutter: ^0.0.6 copied to clipboard
Whatsapp bot using puppeteer and whatsapp web scraping with flutter desktop/web and dart projects support
Whatsapp bot flutter #
Whatsapp bot using whatsapp web scraping
Getting Started #
We can use this library in Flutter as well as Pure dart projects , checkout dart example
First launch will take some time
it will download chromium files locally, using puppeteer for whatsapp web and scarping data
Macos setup #
Enable outgoing and incoming connections for macos and also disable sandbox mode comment this out in macos/Runner/*.entitlements:
<key>com.apple.security.app-sandbox</key>
<true/>
Web setup #
To run on web , we have to run a chrome server somewhere using puppeteer, and get browserWsEndpoint
from there and pass into the connect method
checkout this example of running a chrome server using puppeteer
then pass this browserWsEndpoint
in connect method like this
await WhatsappBotFlutter.connect( browserWsEndpoint: "BROWSER_WS_ENDPOINT_URL",);
We can use this on desktop platforms as well , to connect to a chrome server hosted somewhere else
Usage #
First we have to get WhatsappClient
using WhatsappBotFlutter.connect
method , we can get qrcode from onQrCode
callback, this will return a qrString and ImageByte , we can use ImageBytes to show qr as Image widget , or we can convert qrCode String to QrCode widget by any library,
and to print qrCode in terminal use WhatsappBotFlutter.convertStringToQrCode(qrString)
WhatsappClient? whatsappClient = await WhatsappBotFlutter.connect(
onConnectionEvent: (ConnectionEvent event) {
print(event.toString());
},
onQrCode: (String qr, Uint8List? imageBytes) {
// use imageBytes to display in flutter : Image.memory(imageBytes)
print(WhatsappBotFlutter.convertStringToQrCode(qr));
},
);
We have these modules to access whatsappClient features :
WhatsappClient.chat
WhatsappClient.contact
WhatsappClient.profile
Use sendTextMessage
to send a text message
phone parameter can be of this format : countryCode+phoneNumber
, eg : 91xxxxxxxxxx
, or we can get phone from messageEvents in this format : countryCode+phone+"@c.us"
await whatsappClient.chat.sendTextMessage(
phone: "------",
message: "Test Message",
);
Use sendFileMessage
to send a File
await whatsappClient.chat.sendFileMessage(
phone: "------",
fileBytes: fileBytes, // Pass file bytes
caption: "Test Message", // Optional
fileType: fileType, // document, image, audio
);
To get new Messages , subscribe to whatsappClient.messageEvents
whatsappClient.messageEvents.listen((Message message) {
// replyMessageId is optional , add this to send a reply message
whatsappClient.chat.sendTextMessage(
phone: message.from,
message: "Hey !",
replyMessageId: message.id,
);
});
To get whatsapp connection Events , subscribe to whatsappClient.connectionEventStream
whatsappClient.connectionEventStream.listen((event) {
// Connection Events : authenticated,logout,connected.....
});
To get whatsapp calls Events , subscribe to whatsappClient.callEvents
whatsappClient.callEvents.listen((event) {
// To reject call
whatsappClient.rejectCall(callId: event.id);
});
Features #
Supported Whatsapp features :
- Create multiple whatsapp clients
- Login with QR
- Auto refresh QrCode
- Logout
- Keep session
- Listen to New Messages
- Listen to Connection Events
- Listen to calls
- Reject calls
- Send text message
- Send image, audio & document
- Send location message
- Send poll in groups
- Send contact card
- Reply to a message
- Archive/Unarchive chats
- Mute/Unmute chat
- Clear chat
- Delete chat
- Get lastSeen
- Get chats
- Mark messages as seen
- Mark message as unread
- Pin/Unpin chat
- Delete messages
- Download media
- Get messages
- Get profile picture
- Get status
- Get contacts
- Get status of loggedIn user
- Set status
- check if logged in user have business account
- Set profile picture of logged in user
Resources #
Thanks to wa-js for exporting functions from WhatsApp Web
Disclaimer #
This project is not affiliated, associated, authorized, endorsed by, or in any way officially connected with WhatsApp or any of its subsidiaries or its affiliates. The official WhatsApp website can be found at https://whatsapp.com. "WhatsApp" as well as related names, marks, emblems and images are registered trademarks of their respective owners.
Note #
Its just initial version, I can't guarantee you will not be blocked by using this method, try to avoid primary whatsapp numbers. WhatsApp does not allow bots or unofficial clients on their platform, so this shouldn't be considered totally safe.