Skip to content

Latest commit

 

History

History
90 lines (61 loc) · 8.54 KB

File metadata and controls

90 lines (61 loc) · 8.54 KB

仕様

Slackのデータの取得

下記の理由でメッセージの取得をSlackWebAPIからではなく、エクスポートデータから参照する仕様となっています

  • メッセージの総数によってはAPIを叩く回数が膨大になるため、できるだけAPIを叩く回数を減らして、移行時間を短縮するため
  • メッセージのデータ取得が途中で失敗した場合、一から取得し直さなければいけないAll or Nothingになる手間を無くすため
  • メッセージにユーザーID以外のユーザー情報が含まれないため、ユーザー情報を取得するためにAPIを叩く回数が増えるため ※1

※1 conversations.historyのAPIで取得できるメッセージは、ユーザー情報がユーザーIDのみのため、ユーザー名などのユーザー情報を取得するためにはusers.infoのAPIで取得する必要があります

SlackBotによるユーザー情報の取得

SlackBotはユーザー情報を取得し、メッセージの送信者情報を照合するために使用されています
これはエクスポートデータのusers.jsonのユーザのIDと、メッセージに記載されているユーザーのIDが異なり、
エクスポートデータだけではメッセージの送信者情報が照合できない可能性があるためです
特にBotは雛形となるアプリから生成されるため、ワークスペースにデプロイし直すとBotとしては別扱いとなるのか、新しいIDが振られるようになっています
未確認ですが、ユーザーも解除済みユーザーのアカウントを復活させると、IDが新しく振られる可能性があります

移行のオプション機能

移行のオプション機能として、下記の機能があります
メッセージファイルをビルドする前に、.dist/user.jsonファイルにDiscordのユーザーIDやユーザー名を手動で設定することで機能します

  • メッセージ内のメンションなどのユーザ名の変更
  • 移行したPrivateチャンネルへのユーザーの自動join

Privateチャンネルの移行

Privateチャンネルの移行は、全てのチャンネルのエクスポートデータから移行した場合のみ可能です
通常のエクスポートデータにはPrivateチャンネルは含まれていないため、Slackに全てのチャンネルと会話のデータエクスポートを申請する必要があります
申請を行うためには、申請者がSlackのビジネスプラス以上のプランかつワークスペースのオーナーの権限である必要があります
Slackは後からPrivate→Publicチャンネルに変更不可となっており、実質的にSlackのプロ以下のプランではPrivateチャンネルのエクスポートはできません

Discordにアップロードできる最大ファイルサイズを超えるSlackの添付ファイル

Slackにアップロードできる最大ファイルサイズは最大1GBですが、Discordにアップロードできる最大ファイルサイズは最大100MBで、サーバーブーストレベルに応じて変わります

そのため、Slackのメッセージの添付ファイルのサイズによっては、Discordにアップロードできないファイルが存在する可能性があります
回避策として、Discordのアップロードできる最大ファイルサイズを超える添付ファイルはファイルURLをメッセージに記載し、それ以外のファイルはDiscordにアップロードする仕様となっています

なお、Slackのワークスペースを削除した場合、添付ファイルのファイルURLにアクセスできなくなると思われますので、注意してください
メッセージファイルをビルド時もしくはメッセージをデプロイ時に、メッセージにDiscordにアップロードできる最大ファイルサイズを超える添付ファイルがある場合、下記の警告を出力します
より多くの添付ファイルを移行したい場合は、Discordにアップロードできる最大ファイルサイズの上限を解放するために、サーバーのブーストを検討してください

⚠️ Message has attachments that exceed Discord's maximum file size.
Attachments that exceed Discord's maximum file size will be appended to the message as a file URL.
Consider releasing the maximum file upload size limit with Discord's server boost.

アーカイブされたチャンネルの移行

Discordにはチャンネルのアーカイブ機能がないため、アーカイブされたチャンネルはARCHIVEカテゴリーにまとめ、それ以外のチャンネルはCHANNELカテゴリーにまとめる仕様となっています

メッセージの形式

Discordに表示されるメッセージの形式は下記のようになっています

<画像アイコン> <絵文字アイコン><ユーザー名(Bot名)> <メッセージの投稿時間(HH:mm)>
------------------------------------------------\n
<メッセージ内容>
<メッセージの投稿日時(YYYY/MM/DD HH:mm)>

絵文字アイコンは下記のようにメッセージを送信したSlackユーザーのユーザータイプを示します

絵文字アイコン ユーザータイプ
🟢 アクティブユーザー
🔵 解除済みユーザー
🤖 Bot

メッセージは見やすいように、Discordの埋め込みの機能を利用した形となっています
埋め込みのカラーはSlackのユーザーカラーを反映しています

添付ファイルの表示位置

Discordの埋め込み機能の仕様上、添付ファイルと埋め込みを同じメッセージで送信した場合、添付ファイルは埋め込みの上に表示されます
そのため添付ファイルは、埋め込みのメッセージの次に新しいメッセージとして送信することで、埋め込みのメッセージ下に表示させるようにしています

ユーザーの画像アイコンのアップロード

メッセージに含まれるユーザーの画像アイコンは、Discordにユーザー情報を出力するチャンネル#mds-userを作成し、そのチャンネルにユーザーの画像ファイルをアップロードしてURLを参照させる仕様になっています
Slackのユーザーの画像ファイルのURLを参照させるのではなく、Discordのチャンネルにユーザーの画像ファイルをホストさせることで、
Slackに依存せず、何らかの問題でSlackのユーザーの画像ファイルが参照できなくなった場合に、ユーザーの画像アイコンが表示されないなどの問題を回避するためです

チャンネル#mds-userは、Discordの仕様上、CDNにアップロードされたファイルを消えない)ようなので、移行完了後は削除しても問題ありません