使用EditBannedRequests时出现Telethon TypeError

问题描述

我想要做的是:一个用户通过邀请链接进入聊天,并在一个带有验证码的额外聊天中(与机器人聊天时为1n1)。我读了EditBannedRequest应该做我想要的,但是...我收到类型错误。 我的EditBannedRequest基本上是目前的示例 docs ... 如果有人可以提供帮助,那就太好了。

代码

async def handler(event):
    chat = await event.get_chat()
        
    if isinstance(event.action_message.action,types.MessageActionChatJoinedByLink):
        global acitve_invite_link
        chat_to_add = await bot.get_entity('TestyTesyChatty')
        result = await bot(ExportChatInviteRequest(chat_to_add.id))
        acitve_invite_link = False
        temp = await bot.get_entity(event.action_message.from_id)
        await bot(EditBannedRequest(
                chat,temp,ChatBannedRights(
                    until_date=None,view_messages=True
                )
        ))
...

错误

DEBUG:telethon.network.mtprotosender:Handling RPC result for message 6884206512220131084
DEBUG:telethon.network.mtprotosender:Handling ackNowledge for [6884206512264014408]
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 6884206512264014408
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 6884206512487415476 to GetUsersRequest (20efd6344c0)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 44 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 6884206512491466684 to MsgsAck (20efd634910)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 60 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 6884206512487415476
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
ERROR:telethon.client.updates:Unhandled exception on handler
Traceback (most recent call last):
  File "C:\Just\a\Path\Python\python38\site-packages\telethon\client\updates.py",line 443,in _dispatch_update
    await callback(event)
  File "C:\Just\another\path\telegram\enter_bot.py",line 191,in handler
    await bot(EditBannedRequest(
  File "C:\Just\a\Path\Python\python38\site-packages\telethon\client\users.py",line 30,in __call__  
    return await self._call(self._sender,request,ordered=ordered)
  File "C:\Just\a\Path\Python\python38\site-packages\telethon\client\users.py",line 37,in _call     
    await r.resolve(self,utils)
  File "C:\Just\a\Path\Python\python38\site-packages\telethon\tl\functions\channels.py",line 304,in 
resolve
    self.channel = utils.get_input_channel(await client.get_input_entity(self.channel))
  File "C:\Just\a\Path\Python\python38\site-packages\telethon\utils.py",line 263,in get_input_channel
    _raise_cast_fail(entity,'InputChannel')
  File "C:\Just\a\Path\Python\python38\site-packages\telethon\utils.py",line 138,in _raise_cast_fail
    raise TypeError('Cannot cast {} to any kind of {}.'.format(
TypeError: Cannot cast InputPeerChat to any kind of InputChannel.
INFO:telethon.network.mtprotosender:disconnecting from 149.154.167.51:443/TcpFull...
DEBUG:telethon.network.mtprotosender:Closing current connection...
DEBUG:telethon.network.mtprotosender:Cancelling 0 pending message(s)...
INFO:telethon.network.mtprotosender:disconnection from 149.154.167.51:443/TcpFull complete!
INFO:telethon.network.mtprotosender:Not disconnecting (already have no connection)

还有另一个问题:

  1. 用户应静音->按下按钮
  2. 直接发送问题->如果有误会被踢
  3. 如果正确,则应该保持静音

在此示例中如何工作3。我的意思是我定了一个时间

ChatBannedRights(
                    until_date=None,view_messages=True
                )
        ))

until_date表示用户在静音后再次得到声音吗?还是有可能永远做到这一点?

解决方法

电报仅在超组中不支持聊天中的EditBannedRights。转到正式的Telegram客户,并将新成员的历史记录更改为可见,然后您的代码即可使用。另外,您还应该将聊天更改为event.get_input_chat()