将Slack的反应(表情符号)汇总到Mattermost并添加表情符号(反应)
Lastmod: 2025-01-21
Published: 2022-09-29

由于Slack的日志保存期限变为90天,Slack的日志逐渐不可见,
这是我在导入Mattermost时将自定义表情符号(反应)从Slack复制到Mattermost的笔记。

从Slack提取反应

一开始我打算使用Slack的API来提取,但使用Chrome扩展
Slack Custom Emoji ManagerSlack
下载变得非常简单,因此我使用这个进行下载。

安装Chrome扩展后,访问 https://<自己的Slack>.slack.com/emoji,
只需点击“下载所有表情符号”即可。

导入到Mattermost

使用curl批量通过API注册。
需要注意的是,Slack可以为反应名使用日语,但Mattermost无法注册多字节名称,因此在下载的反应中如果有日语名称,则需提前修正。

创建Bot以使用API并获取访问令牌

  1. 选择“集成功能”
  2. 选择“Bot账户”
  3. 点击“添加Bot账户”
  4. 创建账户

    角色选择“系统管理员”
  5. 令牌会被发放,请记住它

获取Bot的用户ID

在注册表情符号时需要指定机器人的用户ID,因此通过API获取机器人的用户ID。

$ TOKEN="刚刚获得的TOKEN"
$ CREATE_ID=$(curl -s -X GET -H "Authorization: Bearer ${TOKEN}" https://<Mattermost URL>/api/v4/users/me | jq -r .id)
$ echo $CREATE_ID

此时CREATE_ID变量中应该保存着创建的Bot的用户ID。

使用API令牌和BotID批量注册

将之前下载的表情符号放在目录中并执行。

$ TOKEN="刚刚获得的TOKEN"
$ CREATE_ID="刚刚获得的Bot的用户ID"
$ for file in $(ls)
do
    name=$(echo $file | cut -d . -f 1)

    curl -X POST -H "Authorization: Bearer ${TOKEN}" \
             -H "Content-Type: multipart/form-data" \
             -F "emoji={\"name\":\"${name}\",\"creator_id\":\"${CREATER_ID}\"}" -F "image=@./${file}" \
             https://<Mattermost URL>/api/v4/emoji
done

这样,文件名将被注册为表情符号。