Skip to content

tainakanchu/mds-cli

Repository files navigation

MSD CLI

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

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

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

ドキュメント

使用方法

初回設定でBotなどの設定を完了後、下記のコマンドを順次実行して移行します

# 作業ディレクトリ初期化と移行用の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は不要になるため、念のため削除しておいた方が良いと思います
ユーザーの画像をホストするためのチャンネル#mds-userは、Discordの仕様上、CDNにアップロードされたファイルを消えないようなので、移行完了後は削除しても問題ありません

主な既知の問題

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

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

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

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published