# Discord Slate 输入框 SOP

## 坑点
- execCommand('insertText') 改DOM但Slate内部状态不同步，后续Enter无效
- JS dispatchEvent (isTrusted=false) 被Slate忽略，按键操作必须CDP
- 绝不提取Discord token调API，会触发强制改密码

## 策略
- 选择器：`[role="textbox"][data-slate-editor="true"]`
- 输入：JS focus → CDP batch: Ctrl+A全选 + Backspace清空 + `Input.insertText` + Enter
- @mention：CDP `Input.insertText("@前缀")` 触发补全菜单 → JS click `#autocomplete-0` 选中 → CDP 追加文本 + Enter
- CDP batch JSON 直接传 web_execute_js script 参数，不包在JS代码里
- 发送成功标志：编辑器清空，placeholder重现

## 多编辑器场景
- Profile弹窗DM：点击用户头像弹出profile popout，底部有Slate编辑器（placeholder="Message @用户名"），同样需要CDP输入
- 页面可能同时存在多个Slate编辑器（如频道编辑器+弹窗DM编辑器），用`querySelectorAll`取第N个，或通过`aria-label`区分
- 弹窗内编辑器用`document.querySelector('[id^="popout_"]')`定位弹窗后再找内部编辑器不可靠（class变化），直接用`aria-label`匹配更稳
- focus目标编辑器后CDP输入会作用于当前focus的编辑器