TatsuyaShirakawa / msd-cli

CLI to migrate from Slack to Discord

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MSD CLI (α)

SlackからDiscordに移行するためのnode.js製のCLI
MSDは(Migrate from Slack to Discord)の略称

Warning
Privateチャンネルの移行は基本的にできません
このCLIはまだ十分なテストがされていません、動作の保証ができないので、利用する際は自己責任でお願いします
将来的にSlackやDiscordのAPIの仕様変更によって、使用できなくなる可能性があります

仕組みとしては、SlackのエクスポートデータをDiscordに出力できるデータに変換し、DiscordBot経由でチャンネルの作成とメッセージの出力を行うことで移行を実現します

ドキュメント

使用方法

初回設定を完了後、下記のコマンドを順次実行します

# 作業ディレクトリ初期化と移行用のSQLiteファイル作成を行う
npm run init

# チャンネルをデプロイする
npm run migrate:channel
npm run deploy:channel

# ユーザーの画像をホストするためのチャンネルをデプロイする
npm run migrate:user
npm run deploy:user

# メッセージをデプロイする
npm run migrate:message
npm run deploy:message

移行した内容を元に戻す場合は、下記のコマンドを実行することでリセットできます

npm run destroy
# or
npm run destroy:user
npm run destroy:message
npm run destroy:channel

移行完了後はBotは不要になるため、念のため削除します
Discordの仕様上、CDNにアップロードされたファイルを消えないようなので、ユーザーの画像をホストするためのチャンネル#msd-userは移行完了後に任意で削除してください

デプロイが失敗した場合は?

デプロイが完了したチャンネル、カテゴリ、メッセージにはそのDBのカラムにDeployIDが設定されています
デプロイが失敗した場合、既にDeployIDが設定されている(=デプロイされている)ものは、次回からデプロイ時のデータ取得の非対象になるため、重複せずに再デプロイできるようになっています

しかし、エラーがI/OエラーやDBやAPI関連のエラー以外の場合、
そもそもデプロイされたものが正常にDeployIDが設定されているのかどうかも怪しいため、
少し手間ではありますが、 一度destroyコマンドで消去して最初から再実行することをお勧めします

それでもエラーが出る場合は、issueで教えてください

主な既知の問題

移行速度の高速化とDBの変更

現在はDBにSQLiteを利用しているため、同時書き込みができない制限で、直列処理でチャンネルにメッセージのデプロイをしているため、移行速度が遅いです
同時書き込みができるDBに移行し、並列処理で複数のチャンネルに同時にメッセージのデプロイをできるようにしたいです

Embedの制限を超える文字数のメッセージへの対応

DiscordのEmbed(埋め込みメッセージ)の仕様上、1024文字より長いメッセージは送れない制限があります
現在は暫定対応として、メッセージを1024文字以内に丸めていますが、メッセージを分割するなどで送信できるように対応したいです

Discordの最大アップロードサイズを超えるファイルへの対応

Discordのアップロードファイルの制限値がサーバーブーストしても最大100MBなので、
現在最大アップロードサイズを超えるファイルはエクスポートデータのファイルURLを添付するだけになっているので、
最大アップロードサイズを超えるファイルがある場合は、警告を出力し、可能ならばオプションで別ストレージサービスへアップロードを可能にしたいです

License

MIT

About

CLI to migrate from Slack to Discord


Languages

Language:TypeScript 99.6%Language:Shell 0.4%