仓库源文站点原文


layout: default

title: slack迁移discord

背景

之前加入的一个slack留学群组,历史记录里有很多宝贵的经验和文件,但slack免费版本只能显示最近三个月的消息。

最近社区有网友提到了这个事,建议群主把历史信息迁移到discord平台,群主也把历史记录down下来了,就万事俱备了。

恰好呢,我7.16日刚考完雅思,等结果的这两天可以把这事儿搞一下。

迁移

之前调研过,有slack迁移discord的工具特别好用,几乎无缝衔接,让我比较惊叹的是,一条消息下的回复列表,也能按照原格式迁移,几乎是无损迁移了,有了这个关键点就能很大程度保证迁移后的用户体验,其他问题感觉就不那么重要了。

具体步骤按照原作者给的github的操作路径执行就可以,比较费事的是,怎么给discord群组按照一定权限加机器人,我找了半天,竟然是要自己构造一个链接,机器人的权限信息就在链接的参数里,访问这个链接点击确认,就加进去了,这个用户体验着实有点别扭。也可能是我没找对姿势吧。

主要问题

真正迁移的过程中,遇到的大问题就一个,每次程序跑了3-5小时,就会因为网络原因(或者其他原因,我看着像网络问题)断开,而且,整个程序是先初始化了 discord 的 client,再一条条把消息通过bot发到discord群组,网络原因嘛,第一方案就是重试,但发现只重试 "发送消息" 这个小步骤没有用,还会持续报一样的错误,这里我确实找不到原因了。

所以呢,就只能在最外层加重试,也就是每次失败后,重新初始化client,这样能解决失败的问题,引入的新工作量是,需要加一个缓存(姑且叫他缓存),记录下上次失败时迁移到哪个位置了,这次从这个位置继续,避免重新迁移。

所以最终运行的代码版本,相比原版,就增加了外层重试和缓存的逻辑,算是成功迁移了。最终版的代码,提了PR,但感觉加的功能比较挫,大概率不会merge,留在那儿给后人提个醒也行。

效果

支持能的功能如下

详细记录

这个过程总计耗时2天,程序跑了24小时左右,详细的调试过程如下

7.17 14:00

跑一个小时失败,网络不稳定,换香港服务器重跑

7.17 21:00

跑3.5小时失败,网络不稳定,给await加了10次重试,每次5分钟

7.18 07:40

跑了4小时失败,迁了一万条消息,运行时间、成功迁移的数量跟上次差不多;问题是上次加的重试覆盖范围不足,扩大了范围,9:45 重跑;关注下内存和cpu

7.18 12:32

跑到 college 申请群 2024-03-18 出错,跟上次出错不是同一个位置,非内容问题

修改成出错超过10分钟就跳过,重新跑,12:32 开始跑

结论:1)内存稳定,不是内存问题 2)内容跟上次出错位置不同,非内容问题

7.18 15:13

跑到 社区主频道 2022-11-01 出错;

excption 代码逻辑出错导致,修改重跑, 15:36重跑

报错信息:疑似网络不稳定的问题

结论:重跑能成功,非内容问题

7.18 20:24

18:47 断了,跑了三个小时,未知原因,

7.19 8:38

添加外层重试和缓存,从主频道开始跑,跑了10个小时跑完

共72943条消息,社区主频道之后迁移失败消息有134条,一共预估300条左右,占比不到0.5%

致谢