如何解决EditBannedRequest不适用于私人频道中的漫游器
- 我尝试将 EditBannedRequest 方法用于私人频道, 当与客户端一起使用时,它工作正常,但是,当我使用机器人时 在通道的管理员权限下,我收到此错误 Main.telethon.errors.rpcerrorlist.BotMethodInvalidError:API 机器人用户的访问受到限制。您尝试调用的方法 无法作为漫游器执行(由CheckChatInviteRequest引起)
- 我处理了EditBannedRequest方法以直接接收有效 没有执行get_input_channel和get_input_entity的实体 方法...然后,我打印了为机器人生成的值并 与为客户生成的值进行比较,并且相等。
例如:
在Telegram方法中,我修改了 resolve 函数,以便:
.*
客户端生成的个值:
InputChannel(channel_id = XXXXXXX,access_hash = XXXXXX)
值: INVITE_ACCESS = [InputChannel(channel_id = XXXXXXX,access_hash = XXXXXXX)] USER = [InputUser(user_id = XXXXXXX,access_hash = -XXXXXXX)]
函数是这样的:
\n
最终错误是这样:
async def resolve(self,client,utils):
if isinstance(self.channel,InputChannel) and isinstance(self.user_id,InputUser):
self.channel = self.channel
self.user_id = self.user_id
else:
self.channel = utils.get_input_channel(await client.get_input_entity(self.channel))
self.user_id = utils.get_input_user(await client.get_input_entity(self.user_id))
有什么方法可以让漫游器在私有渠道中运行EditBannedRequest方法而不会出现问题?
解决方法
机器人可以很好地使用
EditBannedRequest
,但是机器人(如错误指示)不能使用CheckChatInviteRequest
。
access_hash
对于每个帐户都是唯一的(帐户A将看到具有哈希123的人C,帐户B将看到具有456的人C)。
您应该使用频道对等(或标记为ID),让Telethon知道您所指的是频道。此外,您应该使用client.edit_permissions
,它比原始API更好用:
chat = types.PeerChannel(123)
# chat = -100123 # equivalent,bot-API style channel ID
# Banning `user` from `chat` forever
await client.edit_permissions(chat,user,view_messages=False)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。