mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-02-13 18:11:06 +03:00
Support autocast to InputMessage
This commit is contained in:
parent
6ecef42ec7
commit
f31ca142a3
|
@ -204,9 +204,7 @@ class ChatAction(EventBuilder):
|
||||||
|
|
||||||
if isinstance(self._pinned_message, int) and self.input_chat:
|
if isinstance(self._pinned_message, int) and self.input_chat:
|
||||||
r = self._client(functions.channels.GetMessagesRequest(
|
r = self._client(functions.channels.GetMessagesRequest(
|
||||||
self._input_chat, [
|
self._input_chat, [self._pinned_message]
|
||||||
types.InputMessageID(self._pinned_message)
|
|
||||||
]
|
|
||||||
))
|
))
|
||||||
try:
|
try:
|
||||||
self._pinned_message = next(
|
self._pinned_message = next(
|
||||||
|
|
|
@ -118,15 +118,11 @@ class EventCommon(abc.ABC):
|
||||||
try:
|
try:
|
||||||
if isinstance(chat, types.InputPeerChannel):
|
if isinstance(chat, types.InputPeerChannel):
|
||||||
result = self._client(
|
result = self._client(
|
||||||
functions.channels.GetMessagesRequest(chat, [
|
functions.channels.GetMessagesRequest(chat, [msg_id])
|
||||||
types.InputMessageID(msg_id)
|
|
||||||
])
|
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
result = self._client(
|
result = self._client(
|
||||||
functions.messages.GetMessagesRequest([
|
functions.messages.GetMessagesRequest([msg_id])
|
||||||
types.InputMessageID(msg_id)
|
|
||||||
])
|
|
||||||
)
|
)
|
||||||
except RPCError:
|
except RPCError:
|
||||||
return None, None
|
return None, None
|
||||||
|
|
|
@ -101,16 +101,14 @@ class MessageRead(EventBuilder):
|
||||||
if not chat:
|
if not chat:
|
||||||
self._messages = []
|
self._messages = []
|
||||||
elif isinstance(chat, types.InputPeerChannel):
|
elif isinstance(chat, types.InputPeerChannel):
|
||||||
ids = [types.InputMessageID(x) for x in self._message_ids]
|
|
||||||
self._messages =\
|
self._messages =\
|
||||||
self._client(functions.channels.GetMessagesRequest(
|
self._client(functions.channels.GetMessagesRequest(
|
||||||
chat, ids
|
chat, self._message_ids
|
||||||
)).messages
|
)).messages
|
||||||
else:
|
else:
|
||||||
ids = [types.InputMessageID(x) for x in self._message_ids]
|
|
||||||
self._messages =\
|
self._messages =\
|
||||||
self._client(functions.messages.GetMessagesRequest(
|
self._client(functions.messages.GetMessagesRequest(
|
||||||
ids
|
self._message_ids
|
||||||
)).messages
|
)).messages
|
||||||
|
|
||||||
return self._messages
|
return self._messages
|
||||||
|
|
|
@ -297,13 +297,11 @@ class NewMessage(EventBuilder):
|
||||||
if self._reply_message is None:
|
if self._reply_message is None:
|
||||||
if isinstance(self.input_chat, types.InputPeerChannel):
|
if isinstance(self.input_chat, types.InputPeerChannel):
|
||||||
r = self._client(functions.channels.GetMessagesRequest(
|
r = self._client(functions.channels.GetMessagesRequest(
|
||||||
self.input_chat, [
|
self.input_chat, [self.message.reply_to_msg_id]
|
||||||
types.InputMessageID(self.message.reply_to_msg_id)
|
|
||||||
]
|
|
||||||
))
|
))
|
||||||
else:
|
else:
|
||||||
r = self._client(functions.messages.GetMessagesRequest(
|
r = self._client(functions.messages.GetMessagesRequest(
|
||||||
[types.InputMessageID(self.message.reply_to_msg_id)]
|
[self.message.reply_to_msg_id]
|
||||||
))
|
))
|
||||||
if not isinstance(r, types.messages.MessagesNotModified):
|
if not isinstance(r, types.messages.MessagesNotModified):
|
||||||
self._reply_message = r.messages[0]
|
self._reply_message = r.messages[0]
|
||||||
|
|
|
@ -25,7 +25,7 @@ from .tl.types import (
|
||||||
InputPhotoEmpty, FileLocation, ChatPhotoEmpty, UserProfilePhotoEmpty,
|
InputPhotoEmpty, FileLocation, ChatPhotoEmpty, UserProfilePhotoEmpty,
|
||||||
FileLocationUnavailable, InputMediaUploadedDocument, ChannelFull,
|
FileLocationUnavailable, InputMediaUploadedDocument, ChannelFull,
|
||||||
InputMediaUploadedPhoto, DocumentAttributeFilename, photos,
|
InputMediaUploadedPhoto, DocumentAttributeFilename, photos,
|
||||||
TopPeer, InputNotifyPeer
|
TopPeer, InputNotifyPeer, InputMessageID
|
||||||
)
|
)
|
||||||
from .tl.types.contacts import ResolvedPeer
|
from .tl.types.contacts import ResolvedPeer
|
||||||
|
|
||||||
|
@ -333,6 +333,21 @@ def get_input_media(media, is_photo=False):
|
||||||
_raise_cast_fail(media, 'InputMedia')
|
_raise_cast_fail(media, 'InputMedia')
|
||||||
|
|
||||||
|
|
||||||
|
def get_input_message(message):
|
||||||
|
"""Similar to :meth:`get_input_peer`, but for input messages."""
|
||||||
|
try:
|
||||||
|
if isinstance(message, int): # This case is really common too
|
||||||
|
return InputMessageID(message)
|
||||||
|
elif message.SUBCLASS_OF_ID == 0x54b6bcc5: # crc32(b'InputMessage'):
|
||||||
|
return message
|
||||||
|
elif message.SUBCLASS_OF_ID == 0x790009e3: # crc32(b'Message'):
|
||||||
|
return InputMessageID(message.id)
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
_raise_cast_fail(message, 'InputMedia')
|
||||||
|
|
||||||
|
|
||||||
def is_image(file):
|
def is_image(file):
|
||||||
"""
|
"""
|
||||||
Returns ``True`` if the file extension looks like an image file to Telegram.
|
Returns ``True`` if the file extension looks like an image file to Telegram.
|
||||||
|
|
|
@ -18,7 +18,8 @@ AUTO_CASTS = {
|
||||||
'InputChannel': 'utils.get_input_channel(client.get_input_entity({}))',
|
'InputChannel': 'utils.get_input_channel(client.get_input_entity({}))',
|
||||||
'InputUser': 'utils.get_input_user(client.get_input_entity({}))',
|
'InputUser': 'utils.get_input_user(client.get_input_entity({}))',
|
||||||
'InputMedia': 'utils.get_input_media({})',
|
'InputMedia': 'utils.get_input_media({})',
|
||||||
'InputPhoto': 'utils.get_input_photo({})'
|
'InputPhoto': 'utils.get_input_photo({})',
|
||||||
|
'InputMessage': 'utils.get_input_message({})'
|
||||||
}
|
}
|
||||||
|
|
||||||
BASE_TYPES = ('string', 'bytes', 'int', 'long', 'int128',
|
BASE_TYPES = ('string', 'bytes', 'int', 'long', 'int128',
|
||||||
|
|
Loading…
Reference in New Issue
Block a user