-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Context
We need a way to send broadcast messages to all active users in our notification system. This is useful for announcements, updates, or important communications that need to reach all subscribers.
Objective
Create a command-line script that reads all active users from the database and sends a broadcast message to them via Telegram.
Technical Requirements
-
Script Location:
/apps/consumers/scripts/broadcast-message.ts -
Command Line Interface:
npm run broadcast "Your message here"- Add script to package.json:
"broadcast": "ts-node scripts/broadcast-message.ts"
- Add script to package.json:
-
User Selection:
- Query database for all users where
isActive = true - Only send to users with valid Telegram chat IDs
- Query database for all users where
-
Message Sending:
- Plain text messages only
- Same message for all users (no personalization)
- Respect Telegram rate limits (30 messages/second)
-
Confirmation Flow:
- Display total number of active users found
- Show message preview
- Require Y/N confirmation before sending
-
Output Report:
- Track successful sends
- Track failed sends with error reasons
- Display summary at the end:
Broadcast Summary: - Total users: X - Successfully sent: Y - Failed: Z - Error details: [list of failures]
-
Error Handling:
- Continue sending even if some messages fail
- Log each failure with user ID and error message
- Handle rate limiting gracefully
Example Usage
$ npm run broadcast "🎉 New feature available! Check out our latest updates."
Found 150 active users.
Message preview:
"🎉 New feature available! Check out our latest updates."
Send this message to all 150 users? (Y/N): Y
Sending messages...
Progress: 150/150
Broadcast Summary:
- Total users: 150
- Successfully sent: 148
- Failed: 2
- Errors:
- User 12345: 403 Forbidden: bot was blocked by the user
- User 67890: 400 Bad Request: chat not foundReactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels