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

Pyrogram原生方法DeleteChatUser调用失败:AttributeError异常排查

解决Pyrogram调用DeleteChatUser时的AttributeError问题

问题情况

调用Pyrogram原生DeleteChatUser方法的代码:

usr = await app.resolve_peer(uid)
udata = InputUser(user_id=usr.user_id, access_hash=usr.access_hash)
r = await app.invoke(functions.messages.DeleteChatUser(chat_id=chan, user_id=udata))
print(r)

执行后抛出错误:

AttributeError: 'InputPeerChannel' object has no attribute 'to_bytes'

官方文档对该方法的定义:

class pyrogram.raw.functions.messages.DeleteChatUser

删除聊天中的用户并发送服务消息。

参数:
chat_id (int 64-bit) – 聊天ID。
user_id (InputUser) – 要删除的用户ID。
revoke_history (bool, 可选) – 删除该用户在此聊天中的全部历史消息。

问题原因及修复方案

1. chat_id参数类型错误

官方要求chat_id必须传入64位整数类型的聊天ID,但你传入的chan是InputPeerChannel对象,这是错误的。内部处理时会尝试对该对象调用to_bytes方法,而InputPeerChannel没有这个方法,因此触发报错。

2. 无需手动构造InputUser

app.resolve_peer(uid)如果传入的是合法用户ID,返回的本身就是InputUser类型的对象,直接将usr作为user_id参数传入即可,不需要手动实例化InputUser,手动构造反而容易出错。

修正后的代码

usr = await app.resolve_peer(uid)
# 确保chan_id是数值型的聊天ID:
# 如果chan是InputPeerChannel对象,取chan.id;如果是get_chat返回的对象,取chan.id
chan_id = chan.id
r = await app.invoke(functions.messages.DeleteChatUser(chat_id=chan_id, user_id=usr))
print(r)

内容的提问来源于stack exchange,提问作者user2956492

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:55:16