You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MadelineProto调用getFullUser报内部对等数据库无对应peer错误如何修复

MadelineProto内部对等数据库运作逻辑

MadelineProto的内部peer数据库是本地维护的轻量缓存,存储所有当前账号接触过的用户、群组、频道的ID、访问哈希、类型映射关系,不会在实例启动时自动拉取全平台的对等数据:

  • 只有账号和对应对等端产生过消息交互、主动调用过解析接口、或者完成初始化登录拉取自身账号信息时,对应peer的记录才会被写入数据库
  • 传入未被收录的peer标识(包括无效用户名、未解析的纯数字ID、格式错误的peer参数)时,就会触发This peer is not present in the internal peer database报错,哪怕传入的是自身有效ID,只要没完成初始缓存、或者参数格式错误,一样会触发该报错。
可直接落地的修复方法
  • 拉取自身账号信息时优先使用内置标识:不需要提前做peer解析,直接传'self'作为id参数即可,这是官方推荐的自身信息调用方式,完全绕过peer缓存校验:
$selfInfo = $MadelineProto->users->getFullUser(['id' => 'self']);
  • 通过数字ID查询任意用户信息前,先主动触发peer解析:传入整数类型的目标ID(不要给数字加引号转成字符串,否则会被识别为用户名走无效解析逻辑)调用解析接口,等peer记录写入数据库后再执行查询:
// 传入整数类型的用户ID,自动完成peer信息拉取和本地缓存
$MadelineProto->getPwrChat(123456789);
// 解析完成后再调用查询接口即可正常返回结果
$userInfo = $MadelineProto->users->getFullUser(['id' => 123456789]);
  • 排查初始化流程问题:如果传'self'依然报错,检查是否在$MadelineProto->start()方法执行完成(即账号登录、初始信息同步全部完成)之前就调用了查询接口——未完成初始化时,自身账号的peer记录还没写入本地数据库,必然触发报错。

注意:不要使用user#xxxxxx这类自定义拼接的参数格式,MadelineProto不识别该格式的传值,会直接判定为无效peer。

内容的提问来源于stack exchange,提问作者Валерий А.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 00:36:15