Skip to content

Feat: Add WhatsApp channel with typing indicator and onboard subcommand#18

Merged
louisho5 merged 5 commits into
louisho5:mainfrom
thrapt:main
Feb 25, 2026
Merged

Feat: Add WhatsApp channel with typing indicator and onboard subcommand#18
louisho5 merged 5 commits into
louisho5:mainfrom
thrapt:main

Conversation

@thrapt

@thrapt thrapt commented Feb 23, 2026

Copy link
Copy Markdown
Contributor
  • Add WhatsApp as a messaging channel using whatsmeow
  • QR code auth via picobot onboard whatsapp with proper post-pairing sync handling (waits for Connected event + device sync)
  • Typing presence indicator (composing/paused) matching Discord pattern
  • Read receipts (blue ticks) on incoming messages
  • Message chunking for long replies
  • Allowlist filtering by phone number
  • Quiet logger for clean onboarding output
  • Add WhatsApp config schema

- Add WhatsApp as a messaging channel using whatsmeow
- QR code auth via `picobot onboard whatsapp` with proper post-pairing
  sync handling (waits for Connected event + device sync)
- Typing presence indicator (composing/paused) matching Discord pattern
- Read receipts (blue ticks) on incoming messages
- Message chunking for long replies
- Allowlist filtering by phone number
- Quiet logger for clean onboarding output
- Move setup-whatsapp under the onboard command
- Add WhatsApp config schema
@thrapt thrapt changed the title Add WhatsApp channel with typing indicator and onboard subcommand Feat: Add WhatsApp channel with typing indicator and onboard subcommand Feb 23, 2026
@louisho5

Copy link
Copy Markdown
Owner

Hi @thrapt, thanks a lot for your awesome work! I really appreciate the WhatsApp integration with Whatsmeow, and it works well on my mobile. However, I am a bit hesitant because the integration requires an extra 13MB. May I ask what you think about this integration?

@thrapt

thrapt commented Feb 23, 2026

Copy link
Copy Markdown
Contributor Author

That´s a good point. Let me take a couple of days to see if I can use other libraries to minimize the size.

@thrapt

thrapt commented Feb 23, 2026

Copy link
Copy Markdown
Contributor Author

Hey @louisho5

The whatsmeow library is heavy because it includes:

  • Protocol Buffers (protobuf)
  • Signal Protocol encryption
  • WebSocket & crypto libraries
  • QR code generation
  • SQLite drivers

We have a couple of options (from easy to harder):

  • Use -ldflags="-s -w" while building to strip symbols. Reduces the binary from 30M to 20M.
  • Use a Makefile to have an option to build without the WhatsApp channel.
  • Rewrite whastmeow or search for alternatives.

Any of those sound doable to you?

@rozeappletree

Copy link
Copy Markdown

Use websocket based tech?

Eg. https://baileys.wiki/docs/intro/

@thrapt @louisho5 what do you think?

Otherwise we can use official fb developers page to creatre our own bot but it needs company details to set up (I did it 1y back).

@louisho5

Copy link
Copy Markdown
Owner

Yes, thank you all for your help! Since the WhatsApp integration is quite heavy, I am planning to release a version without WhatsApp or other heavy packages in the future. I call it the 'lite' version, and it will be included in all upcoming releases. There will also be a full-feature version (the default) so users can choose what they need. This way, the bot can remain lightweight and run in environments like IoT or other limited-resource devices.

@thrapt

thrapt commented Feb 24, 2026 via email

Copy link
Copy Markdown
Contributor Author

@louisho5

Copy link
Copy Markdown
Owner

Thanks for the suggestion! This could be a great feature, but it will require some careful planning before we implement it (maybe another PR). For now, the Whatsapp feature looks good, so I am going to go ahead and merge the PR. How do you think, @thrapt?

Actually, I can't wait to start using Whatsapp to communicate with Picobot.

@louisho5 louisho5 added the enhancement New feature or request label Feb 24, 2026
@thrapt

thrapt commented Feb 25, 2026

Copy link
Copy Markdown
Contributor Author

Good to go on my end

@louisho5
louisho5 merged commit f4c3e6e into louisho5:main Feb 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants