Bulk DM
Multiple accounts take turns sending DMs one by one to the strangers on a list. The whole page has a single configuration and a single list, changes are saved automatically, and only one round runs at a time.
If this is your first time, read Run your first bulk DM first.
Recipient list
Click Import (导入) and choose a CSV or TXT file:
- CSV: a file exported by Member Harvest; the username column is detected automatically
- TXT: one per line;
@name,t.me/nameandhttps://t.me/nameare all accepted, and lines starting with#are ignored
Only usernames are supported; people without a username cannot be messaged. Importing only adds and never overwrites; duplicates, bots and deleted accounts are removed automatically.
| List status | Meaning |
|---|---|
| Pending (待发送) | |
| Delivered (已送达) | |
| Failed (失败) | The reason is written in the Notes (备注) column |
| Contacts only (需双向) | The recipient only accepts DMs from contacts |
| Invalid · removed (无效 · 已剔除) | The username does not exist or the account was deleted |
:::caution Failed is a final state Failed recipients do not enter the next round automatically. To message them again, you have to Export (导出), clear the list, and import again. :::
Three delivery modes
| Mode | What is sent | What to fill in |
|---|---|---|
| Direct mode (直发模式) | The account sends a message of its own | DM text (one per line, a random line is picked) and / or attached files (a random one per message) |
| Forward mode (转发模式) | Forwards a post from a public channel | Post links, one per line, e.g. https://t.me/example_channel/1288. You can tick Hide forward source (隐藏转发来源) |
| postbot mode (postbot 模式) | Delivers a post through an inline bot | Inline bot username + post ID |
Direct-mode text supports random variants ({text 1|text 2}) and Premium emoji; there are no recipient variables. The limit is 4096 characters, or 1024 with an attachment. Rich text requires the sending account to have Premium.
If the forward source becomes invalid, or the postbot code becomes invalid, the whole round stops.
Within each mode you can also choose the DM style:
| Style | Description |
|---|---|
| Plain DM (普通私信) | Sends one message |
| Reply mode (回复模式) | 5–15 seconds (adjustable) after the first message, the same account sends a second one, which may take a different form from the first |
| Edit mode (编辑模式) | Direct mode only, no attachments. 30 seconds (adjustable) after sending, the message is changed to the Edited text (编辑后文案) |
Config templates (配置模板) save the whole configuration (without the list), for switching between several sets of copy.
Parameters
First pick accounts under Participating accounts (参与账号). Accounts that are not logged in can be picked too and go online automatically when sending; banned and frozen ones do not appear.
Presets (参数预设) come in three levels: Conservative (保守) / Balanced (稳健) / Aggressive (激进). If unsure, use Balanced. The key items:
| Parameter | Default | Description |
|---|---|---|
| Messages per account (单账号发送数量) | 15 | The most one account sends in this round. It only governs this round: it does not accumulate across rounds or reset daily, and a new round counts from 0 again |
| Interval between messages (每条信息发送间隔) | 30–50 seconds | Between two messages from the same account |
| Interval when switching accounts (切换账号时的间隔) | 3–5 seconds | |
| Total DMs to send (发送私信总数) | 0 | Cap for the whole round, 0 = unlimited |
| Retries after PEER_FLOOD (PEER_FLOOD 后重试次数) | 2 | Retries 120 seconds after hitting it; 0 = the account is benched for this round as soon as it hits |
| Ask @SpamBot for the unblock time (向 @SpamBot 问解禁时刻) | On | If the reported time is later, wait until then |
| Simulate a real person opening the chat before sending (模拟真人打开会话后再发送) | On | Opens the chat, views the profile card, fetches history, types at 12 characters / second, then sends |
The Parameter check (参数体检) card computes in real time the maximum this round can send and the estimated duration. When number of accounts × Messages per account < number of people on the list, this round cannot finish the list.
How accounts rotate
Accounts are grouped by proxy: different proxies run in parallel, and within one proxy a single account is used until it reaches its quota or gets restricted, then the next one takes over.
| The account hits | Handling |
|---|---|
| FLOOD_WAIT | Marked Restricted (已受限); comes back automatically after waiting out the seconds |
| PEER_FLOOD | Retries per the table above; benched for this round once retries run out |
| Banned or session invalid | Marked Invalid (已失效) and written back to the account library |
| 3 consecutive messages without a receipt, or 3 consecutive recipients not found | Benched for this round |
When an account runs into trouble, the recipient it was handling stays Pending and is sent by the next account in the same group.
Running and results
After Start sending (开始发送), the right column shows Succeeded (成功) / Failed (失败) / contacts-only block (双向拦截) / Remaining (剩余) and a live log. There is only Stop sending (停止发送), no pause; after stopping, click start again to continue from the remaining Pending recipients.
If no receipt arrives within 60 seconds of sending (3 minutes with an attachment), it is recorded as failed with the note "message may have been sent" (消息可能已发出).
Send log (发送记录) lists the counts and stop reason for each round. For per-recipient details, use the list's Export.
If the app quits midway, that round does not resume; what was already sent is recorded on the list, so simply start another round.