pR0Ps / slack-to-discord

Import a Slack export into a Discord server
https://pypi.org/project/slack-to-discord/
76 stars 11 forks source link

Don't fail if "mode" doesn't exist. #21

Closed maur1th closed 1 year ago

maur1th commented 1 year ago

Fixes KeyError: 'mode' errors happening on some channels.

I was getting errors like this:

2023-03-09 16:41:43 INFO     slack_to_discord.importer Processing channel '#bricole-picole'...
2023-03-09 16:41:43 CRITICAL slack_to_discord.importer Failed to finish import!
Traceback (most recent call last):
  File "/Users/tmaurin/.local/share/virtualenvs/slack-to-discord-WzhSpQSm/lib/python3.11/site-packages/slack_to_discord/importer.py", line 404, in on_ready
    await self._run_import(g)
  File "/Users/tmaurin/.local/share/virtualenvs/slack-to-discord-WzhSpQSm/lib/python3.11/site-packages/slack_to_discord/importer.py", line 472, in _run_import
    for msg in slack_channel_messages(self._data_dir, chan_name, self._users, emoji_map, pins):
  File "/Users/tmaurin/.local/share/virtualenvs/slack-to-discord-WzhSpQSm/lib/python3.11/site-packages/slack_to_discord/importer.py", line 228, in slack_channel_messages
    files = [x for x in files if x["mode"] != "tombstone" and x.get("url_private")]
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/tmaurin/.local/share/virtualenvs/slack-to-discord-WzhSpQSm/lib/python3.11/site-packages/slack_to_discord/importer.py", line 228, in <listcomp>
    files = [x for x in files if x["mode"] != "tombstone" and x.get("url_private")]
                                 ~^^^^^^^^
KeyError: 'mode'
2023-03-09 16:41:43 INFO     slack_to_discord.importer Bot logging out
Traceback (most recent call last):
  File "/Users/tmaurin/.local/share/virtualenvs/slack-to-discord-WzhSpQSm/bin/slack-to-discord", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/Users/tmaurin/.local/share/virtualenvs/slack-to-discord-WzhSpQSm/lib/python3.11/site-packages/slack_to_discord/__main__.py", line 27, in main
    run_import(
  File "/Users/tmaurin/.local/share/virtualenvs/slack-to-discord-WzhSpQSm/lib/python3.11/site-packages/slack_to_discord/importer.py", line 561, in run_import
    raise client._exception
  File "/Users/tmaurin/.local/share/virtualenvs/slack-to-discord-WzhSpQSm/lib/python3.11/site-packages/slack_to_discord/importer.py", line 404, in on_ready
    await self._run_import(g)
  File "/Users/tmaurin/.local/share/virtualenvs/slack-to-discord-WzhSpQSm/lib/python3.11/site-packages/slack_to_discord/importer.py", line 472, in _run_import
    for msg in slack_channel_messages(self._data_dir, chan_name, self._users, emoji_map, pins):
  File "/Users/tmaurin/.local/share/virtualenvs/slack-to-discord-WzhSpQSm/lib/python3.11/site-packages/slack_to_discord/importer.py", line 228, in slack_channel_messages
    files = [x for x in files if x["mode"] != "tombstone" and x.get("url_private")]
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/tmaurin/.local/share/virtualenvs/slack-to-discord-WzhSpQSm/lib/python3.11/site-packages/slack_to_discord/importer.py", line 228, in <listcomp>
    files = [x for x in files if x["mode"] != "tombstone" and x.get("url_private")]
                                 ~^^^^^^^^
KeyError: 'mode'
pR0Ps commented 1 year ago

Looks good, thanks!