@@ -73,8 +73,13 @@ class Response(NamedTuple):
7373 error : Optional [str ] = None
7474
7575
76+ @dataclass
77+ class DeletedFile :
78+ file_access : Literal ['file_not_found' ]
79+
7680@dataclass
7781class File :
82+ file_access : Literal ['visible' ]
7883 id : str
7984 url_private : str
8085 size : int
@@ -295,7 +300,7 @@ class HistoryBotMessage:
295300 bot_id : Optional [str ]
296301 username : str = 'bot'
297302 ts : float = 0
298- files : list [File ] = field (default_factory = list )
303+ files : list [File | DeletedFile ] = field (default_factory = list )
299304 thread_ts : Optional [str ] = None
300305 attachments : list [dict [str , Any ]] = field (default_factory = list )
301306
@@ -306,7 +311,7 @@ class HistoryMessage:
306311 user : str
307312 text : str
308313 ts : float
309- files : list [File ] = field (default_factory = list )
314+ files : list [File | DeletedFile ] = field (default_factory = list )
310315 thread_ts : Optional [str ] = None
311316
312317
@@ -520,7 +525,7 @@ async def _history(self) -> None:
520525 text = msg .text ,
521526 user = msg .user ,
522527 thread_ts = msg .thread_ts ,
523- files = msg .files ,
528+ files = [ i for i in msg .files if isinstance ( i , File )] ,
524529 ts = msg .ts ,
525530 ))
526531 elif isinstance (msg , HistoryBotMessage ):
@@ -820,7 +825,7 @@ async def get_thread(self, thread_ts: str, original_channel: str) -> MessageThre
820825 user = (await self .get_user (msg .user )).name if isinstance (msg , HistoryMessage ) else 'bot'
821826
822827 # Top message is a file
823- if msg .text == '' and msg .files :
828+ if msg .text == '' and msg .files and isinstance ( msg . files [ 0 ], File ) :
824829 f = msg .files [0 ]
825830 original_txt = f'{ f .title } { f .mimetype } { f .url_private } '
826831 else :
0 commit comments