使用 EditBannedRequests 时出现 Telethon TypeError
Telethon TypeError when using EditBannedRequests
我想做的是:用户通过邀请 link 进入聊天,并通过验证码进入额外的聊天(与机器人 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)
还有一个问题:
- 用户应该静音 -> 按一个按钮
- 在直接消息中提出问题 -> 如果错误被踢
- 如果正确,则应该取消静音
3. 在此示例中如何工作。我是说我把时间定在
ChatBannedRights(
until_date=None,
view_messages=True
)
))
until_date 这是否意味着用户再次静音?还是有可能永远这样做?
Telegram 不支持聊天中的 EditBannedRights,仅在超级组中。转到官方 Telegram 客户端并将新成员的历史记录更改为可见,然后您的代码将起作用。此外,您应该将聊天更改为 event.get_input_chat()
我想做的是:用户通过邀请 link 进入聊天,并通过验证码进入额外的聊天(与机器人 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)
还有一个问题:
- 用户应该静音 -> 按一个按钮
- 在直接消息中提出问题 -> 如果错误被踢
- 如果正确,则应该取消静音
3. 在此示例中如何工作。我是说我把时间定在
ChatBannedRights(
until_date=None,
view_messages=True
)
))
until_date 这是否意味着用户再次静音?还是有可能永远这样做?
Telegram 不支持聊天中的 EditBannedRights,仅在超级组中。转到官方 Telegram 客户端并将新成员的历史记录更改为可见,然后您的代码将起作用。此外,您应该将聊天更改为 event.get_input_chat()