总览
{{stat.total}}
总号数
{{stat.online}}
在线号
{{stat.banned}}
异常/封禁
{{stat.groups}}
累计群数
{{stat.unread}}
未读私聊
{{stat.tasks}}
运行中任务
最近私聊会话
| 账号 | 客户 | 最新消息 | 状态 |
|---|---|---|---|
| {{accName(c.account_id)}} | {{c.peer_name||c.peer_id}} | {{c.last_msg}} | {{c.status}} |
| 暂无会话 | |||
号池管理
🖥 服务器:
🟢 在线 {{accSys.online_conn||0}} / {{accs.length}} 个号
内存 {{accSys.mem?accSys.mem.MemAvailable:0}}M 可用 / {{accSys.mem?(accSys.mem.MemTotal+accSys.mem.SwapTotal):0}}M (含磁盘swap{{accSys.mem?accSys.mem.SwapTotal:0}}M)
swap 空闲 {{accSys.mem?accSys.mem.SwapFree:0}}M
🎙 语音中 {{voiceCount}} 个号
⚠️ 内存吃紧, 建议下线几个号
{{accOnlineProg.msg}}
👈 先在号列表左边☐勾选号(勾选框已默认显示), 再点这里批量上下线
行首圆形=该号TG真实头像 · 名字=TG真实名
⚠️ 部分失败
👤 员工:
选员工后: 号池/群管理/客服 都只显示该员工的号
☑ 批量:
已选 {{accSel.length}} 个
(点"批量操作面板"展开全部批量工具)
〔选中〕
移到:
〔分组/线路〕
〔资料/装备〕
前缀:
〔危险〕
已选 {{accSel.length}} 个号
名字:
头像:
统一2FA密码:
🌐 线路:
⚠️ {{ipWarn}}
{{l.name}} {{l.ok?'🟢':'🔴'}} {{l.ok?(l.ip+' · '+l.ms+'ms'):'失效'}}
🔍 筛选:
📥 批量导入买号(支持自动接码登入)
📄 下载号码格式模板
导入到组:
格式: 号码 / 号码----接码API / 号码----接码API----2FA密码
{{r.ok?'✅':'❌'}} 第{{r.line}}行 {{r.phone||''}} — {{r.msg}}
📄 导入协议号(.session文件):
上传 Telethon 协议号 .session 文件直接接管该号(免验证码); 文件存服务器, 之后可随时点[上线]
🎙️ 语音房 / 直播挂机
② 参与号(在号池勾选 / 或点下面按钮)
已选 {{accSel.length}} 个号
③ 挂机设置
自动退房: 分钟
(0=不自动退, 一直挂着)
📊 正在房里: {{ntVoice.length}} 个号
● {{v.tg_id}} {{v.name}} · 挂 {{ntDur(v.seconds)}}
还没有号在房里
📞 号互打(选中号互相拨打)
参与号
已选 {{accSel.length}} 个号(至少2个)
通话设置
每通时长: 秒
随机浮动: 秒
打法: 1→2, 2→3, 3→1 依次拨打(对方响铃N秒后挂断)
📞 状态: {{ntCall.running?'进行中':'空闲'}} {{ntCall.done!=null?('· 已完成 '+ntCall.done+'/'+(ntCall.total||0)):''}}
● {{ntCall.cur}}
{{avTxt(a)}}
{{a.phone}} · {{a.device||'无指纹'}}
🎙 语音中 已挂 {{fmtDur(voiceLive[a.id])}}
{{statusText(a)}}
{{lineName(a.proxy_port)}}
{{a.owner||'未分组'}}
今日 {{a.total_sent}}/{{a.daily_limit}}
| 序号 | 档案ID | 手机号 | 备注 | 👤分组 | 状态 | 接码 | 代理 | 阶段 | 今日已发 | 操作 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{a.seq!=null?a.seq:a.id}} | {{a.tg_id||('TG'+a.id)}} | {{avTxt(a)}} | {{a.name||a.tg_name||a.phone}} {{a.name&&a.tg_name?a.tg_name:(a.device||'📱 未分配指纹')}} |
{{statusText(a)}}🎙{{fmtDur(voiceLive[a.id])}} {{a.status_msg}} |
{{a.sms_has?(a.sms_2fa_has?'📮🔑':'📮'):'—'}} | {{lineName(a.proxy_port)}}⚠️直连!
{{a.last_out_ip||(a.proxy_port?'':'未检测')}} |
{{a.total_sent}}/{{a.daily_limit}} | ||||
|
{{a.login_step=='2fa_wait'?'两步验证密码':'短信验证码'}}({{a.phone}}):
{{a.status_msg}}
|
|||||||||||
| 还没有号码, 先添加 | |||||||||||
📁 账号分组管理 号池/群管理/客服/任务 都按这个分组区分显示
每号尾部[移→]可单移 · 或点每行前☑勾选多号批量移
已选 {{grpSel.length}} 个号
移到:
👤 {{grp.name==''?'未分组':grp.name}}({{grp.accs.length}}个号)
{{a.status=='online'?'🟢在线':(a.status=='banned'?'🔴封':(a.status=='error'?'⚠️异常':'⚪离线'))}}
(空组)
群管理 (手动分类 + 文件夹管理)
📁 文件夹链接导入(自动加入群并按文件夹分类)
❓ 怎么拿文件夹链接?
📁 文件夹: {{folderInfo.name}} · 共 {{folderInfo.total}} 个群
预览: {{folderInfo.sample.map(x=>x.title).join('、').slice(0,150)}}...
💡 Telegram App → 聊天文件夹(设置里) → 建文件夹装一批群 → 点文件夹右侧"···" → 分享文件夹链接 → 复制链接贴上面
👤 员工:
📱 账号:
{{gFilter.acc?('当前空间: '+accName(gFilter.acc)):'未选账号=全部并集(选具体账号后彻底隔离)'}}
📁 文件夹:
ⓘ 计数=不同群ID{{gSum.total_records&&gSum.total_records!=gSum.total?(' · 明细'+gSum.total_records+'条'):''}}
管理空间: {{accName(gFilter.acc)}} (只影响该账号, 别的号文件夹不受干扰)
➕ 新建文件夹:
📁{{f.name}}({{f.count}})
改名=整组群一起改 · 删除=群移回未分组 · 空文件夹也能建(先建好再往里面加群)
🔀 合并文件夹:
把
的群全部并入
合并后源文件夹自动删除 · 想合出新名字? 先[改名]再合并
🏷️ 分类:
☑️ 已选 {{selMoveIds.length}} 个群
发消息 (手动投放, 素材库一键选用)
① 账号:
(只列在线号, 下拉灰色=离线)
② 目标群:
📁按文件夹批量:
{{f.name}}({{f.count}})
🏷 按分类:
{{c}}
已选 {{selSendGroups.length}} 个
清空
{{g.title}}({{g.members}}人)
无群可选: 先在群管理同步/加入群
③ 内容:
📦 素材库快速选用:
{{t.name}}
(该分类暂无素材 → 去📦素材库添加)
防封: 群间随机间隔4~12秒 · 黑名单群自动跳过 · 一次最多200群
✍️ 文案变化(可选,防重):
默认不勾=原样发送 · 勾了=每条发送前随机变(素材里写 {称呼} {数字} 才替换)
{{l}}
素材库 (文案 + 账号头像/名称资料)
📤 上传头像:
jpg/png/webp · 建议正方形 · 分类与文案共用
{{av.category}}
还没有头像素材, 先上传
📦 素材文件夹:
✏️ 制作广告(单条):
归入:
提示: 先点上方文件夹进入, 自动归入该文件夹; 制作时也可下拉改归属
📤 批量上传(txt):
上传到分类:
📄 下载格式模板
📋 格式: 一行 = 一条广告文案; # 注释行/空行忽略 · 群发时默认按行随机循环, 不会一次性发同一句
📊 上传结果 · {{upResult.file}} → 分类[{{upResult.category}}]
✅ 入库 {{upResult.data.ok}} 条
⏭️ 跳过 {{upResult.data.skip}} 行(空行/注释)
✂️ {{upResult.data.truncated}} 行超长被截(第{{upResult.data.trunc_rows.join('、')}}行)
没有内容入库, 检查文件
已入库素材名: {{n}}…等{{upResult.data.ok}}条
☑️ 已选 {{selMatIds.length}} 条素材
| ID | 名称 | 分类 | 内容预览 | 使用 | 状态 | 操作 | |
|---|---|---|---|---|---|---|---|
| {{t.id}} | {{t.name}} | {{t.category}} | {{(t.content||'').slice(0,55)}} | {{t.use_count}} | {{t.is_active?'🟢':'⏸️'}} | ||
| {{tmplFilter?'该文件夹还没有素材: 上面制作/上传一条吧':'还没有素材'}} | |||||||
任务中心
👤 员工:
选员工后只看该员工账号的任务
新建群发
选择账号:
{{a.name||a.phone}}
📝 任务名称:
{{selAccs.length?('选'+selAccs.length+'个号'):'先勾选执行账号自动取名'}}
选择目标群:共 {{gAll.length}} 群 · 已选账号{{selAccs.length?'':'后下方只显示这些号的群'}} · 已选 {{selGroups.length}}
👆 先点上方账号标签勾选执行账号 → 下方只显示这几个号的群(其他号的文件夹/群不显示)
{{g.title}}({{g.members}}人){{accName(g.account_id)}}
所选账号暂无群 → 到[群管理]或手机加群后同步
发送模式:
📦 素材文件夹:
点文件夹只看该分类素材
素材分类快捷选(自动勾选+同名群联动):
勾选分类素材;同名文件夹群自动联动勾选(素材分类=群文件夹名即匹配)
勾选素材(可多选):已选 {{selTmpls.length}} 条 · 可先去[📦素材库]建分类素材
[{{t.category}}] {{t.name}}
{{taskMatCat?'该文件夹暂无素材 → 去[📦素材库]该分类添加':'素材库为空 → 先到 📦 素材库 页添加几条'}}
固定内容:
📂 按号文件夹/全群快捷选:
只列已选号的文件夹 · 没分文件夹的号 → 选"[全部] 该号"即勾它所有群
间隔 ~秒
每日上限 条
🔁 循环:
分钟一轮
共跑
轮(0=无限,可手动停)
⏰ 启动方式:
到点系统自动启动(单次, 不提醒) · 排程后可改期/取消
✍️ 文案变化(可选,防重):
素材里写 {称呼} {数字} 才会替换 · 勾了=每条发送前随机变(有的加有的不加)
💡 预计总时长自动计算: 群数×间隔。循环任务跑完一轮自动等下一轮, 任务记录里随时看实时日志和逐条明细
新建养号任务
选择账号:
{{a.name||a.phone}}
共 {{tasks.length}} 条任务记录
| ID | 标题 | 状态 | 进度 | 预计/已用时间 | 操作 | |
|---|---|---|---|---|---|---|
| {{t.id}} | {{t.title}} {{t.kind=='broadcast'?'群发':'养号'}} · 🔁循环{{t.run_count||0}}/{{t.repeat_times?t.repeat_times:'∞'}} | {{t.status=='scheduled'?'⏰已排程':statusText2(t)}} {{t.progress.wait_next}}
📅 {{fmtDT(t.scheduled_at).slice(5,16)}} 自动启动
|
{{taskProgTxt(t)}}
⏳ 正在发 → {{t.progress.current}} · ☕{{t.progress.wait_next}}
☕ {{t.progress.wait_next}} · 进度条到下一轮继续走
成功{{t.progress.done||0}} / 失败{{t.progress.fail||0}}
|
预计一轮{{fmtDur(t.progress.estimate_secs)}} · 剩{{fmtDur(t.progress.remaining_secs)}} · 已用{{fmtDur(t.progress.elapsed_secs)}} | ||
| 暂无任务 |
💬 炒群养号 (号池账号在指定群互动 · 一个号一个角色 · 只在自己号之间互动)
① 角色库 (每个角色一套话术; 互动时只从该角色话术里随机挑)
| 角色 | 话术条数 | 话术预览 | 操作 |
|---|---|---|---|
| {{r.name}} | {{r.count}} 条 | {{(r.scripts||'').split('\n').filter(x=>x.trim()).slice(0,2).join(' / ')||'(还没话术)'}} | |
| 还没有角色 → 点右上角[✨建默认角色] | |||
编辑角色「{{actEditing.name}}」的话术 每行一条, 支持 {号名} 变量
当前 {{actScripts.split('\n').filter(x=>x.trim()).length}} 条
② 号分配角色 (一个号一个角色; 禁言的号不参与炒群)
| 号 | 角色 | 状态 | 禁言 | |
|---|---|---|---|---|
| {{a.seq}} {{a.name||a.phone}} | {{a.status=='online'?'🟢在线':'⚪'+a.status}} |
③ 互动群 (号在里面炒群; 增删群时号自动进/退)
| 互动群 | 状态 | 操作 |
|---|---|---|
| {{g.title||g.chat}} {{g.chat.slice(0,40)}} | {{g.enabled?'🟢启用':'⚪停用'}} | |
| 还没有互动群 → 添加一个(或用[🆕新建养号群]) | ||
④ 炒群控制
{{actStatus.running?'🟢炒群运行中':'⚪已停止'}}
对话长度:
话题:
波次间隔(分):
~
每号每天上限:
发言时段:
-
(不填=全天可发)
⑤ 今日统计
今日炒群消息: {{actStatus.today_act||0}} 条
互动群: {{actStatus.groups||0}} 个
已分配角色的号: {{actByRole.T}} 个
角色分布: {{actByRole.txt}}
⑥ 监听群 (听真人怎么聊 → 提取话术 → 炒群用真话)
扫描结果(点群名加入监听)
+ {{g.title}}
({{g.members}}人 · 号{{g.account.slice(-4)}})
| 监听群 | 已收消息 | 操作 |
|---|---|---|
| {{g.title}} | {{g.msgs}} 条 | |
| 还没有监听群 → 输入 @用户名/链接 添加, 或点[🔍扫号所在群] | ||
⏰ 自动任务(不占资源, 凌晨低峰跑): 04:30 自动把真人话术分类导入角色 · 05:00 自动清理(每群留最新3000条消息/话术日志留30天)
⚡ 也可以随时点[立即提取话术]手动跑 (约1秒, 不会卡)
⚡ 也可以随时点[立即提取话术]手动跑 (约1秒, 不会卡)
📻 {{lsViewTitle}} 的真人消息 (共{{lsMsgTotal}}条)
[{{m.sender}}] {{m.text}}
📥 提取话术 → 导入角色「{{lsExRole}}」
导入到角色:
关键词:
条数上限:
· {{t}}
🔗 批量取码链接
为选中的号批量生成取码链接, 输出【号码----链接】格式, 可直接复制发客户
已选:{{accSel.length}} 个号
备注:
有效期:
✅ 已生成 {{grabBatchCount}} 条 (号码----链接)
客服对话
👤 员工:
{{c.peer_name||c.peer_id}}{{c.unread}}
{{accName(c.account_id)}} · {{c.last_msg}}
暂无私聊消息进来
{{curConv.peer_name||curConv.peer_id}} @{{curConv.peer_username||'-'}}
{{(m.direction=='in'?(curConv.peer_name||'客').charAt(0):selfAvText(curConv.account_id))}}
暂无消息
← 选择左侧会话
运营中心
今天的整体情况; 下面每个数字都能点
{{nuKpi.groups||0}}
群组总数
{{nuKpi.active_groups||0}}
在用群组(有配额)
{{nuKpi.online||0}} / {{nuKpi.accounts||0}}
运营账号(在线/总)
{{nuKpi.today_msg||0}}
今日发言
{{nuKpi.tasks||0}}
任务总数
{{nuKpi.task_ok||0}}
成功任务
{{nuKpi.task_fail||0}}
失败/异常
好友池(可拉人群)
{{nuKpi.pool||0}}
池里人数
{{nuKpi.pool_ok||0}}
已是好友
{{nuKpi.pool_pulled||0}}
已拉过群
{{nuKpi.grp_groups||0}}
群分组数
去【🚀 任务中心】发起拉人; 池子在【👥 好友】(高级设置里)
群组排行(按成员数)
| 群组 | 成员 | 已拉 | 分组 |
|---|---|---|---|
| {{g.title}} | {{g.members}} | {{g.pulled}} | {{(g.grp_names||[]).join('、')||'—'}} |
| 暂无群数据 | |||
账号中心
所有运营号; 点一行看详情(基础信息/运行状态/运营数据/操作日志)
在线 {{(nuAccs||[]).filter(a=>a.status=='online').length}}
异常 {{(nuAccs||[]).filter(a=>a.status!='online').length}}
已勾 {{(nuAccPickIds||[]).length}}
护栏/新号保护自动生效
| 账号 | TG名称 | 状态 | 线路 | 分组 | 今日发言 | 今日加好友 | ||
|---|---|---|---|---|---|---|---|---|
| {{a.tg_name||a.first_name||'—'}} | {{a.status}} | {{a.line||'—'}} | {{(a.groups||[]).join('、')||'—'}} | {{a.today_msg||0}} | {{a.today_add||0}} | |||
| 正在读取… | ||||||||
账号详情 · {{nuAccDetail.tuo||('#'+nuAccDetail.id)}}
ID
#{{nuAccDetail.id}}
Username
{{nuAccDetail.username?('@'+nuAccDetail.username):'—'}}
TG名称
{{nuAccDetail.tg_name||nuAccDetail.first_name||'—'}}
手机号
{{nuAccDetail.phone}}
线路
{{nuAccDetail.line||'—'}}
分组
{{(nuAccDetail.groups||[]).join('、')||'—'}}
Online
{{nuAccDetail.status}}
Session
{{nuAccDetail.status=='online'?'正常':'需重置登录/验证码'}}
当前任务
{{nuAccDetail.task||'—'}}
今日发言
{{nuAccDetail.today_msg||0}}
今日加好友
{{nuAccDetail.today_add||0}}
最近活动
{{nuAccDetail.last_active||'—'}}
操作日志见【🚀 任务中心 → 操作台账】(可按号筛)
群组中心
我建的群/我管理的群; 群链接在这一列, 点一下能复制; 点行进详情
共 {{(nuGroups||[]).length}} 个
已勾 {{(nuGrpPickIds||[]).length}}
新建群去【🚀 任务中心→建群】
| 群名称 | 类型 | 群链接 | 成员 | 已拉 | 配额 | 分组 | ||
|---|---|---|---|---|---|---|---|---|
| {{g.title}} | {{g.kind||'—'}} | {{g.link}} 无链接记录 复制 | {{g.members}} | {{g.pulled}} | {{g.quota}} | {{(g.grp_names||[]).join('、')||'—'}} | ||
| 正在读取…(群多时稍等) | ||||||||
群组详情 · {{nuGrpDetail.title}}
名称
{{nuGrpDetail.title}}
类型
{{nuGrpDetail.kind||'未知'}}
Invite Link
TG ID
{{nuGrpDetail.chat}}
所属分组
{{(nuGrpDetail.grp_names||[]).join('、')||'—'}}
成员数量
{{nuGrpDetail.members}}
已拉人数
{{nuGrpDetail.pulled}} / 配额 {{nuGrpDetail.quota}}
启用
{{nuGrpDetail.enabled?'是':'否'}}
改群资料
在【🔧高级设置→群设置】里改名字/头像
拉人
在【🔧高级设置→拉人进群】里给这个群拉人
群配置中心
群运营规则: 触发条件 → 执行动作 → 开关 (我们已有的功能都在这)
| 规则/配置 | 触发条件 | 执行动作 | 状态 | |
|---|---|---|---|---|
| 新成员欢迎语(首条消息) | 加好友成功后 / 进群后 | 发送话术库里的消息 | {{(firstMsgList||[]).length?('已配置 '+(firstMsgList||[]).length+' 条'):'未配置'}} | |
| 炒群话术(托号话术) | 排班时间命中 | 按托号各自话术发送 | {{(tuoList||[]).length?((tuoList||[]).length+' 个托号有话说'):'未配置'}} | |
| 炒群排班(运营策略) | 日期+时段+波次间隔 | 自动发一波 | {{(scList||[]).length?((scList||[]).length+' 条排班'):'未配置'}} | |
| 群资料(名称/头像) | 你点执行 | 改群名/群头像 | 手动确认后执行 | |
| 每群拉人配额 | 拉人时 | 每个群最多拉几人 | {{(gListRaw||[]).length}} 个群可设 | |
| 风控护栏 | 每次动作前 | 超限跳过/连续失败熔断 | 已开启 |
内容中心
文案/图片集中放(不写死在程序里); 发布任务引用它们
话术 / 文案
{{(firstMsgList||[]).length}}
首条消息话术
{{(tuoList||[]).reduce((a,t)=>a+((t.script_count)||0),0)}}
托号话术条数
素材(头像/名称)
{{(mfolders||[]).length}}
素材分组
{{(avatarList||[]).length}}
头像素材
任务中心
所有动作(建群/拉人/加好友/下号/炒群)都在这看状态: 执行中 / 成功 / 失败 + 操作台账
⚡ 快速拉人(好友池 → 多个群)
① 人群分组:
可拉 {{(nuTaskPool||[]).length}} 人
② 群分组:
每群
人
已选群 {{(nuTaskGroups||[]).length}}
{{blk.title}} ←
{{mm.name||mm.username||mm.phone}}
⚠️ {{nuTaskPreview.warn}}
任务列表
| 时间 | 类型 | # | 标题 | 状态 |
|---|---|---|---|---|
| {{t.at}} | {{t.kind}} | {{t.id}} | {{t.title}} | {{t.status}} |
| 还没有任务 | ||||
操作台账(谁·何时·对谁·做了什么)
| 时间 | 类型 | 号 | 目标 | 结果 | 原因 |
|---|---|---|---|---|---|
| {{r.at}} | {{r.kind}} | {{r.account}} | {{r.target}} | {{r.status}} | {{r.reason}} |
| 暂无台账(做过的动作会自动记) | |||||
数据统计
用来看"哪个群值得继续投入"
{{nuKpi.groups||0}}
群组总数
{{nuKpi.active_groups||0}}
在用群组
{{nuKpi.pool_pulled||0}}
已拉过群的人
{{nuKpi.today_msg||0}}
今日发言
群组明细(按成员数)
| 群组 | 成员 | 配额 | 已拉 | 完成度 |
|---|---|---|---|---|
| {{g.title}} | {{g.members}} | {{g.quota}} | {{g.pulled}} | {{g.quota>0?Math.min(100,Math.round((g.pulled/g.quota)*100))+'%':'—'}} |
| 暂无数据 | ||||
高级设置
原来那套功能全收在这里, 用的时候点开
| 功能 | 说明 | |
|---|---|---|
| 🚀 拉群建群(全部页签) | 建群 / 拉人 / 号进群 / 通讯录 / 话术库 / 排班 / 群设置 / 日志 | |
| 👥 好友池 | 通讯录 / 导入号码 / 加好友 / 通讯录分组 | |
| 🧩 分组管理 + 📊 分组看板 | 号分组 / 群分组 / 人群 一套打通 | |
| 👤 账号 & 资料 | 统一账号表格 / 素材上传 / 资料分配 | |
| 🌐 号池与线路 | 上下线 / 换线路(老页面) | |
| 📜 日志与台账 | 任务日志 / 操作台账 | |
| 📦 素材库(老页面) | 素材分组 / 上传 / 头像名称素材管理 | |
| 💬 炒群养号(老页面) | 角色话术 / 炒群配对 / 日志 | |
| 📊 老总览 | 旧版首页(号码/会话/线路概览) |
全部按钮式 · 老功能不受影响
原有功能:
托号(在线号 = 一个"人设", 名字自由起)
一号一托 · 每个托有自己的话术 · 排班按托号来
| # | 头像 | 托名 | 绑定号 | TG名称(实时同步) | 状态 | 线路 | 话术 | 备注 | |
|---|---|---|---|---|---|---|---|---|---|
| {{t.id}} | {{t.label}} | {{t.phone}} | {{t.tg_name || tuoNick(t.account_id) || '(未同步)'}} | {{t.status}} | {{t.line}} | {{t.script_count}} 条 | {{t.note}} | 编辑 删 | |
| 还没有托号, 下面新建一个 | |||||||||
{{tuoForm.id?'✏️ 编辑托号 #'+tuoForm.id:'➕ 新建托号'}}
这个托的话术(一行一条, 可粘贴/上传)
⚠️ 批量设置托号的 TG 头像 / 名称(手动确认后才执行)
按你的规矩: 号资料只在你点按钮并二次确认后才改, 系统永不自动改号
选托号
🧹 残留清理(已删号的会话文件等)
删号时后台会自动清理; 这里可以手动看一遍并清掉历史残留(只移到备份目录, 不硬删)
残留 {{cleanInfo.orphan_count}} 个 / {{cleanInfo.orphan_size_mb}}MB · 属于现有号的文件 {{cleanInfo.kept_count}} 个
让在线号进群(一个号可进多个群)
私密群会自动用"已在群里的号"导出邀请链接, 其余号用链接进(不用你手动发链接)
选号
选群(可多选)
已选 {{(jAcc||[]).length}} 号 × {{(jGroups||[]).length}} 群
选要设置的群
群名称 / 描述 / 头像
欢迎消息(新成员)
发几条
管理员
群权限(勾选 = 禁止)
🤖 bot(先留位置, 后期你上传)
已存: {{(botList||[]).map(b=>b.name).join('、')||'无'}}
📋 操作台账
共 {{(lgStat.total||0)}}
成功 {{(lgStat.ok||0)}}
失败 {{(lgStat.fail||0)}}
跳过 {{(lgStat.skip||0)}}
| 时间 | 类型 | 号 | 目标 | 结果 | 原因 |
|---|---|---|---|---|---|
| {{r.at}} | {{r.kind}} | {{r.account}} | {{(r.target||'').slice(0,28)}} | {{r.status}} | {{(r.reason||'').slice(0,40)}} |
| 还没有台账记录 | |||||
📜 操作日志
任务结果 + 号动作(建群/拉人/加好友/群资料/进群…)
| 时间 | 类型 | # | 标题 | 状态 |
|---|---|---|---|---|
| {{t.at}} | {{t.kind}} | {{t.id}} | {{t.title}} | {{t.status}} |
| 时间 | 号 | 动作 | 目标 |
|---|---|---|---|
| {{a.at}} | {{a.phone}} | {{a.action}} | {{a.target}} |
🧩 号分组
自建分组, 一个号可属于多个组; 分组还决定"用哪批素材改头像/名称"
| # | 分组名 | 号数 | 对应素材分组 | 备注 | 成员 | |
|---|---|---|---|---|---|---|
| {{g.id}} | {{g.name}} | {{g.count}} | {{g.material_category||'—'}} | {{g.note}} | {{(g.account_ids||[]).map(id=>accName(id)).join('、')}} | 编辑 删 |
| 还没有分组, 上面新建一个 | ||||||
把号放进分组
已选 {{(agPickAccs||[]).length}} 号
| 头像 | 托名 | 手机 | TG名称 | 状态 | 线路 | 所属分组 | |
|---|---|---|---|---|---|---|---|
| {{a.tuo||'—'}} | {{a.phone}} | {{a.tg_name||'—'}} | {{a.status}} | {{a.line}} | {{(a.group_names||[]).join('、')||'—'}} |
🏘 群分组
| # | 分组名 | 群数 | 备注 | 成员 | |
|---|---|---|---|---|---|
| {{g.id}} | {{g.name}} | {{g.count}} | {{g.note}} | {{(g.group_row_ids||[]).slice(0,4).map(id=>grpName(id)).join('、')}} … | 编辑 删 |
| 还没有群分组 | |||||
📊 分组看板(一个分组同时管 号+群+人群)
同名分组自动打通: 号分组「B组」+ 群分组「B组」+ 通讯录「B组」= 一回事
| 分组名 | 号 | 群 | 可拉人群 | 状态 | |
|---|---|---|---|---|---|
| {{b.name}} | {{b.accounts}} | {{b.groups}} | {{b.people}} | 号分组✓ 群分组✓ 仅通讯录 | 去拉这个组的人 → |
| 还没有分组(在下面新建号分组/群分组, 或给通讯录打分组名) | |||||
🛡 风控护栏(保号用)
超限的自动跳过并排到明天; 连续失败会自动暂停任务
每号每天 拉人人
进群个
加好友人
发言条
建群个
改资料次
连续失败次自动暂停
新号保护小时
同群冷却分钟
(0 = 不限制)
说明: 护栏按"号 + 动作 + 当天"计数(台账里能查); 只影响新发起的任务, 不会打断正在跑的老任务
👤 账号列表(统一排版)
共 {{(accListAll||[]).length}} 个 · 显示 {{(pickList||[]).length}} 个 · 已勾 {{(accPick||[]).length}}
快捷:
批量改分组:
| 头像 | 托名 | 手机 | TG名称 | 状态 | 线路 | 所属分组 | 今日发言 | 今日加好友 | |
|---|---|---|---|---|---|---|---|---|---|
| {{a.tuo||'—'}} | {{a.phone}} | {{a.tg_name||'(未同步)'}} | {{a.status}} | {{a.line}} | {{(a.group_names||[]).join('、')||'—'}} | {{a.today_talk}} | {{a.today_add}} | ||
| 没有匹配的号 | |||||||||
📦 素材上传(先选好分组)
分组:
头像图片:
上传完点【🔄 刷新分组/素材】, 就能在下面"资料分配"里按图片选; 也可去【🧩 分组管理】把某个号分组对应到这个素材分组
🎭 资料分配(素材分组 → 号)
选一个【素材分组】→ 自动带出【对应号分组】的号 → 逐号配对(可手工改) → 预览 → 二次确认执行
| 号 | 头像(素材分组) | 名称(素材分组) |
|---|---|---|
| {{r.phone}} {{r.tuo}} |
|
|
| 先选素材分组 + 号分组, 再点「🔄 重新配对」 | ||
给 第{{paPickIdx+1}}行 选一张头像(点图即选, 再点关掉)
这个分组下还没有头像
提示: 素材库上传头像/名称时选好分组, 这里就能按组一键配对(前后对应); 执行前会再确认一次
👥 好友池
每个号的好友单独存本地 ✓ 能按号/分组筛选 ✓ 记住"谁已被拉过哪些群"✓
共 {{(frStat.total||0)}} 人
已是好友 {{(frStat.friends||0)}}
待加好友 {{(frStat.pending||0)}}
已拉过群 {{(frStat.pulled||0)}}
已勾 {{(frPick||[]).length}}
📇 通讯录分组(与平台分组同名即自动同步):
⬆ 导入号码到好友池
一行一个(或逗号分隔), 可带 +国家码; 也可填默认国家码
分配给:
说明: 导入的人先"待加好友", 之后点【➕ 加好友】把它们加成好友, 再在拉人页使用
➕ 给"待加好友"的人加好友
执行号:
会自动跳过"已是好友"的人; 慢慢加(自带间隔), 结果在【📜日志】里看
| 名称 | @用户名 | TG ID | 手机 | 来源号 | 来源号分组 | 通讯录分组 | 已是好友 | 已拉过群 | 更新 | |
|---|---|---|---|---|---|---|---|---|---|---|
| {{f.name||'(无名)'}} | {{f.username?('@'+f.username):'—'}} | {{f.tg_user_id||'—'}} | {{f.contact_no?(+f.contact_no):(f.phone||'—')}} | {{t}}— | {{f.owner_tuo||'—'}} {{f.owner_phone}} |
{{(f.owner_groups||[]).join('、')||'—'}} | {{f.is_friend?'是':'待加'}} | {{f.pulled_count}}个: {{(f.pulled_groups||[]).join('、')}}— | {{f.updated_at}} | |
| 池里还没人 —— 点【🔄 同步好友(在线号)】把号里的好友拉进来, 或用【⬆ 导入号码】 | ||||||||||
下一步(第4批): 勾选这些人 → 直接"自动分配到多个群"(每群几人) —— 已拉过的人会自动跳过, 不会重复拉
🏘 群管理
群分组已在【🧩 分组管理】里配好; 每群的「要拉几人/负责号组」在拉人页; 群名称·描述·头像在【🛠 群设置】
🚀 自动分配拉人(好友池 → 多个群)
选好友 → 选群 + 每群几人 → 预览分配表 → 执行;已拉过的人自动跳过
① 好友来源
符合条件 {{(auPool||[]).length}} 人
已勾 {{(auPick||[]).length}} 人
| 名称 | @用户名 | TG ID | 来源号 | 来源号分组 | 已拉过群 | |
|---|---|---|---|---|---|---|
| {{f.name||'(无名)'}} | {{f.username?('@'+f.username):'—'}} | {{f.tg_user_id||'—'}} | {{f.owner_tuo||'—'}} | {{(f.owner_groups||[]).join('、')||'—'}} | {{f.pulled_count}}个: {{(f.pulled_groups||[]).join('、')}}— | |
| 点【🔄 载入好友】把人拉出来(池子在【👥 好友】页, 可先在那里同步/导入/加好友) | ||||||
② 目标群 + 每群几人
每群拉
人
已选 {{(auGroups||[]).length}} 个群
| 群名 | 人数 | 已拉 | |
|---|---|---|---|
| {{g.title}} | {{g.members}} | {{g.pulled||0}} |
执行后: 这些人标记"已拉过群", 下次自动跳过 ✓
分配预览
— 池里 {{auPlan.pool_total}} 人 · 本次用 {{auPlan.used}} 人 · 剩 {{auPlan.leftover}} 人 · 每群 {{auPlan.per_group}} 人
⚠️ {{auPlan.warn}}
| 群 | 要拉进的人({{auPlan.per_group}}人/群) |
|---|---|
| {{blk.title}} | {{m.name||m.username||m.phone}} ←{{m.owner_tuo}} (群里没人可分 —— 好友不够, 减少群数或调小每群人数) |
其它入口
📋 我建好的群 + 邀请链接(点链接就能进群/发给别人)
只列"建群任务"建出来的群; 群名/类型/链接一目了然
| # | 群名 | 类型 | 邀请链接 | 用哪个号建的 |
|---|---|---|---|---|
| {{i+1}} | {{g.title}} | {{g.kind||'—'}} | {{g.link}} 无链接(建失败/未导出) 📄复制 | {{g.by}} ⚠{{g.err}} |
| 还没有建好的群 —— 下面填名字点「🏗 开始建群」, 建完这里就会出现链接 | ||||
怎么用(3步): ① 下面选号 → 填群名前缀和个数 → 选类型(要聊天就选私密/公开群组, 别选频道) → 点「🏗 开始建群」 →
② 建完在上面那张表拿邀请链接 → ③ 去「➕ 拉人进群」把好友拉进去
① 用哪些号建群
已选 {{(bAcc||[]).length}} 个
(读取中… 若一直为空, 点右上「刷新」)
② 群名怎么起
👉 前缀「越南群」+ 从 1 开始 + 位数 2 + 建 2 个 = 会建成 越南群01、越南群02
③ 群类型
群组成员都能发言; 只能靠邀请链接进, 搜不到
群组成员都能发言; 能被搜到, 需 @用户名
⚠️只有管理员能发, 成员只能看 —— 要大家聊天请选上面两个
建完归入群分组
(新群自动进这个群分组, 拉人页可一键选它)
建群间隔
秒(防限制)
预览: 将用 {{(bAcc||[]).length}} 个号 {{ bAcc.length?'':'(请先选号)' }} 创建
{{bPreviewNames}} {{bVis=='channel'?'(📢频道)':(bVis=='public'?'(公开群组 @'+ (bUser||'未填') +')':'(私密群组)')}},
每个间隔 {{bGap}} 秒, 预计约 {{Math.max(1,Math.ceil((bCount*bGap)/60))}} 分钟
① 往哪些群拉人
框里填「这个群要拉多少人」(0=不限)
群选择:
批量配额:
| 群名 | 人数 | 已拉 | 要拉几人 | 启用 | |
|---|---|---|---|---|---|
| {{g.title}} | {{g.members}} | {{g.pulled}} | |||
| (群库读取中… 或搜不到; 先「🔄 刷新群库」) | |||||
已勾选 {{(iGroups||[]).length}} 个群; 每个群只拉它自己的配额, 拉过的号码不重复
② 从哪里找人
📇 用通讯录(好友池)自动分配
池子在这里:【👥 好友】页(可同步/导入/加好友); 分配规则=按勾选的群依次填满, 每个群按它自己的配额
只取哪个账号分组的池:
按人群分组:
可拉 {{(iPool||[]).length}} 人 / 已勾群 {{(iGroups||[]).length}} 个
分配预览({{(iPoolPreview.blocked||[]).length?'部分群配额为0已跳过':''}})
| 群 | 要拉进的人 |
|---|---|
| {{blk.title}} 配额{{(blk.members||[]).length}} |
{{m.name||m.username||m.phone}} ←{{m.owner_tuo}} |
| 还没生成(先勾群 + 载入池子 + 点生成) | |
⚠️ {{iPoolPreview.warn}}
③ 用哪些号去拉
单个间隔
~
秒
每号每天上限
{{p.name||p.phone}} @{{p.username}} · {{p.source}}
(已在群里)
(没有可拉的人)
#{{t.id}} {{t.title||t.target_title}} — {{t.status}} {{t.progress}}
看明细
| 号码 | 昵称 | @ | 结果 | 错误 |
|---|---|---|---|---|
| {{m.phone}} | {{m.first_name}} | {{m.username}} | {{m.status}} | {{m.err}} |
统计: 全部{{ctStat.all||0}} · 已注册{{ctStat.registered||0}} · 未注册{{ctStat.unreg||0}} · 未反查{{ctStat.noimport||0}} · 已加好友{{ctStat.added||0}}
反查任务: #{{t.id}} {{t.status}} {{t.checked}}/{{t.total}} 注册{{t.registered}}
通讯录
| 号码 | TG | 昵称 | 注册 | 已加 | 归属号 | |
|---|---|---|---|---|---|---|
| {{c.phone}} | {{c.username?('@'+c.username):c.tg_user_id}} | {{c.first_name}} | {{c.registered==1?'已注册':(c.registered==2?'未注册':'未反查')}} | {{c.added?'✓':''}} | {{c.owner_account_id||''}} | 删 |
| 暂无数据 | ||||||
第 {{ctPage}} 页 / 共 {{ctTotal}} 条
🕒 排班
星期(留空=不限)
时段(可多个, 支持跨天)
一波几条
👉 每个托用它自己那段话术轮流发, 互不混淆(托1像老板、托2像客户…)
目标群
指定号(留空=按角色自动)
到点自动跑: 日期命中 + 时段命中 + 距上次超过波次间隔
{{scPreview.ok?('将用 '+ (scPreview.accounts||[]).join(', ') +' 在 '+(scPreview.groups||[]).join('、')+' 演一波, 话题='+scPreview.topic+', 一幕='+scPreview.rounds+'条'):('✗ '+scPreview.err)}}
调度控制
{{scStatus.running?'调度运行中':'调度已停止'}}
{{scStatus.now}} (周{{scStatus.weekday}}) 命中: {{(scStatus.hit||[]).map(h=>h.name).join('、')||'无'}}
| # | 名称 | 日期 | 星期 | 时段 | 角色 | 话题 | 一幕 | 波次 | 启用 | |
|---|---|---|---|---|---|---|---|---|---|---|
| {{s.id}} | {{s.name}} | {{s.date_mode=='always'?'长期':(s.date_mode=='range'?(s.date_from+'~'+s.date_to):s.dates)}} | {{s.weekday_mask||'不限'}} | {{s.windows||'全天'}} | {{s.role_name||'全部'}} | {{s.topic||'随机'}} | {{s.length}} | {{s.wave_min}}~{{s.wave_max}}分 | {{s.enabled?'✓':''}} | 编辑 删 |
| 还没有排班, 上面填好点「保存排班」 | ||||||||||
📊 实时看板 (近 {{mtDays}} 天)
总发言 {{mt.total||0}} 条 · 在线号 {{mt.online||0}} · {{mt.act_running?'炒群循环运行中':''}}
按号
#{{a.id}} {{a.phone}} — {{a.n}} 条 失败{{a.fail}}
(暂无)
按群
{{g.group}} — {{g.n}} 条
(暂无)
按小时
{{(mt.by_hour||[]).map(h=>h.hour).join(' ')}}
🔗 号 × 群 绑定
一个号可以进多个群发话术(绑定后可让不同群用不同号, 避免同批号在所有群露面)
当前绑定 {{(agList||[]).length}} 条
可在「拉人进群 / 通讯录」页选择用它作为加好友首条消息
| # | 库名 | 条数 | 启用 | 内容预览 | |
|---|---|---|---|---|---|
| {{p.id}} | {{p.name}} | {{p.count}} | {{p.enabled?'✓':''}} | {{(p.texts||'').split('\n').slice(0,3).join(' / ')}} | 删 |
| 还没有话术库, 上面填名称+内容保存即可 | |||||