Telegram Web Message Scheduler
A Tampermonkey userscript that allows you to schedule Telegram messages using Telegram Web's native scheduling feature. Instead of client-side timers, this script automates the actual UI interactions to use Telegram's built-in scheduling system.
✨ Features
- 📅 Native Scheduling: Uses Telegram's actual scheduling feature, not browser-based timers
- 🎯 Works across days, months, and years: Full calendar navigation support
- 🎨 Beautiful UI: Modern dark-themed modal with gradient accents
- 📝 Dual Input Modes: Use either a simple form or raw JSON input
- 📦 Batch Scheduling: Schedule multiple messages at once using JSON arrays
- 📋 Copy Example Button: Quickly copy the JSON example to your clipboard
- ⚡ Fully Automated: Script handles all clicking and typing automatically
📦 Installation
Prerequisites
- Install Tampermonkey browser extension:
Install the Script
- Click on the Tampermonkey icon in your browser
- Select "Create a new script..."
- Delete all existing content
- Copy and paste the entire contents of
telegram-scheduler.user.js
- Press Ctrl+S (or Cmd+S on Mac) to save
- Refresh Telegram Web
🚀 Usage
Step 1: Open Telegram Web
Navigate to web.telegram.org and log in to your account.
Step 2: Select a Chat
Open any chat where you want to schedule a message.
Step 3: Click the Floating Button
Look for the purple floating button (⏰) in the bottom-right corner of the screen.
Step 4: Configure Your Scheduled Message
Option A: Using the Form (Single Message)
- Click on the "Form" tab
- Enter your message in the text area
- Select the date using the date picker
- Set the time using the time picker
- Click "Schedule"
Option B: Using JSON (Single or Multiple Messages)
- Click on the "JSON" tab
- Enter a JSON object or array of objects with the following structure:
Single message:
{
"date": "2026-05-20",
"time": "14:30",
"message": "Hello! This is a scheduled message."
}
Multiple messages (batch scheduling):
[
{
"date": "2026-01-25",
"time": "09:00",
"message": "Good morning! ☀️"
},
{
"date": "2026-01-25",
"time": "12:00",
"message": "Lunch time reminder! 🍕"
},
{
"date": "2026-01-25",
"time": "18:00",
"message": "End of day! 🌙"
}
]
- Click "Schedule" (or "Schedule All" for multiple messages)
💡 Tip: Use the 📋 Copy button in the example section to quickly copy the multi-message JSON template to your clipboard!
Step 5: Watch the Magic ✨
The script will automatically:
- ✏️ Type your message into the input field
- 🖱️ Right-click the send button to open the context menu
- 📅 Click "Schedule Message"
- 🗓️ Navigate to the correct month/year
- 📆 Select the correct day
- ⏰ Set the correct time
- ✅ Confirm the scheduled message
- 🔁 Repeat for each message (when batch scheduling)
📋 JSON Format Reference
| Field |
Type |
Format |
Description |
date |
string |
YYYY-MM-DD |
The date to schedule the message (e.g., 2026-12-25) |
time |
string |
HH:MM |
The time in 24-hour format (e.g., 14:30 for 2:30 PM) |
message |
string |
Any text |
The message content to send |
Examples
Schedule for tomorrow at 9 AM:
{
"date": "2026-01-25",
"time": "09:00",
"message": "Good morning! ☀️"
}
Schedule for a specific date and time:
{
"date": "2026-02-14",
"time": "08:00",
"message": "Happy Valentine's Day! ❤️"
}
Schedule multiple reminders throughout the day:
[
{
"date": "2026-01-25",
"time": "08:00",
"message": "🌅 Wake up and start the day!"
},
{
"date": "2026-01-25",
"time": "10:00",
"message": "☕ Coffee break time"
},
{
"date": "2026-01-25",
"time": "12:30",
"message": "🍽️ Lunch time!"
},
{
"date": "2026-01-25",
"time": "15:00",
"message": "📊 Afternoon meeting reminder"
},
{
"date": "2026-01-25",
"time": "18:00",
"message": "🏠 Time to head home!"
}
]
Schedule messages across different dates:
[
{
"date": "2026-01-25",
"time": "09:00",
"message": "Day 1: Starting the project! 🚀"
},
{
"date": "2026-01-26",
"time": "09:00",
"message": "Day 2: Continue building! 🔨"
},
{
"date": "2026-01-27",
"time": "09:00",
"message": "Day 3: Almost there! 💪"
}
]
⚠️ Important Notes
- Stay on the page: Don't switch tabs while the script is running
- Current chat: The message will be scheduled in the currently open chat
- Valid dates: You cannot schedule messages in the past
- Time zone: Uses your local system time
- Internet connection: Required for Telegram's scheduling to work
- Batch scheduling: Messages are scheduled one by one with a 1.5 second delay between each
🔧 Troubleshooting
The floating button doesn't appear
- Make sure Tampermonkey is enabled
- Refresh the page
- Check if the script is enabled in Tampermonkey dashboard
"Element not found" error
- Try refreshing the page
- Make sure you're on Telegram Web K (web.telegram.org/k/)
- Ensure a chat is currently open
Navigation takes too long
- The script needs to click through months one by one
- For dates far in the future, this may take a few seconds
Wrong date selected (e.g., shows "today" instead of target date)
- This was fixed in v1.1 - make sure you have the latest version
- The calendar shows days from adjacent months that are disabled; the script now correctly skips them
Typing appears in Telegram chat instead of modal
- This was fixed in v1.2 - make sure you have the latest version
- The modal now properly captures keyboard events
🎨 Customization
The script includes a beautiful dark theme by default. You can customize colors by modifying the CSS in the styles constant near the top of the script.
📄 Changelog
v1.2
- ✨ Multiple message support: Schedule many messages at once using JSON arrays
- 📋 Copy button: Added a copy button to quickly copy the JSON example
- 🔧 Input focus fix: Modal inputs no longer leak keystrokes to Telegram's chat input
v1.1
- 🐛 Calendar fix: Fixed issue where days 29, 30, 31 would incorrectly select dates from the previous month
v1.0
- 🎉 Initial release with form and JSON input modes
📄 License
MIT License - Feel free to modify and distribute!
Made with ❤️ for Telegram users who love automation