Skip to content
This repository was archived by the owner on Jun 18, 2024. It is now read-only.

Commit 8fb5924

Browse files
authored
Merge pull request #455 from ltworf/deleted_files
Do not crash when encountering deleted files
2 parents 84cf61d + d2ff329 commit 8fb5924

2 files changed

Lines changed: 10 additions & 4 deletions

File tree

CHANGELOG

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
1.29
2+
* Do not crash when encountering deleted files
23

34
1.28
45
* Do not crash on errors with last known timestamp

slack.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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
7781
class 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

Comments
 (0)