Skip to content

send_friend_request

向指定 QQ 主动提交好友申请,不是同意已收到的申请。

v2.0.6 新增

本接口在 v2.0.5 基线上新增,已发布的 v2.0.5 不提供此 action。测试环境已验证 Android 与 Linux 发起申请、跨节点双 WS 事件投递、真实 flag 同意及双方好友列表回读。Linux 使用当前会话的原生 UID 请求,不借用 Android 会话。当前 Linux 仍需框架已解析目标 UID;完全陌生且没有 UID 缓存的账号尚未完成验收,解析失败会明确报错。请勿自动重试或批量发送申请。

调用

js
const result = await api.forProtocol('android').send_friend_request(
  1060221, 2082083, '你好,请通过好友申请', '新朋友'
)

直接通过 WebSocket 调用时:

json
{
  "type": "action",
  "id": "friend-request-1",
  "action": "send_friend_request",
  "params": {
    "self_id": 1060221,
    "client_type": "android",
    "user_id": 2082083,
    "message": "你好,请通过好友申请",
    "remark": "新朋友"
  }
}

参数

以下为 SDK 的四个位置参数。WebSocket 请求另须在 params 内提供协议选择器 client_type:只接受 androidlinuxqq。SDK 默认明确发送 android,协议作用域会覆盖此值;它不是第五个位置参数。

参数类型必填说明
self_idnumber发起申请的在线账号
user_idnumber目标 QQ,不能与发起账号相同
messagestring申请说明,默认空字符串,UTF-8 最多 127 字节,不允许空字符
remarkstring好友备注,默认空字符串,UTF-8 最多 127 字节,不允许空字符

框架负责账号路由、签名和登录票据。调用方不传专属 Key、原生数据包或节点绑定字段。调用前需要已认证的服务连接及指定协议在线账号。

返回语义

字段说明
statussubmittedpolicy_rejectedrejectedverification_required
submitted仅表示原生接口是否确认提交;不表示已经成为好友或对方已收到事件
user_id目标 QQ
policy原生目标好友验证策略值
result原生业务结果码,不伪造成功
error_code原生业务错误码
message原生错误说明(可能为空)

示意成功数据:

json
{"status":"submitted","submitted":true,"user_id":2082083,"result":0,"error_code":0,"message":""}

verification_required 不会绕过验证码或账号风控,也不返回内部验证票据。参数错误、网络超时、签名失败、响应缺少业务结果或账号不匹配均返回 action 错误。超时代表结果未知,不能按发送失败立即重试。同一协议账号对同一目标在 30 秒内禁止重复提交。

当前支持原生无需验证(策略 0)及发送申请说明(策略 1)。问题答案验证或未知策略返回 verification_required,不会把申请说明当作问题答案提交。策略 0 的单向添加不保证接收方也建立关系,仍须回读确认。

策略 0 不产生待审批申请,不能等待 friend_request_received 或使用它不存在的 flag。原生 friend_added 按实际发生关系变化的账号分别投递;只有发起方新增关系时,不应要求接收方也收到新增事件。Android 和 Linux 发起的单向添加均已完成两个测试 QQ、双协议、跨节点和双 WS 实测;这不代表无缓存陌生账号、全部验证策略或全部事件已验收。

建议搭配

接收方订阅 friend_request_received 并声明 request 权限;只能使用真实事件携带的 flag 调用 处理好友申请。提交返回值不会生成 flag 或模拟接收事件。最后通过 获取好友列表 确认双方关系。可疑好友列表不是普通好友申请的完整列表。

调用前必读

协议与使用指南

Android + Linux QQ
适用协议
Android + Linux QQ
使用前准备
目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
选择协议
const targetApi = api.forProtocol('linux') // 或 'android'

原始 action 请求只使用附件约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。

建议搭配

常见失败原因

  • bot 不属于本节点
  • bot 未在线或账号状态不符合要求
  • client_type 无效或目标协议不支持该 action

注意事项

  • 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
  • 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。

萌卡NT 开发文档