Enter at least 8 characters to finish resetting your password.
{{ accessLoading ? 'Verifying your Open-Teleset administrator access.' : accessError }}
No accounts yet. Click a button above to add one.
| Account ID | Name | Username | Phone | Type | Status | Last online | Usage | Actions |
|---|---|---|---|---|---|---|---|---|
| {{ acc.account_id }} | {{ acc.first_name || '-' }} {{ acc.last_name || '' }} | @{{ acc.username }} - | {{ acc.phone || '-' }} | {{ acc.is_premium ? '⭐ Premium' : 'Standard' }} | {{ acc.status === 'online' ? 'Online' : 'Offline' }} {{ acc.connection_error }} | {{ formatTime(acc.last_online) }} | {{ acc.use_count || 0 }} |
|
Free global proxy discovery is enabled by default. Only a tested proxy is saved; existing and per-account settings take priority. Public proxies may be unavailable. Removing the global proxy disables automatic discovery.
{{ globalProxy.host }}:{{ globalProxy.port }}
All accounts use the global proxy by default. Per-account proxies take priority.
Set a dedicated proxy per account (higher priority than the global proxy). Username/password optional by proxy type.
{{ proxy.host }}:{{ proxy.port }}
Username: {{ proxy.username }} Password: {{ proxy.password }} •••••• {{ proxyPasswordVisible[proxy.proxy_id] ? '👁️' : '👁️🗨️' }} Unverified
All accounts are healthy
| Account ID | Risk level | Consecutive failures | Status |
|---|---|---|---|
| {{ id }} | {{ healthDetails[id]?.risk_level || 'Med' }} | {{ healthDetails[id]?.consecutive_fails || 0 }} | {{ healthDetails[id]?.banned ? 'May be banned' : 'Needs attention' }} |
No statistics
| Rank | Account ID | Usage |
|---|---|---|
| 🏅 #{{ i + 1 }} | {{ acc.account_id }} | {{ acc.value }} |
No activity logs
Preset message templates for quick / AI send
No message templates
View and manage scheduled tasks
No schedules
Use Add schedule to choose a message, account, recipients, and run time.
{{ getScheduleDescription(sch) }}
{{ sch.cron || sch.time }} Account: {{ sch.accounts?.join(', ') || sch.account_ids?.join(', ') || 'All' }}
Last run: {{ formatTime(sch.lastRun) }}
Scrape members from any Telegram channel or group
{{ scraper.summary }}
| # | ID | Username | Name | Activity |
|---|---|---|---|---|
| {{ idx + 1 }} | {{ m.id }} | {{ m.username || '—' }} | {{ m.first_name }} {{ m.last_name }} | {{ m.last_seen || m.activity }} |
Add members to a Telegram channel or group
Send once to each consenting recipient, using one account or rotating selected accounts.
{{ Object.keys(bulksend.messages).length }} individual messages imported. Editing recipients clears them.
Worker: {{ outreachWorker || 'Checking' }}. Jobs continue while this browser is closed. Pause or Stop prevents the next operation; an in-flight operation may finish.
{{ outreachJobError }}
No jobs yet.
{{ job.reason === 'operator_resume' && job.retry_after > 0 ? 'Resumed; waiting for the next eligible attempt' : job.reason ? outreachReason(job.reason) : (job.state === 'completed' ? 'Finished processing this list' : 'Processing consenting recipients') }}
Total {{ job.total }} · {{ job.kind === 'member_add' ? 'Added' : 'Sent' }} {{ job.completed }} · Pending {{ job.pending }} · In flight {{ job.in_flight }} · Skipped {{ job.skipped }} · Failed {{ job.failed }} · Uncertain {{ job.uncertain }}
Assigned account: {{ job.next_account_id }}
Next eligible attempt in {{ outreachDuration(job.retry_after) }} · {{ outreachRetryTime(job.retry_at) }} (your local time). Updates every 2 seconds.
A selected account is in a Telegram cooldown. Recipients on the other available accounts keep sending automatically; recipients pinned to the limited account resume once its cooldown ends. No click is needed.
Every selected account is in a Telegram cooldown, so the job waits automatically and resumes after the soonest one clears; no click is needed. Pause, Resume, or a new job cannot shorten Telegram's wait.
Paused. Resume is required to continue; any remaining Telegram cooldown still applies.
Delivery is uncertain. Check Telegram before creating another job; automatic retry is disabled.