飞书CLI到底是个啥,能帮程序员干哪些活
飞书CLI到底是啥,能帮程序员干哪些活
我第一次接触飞书CLI,是团队从微信群迁移到飞书那阵子。群里集成机器人得天天手动点,麻烦得要命。后来听后端老哥说飞书有个CLI工具,能把通知、部署状态啥的直接推送,省事多了。我试了试,发现它不是个简单的命令行玩具,而是个能跟CI/CD流水线、监控系统、甚至企业内部工具深度绑定的接口。说白了,飞书CLI就是给你的终端配了个飞书机器人,能让你在命令行里直接发消息、查群信息、管理机器人,甚至部署一些自动化流程。
先说个最直接的用法:发消息。以前我写脚本想发个告警到飞书群,得去开放平台创建应用、配置Webhook、拼JSON。用了飞书CLI后,一行命令搞定:`lark send text "部署完成" --webhook-url=https://open.feishu.cn/open-apis/bot/v2/hook/xxx`。当然,得先装好CLI。安装不难,点本页下载按钮拿到对应系统的压缩包,解压后把二进制扔到`/usr/local/bin`就能用。Windows用户注意,得加到环境变量里,不然终端不认。第一次运行会让你登录,扫码授权后就能用`lark`命令了。
安装与基础配置:从下载到能用
安装这事儿,我记得踩过坑。官网上写得很简单,点本页下载按钮,拿到的压缩包通常有Linux、macOS、Windows三个版本。我用的macOS,解压后是个二进制文件,直接扔到`/usr/local/bin`,然后终端执行`lark version`看看能不能打印版本号。如果报错说找不到命令,检查下路径配没配对。Windows用户更简单,解压后点开exe文件,按提示走就行,但最好也把路径加到系统环境变量里,不然每次都得输全路径。
配置的核心是认证。安装好后,运行`lark auth`,它会弹出一个二维码,用飞书扫一下。这一步得注意的是,你必须用飞书账号登录,不能用微信或者手机号注册的临时账户。我有个同事用企业微信绑定的飞书,结果扫完码一直报错,最后重新注册了企业飞书才行。登录成功后,CLI会生成一个`~/.lark/config.json`文件,里头存着token和缓存信息。要是换了电脑,或者token过期了,再跑一次`lark auth`就行。
常见的问题除了路径不对,还有权限不足。Linux或macOS下如果提示Permission denied,记得加`chmod +x lark`。Windows用户有时被杀毒软件误报,这很正常,加到白名单就行。我建议先跑个`lark help`看看命令列表,熟悉下再上手。
发送消息:不仅仅是文本
飞书CLI最常用的就是发消息。你可以发纯文本、Markdown、甚至富文本卡片。举个例子,我写了个监控脚本,检测到服务器CPU超过90%,就用`lark send text "警告:服务器CPU超过90%"`推送到运维群。但文本太单调,后来改成Markdown格式:`lark send markdown "**紧急**:CPU使用率 **95%**,请立即处理"`,还能加颜色和链接。
如果想让消息更有效,可以发卡片消息。卡片消息支持按钮、图片、表格。比如发个部署状态卡片,写上“上线成功”,下面放个“查看日志”的按钮。命令长这样:`lark send card --json-card '{...}'`,里头得用JSON格式定义卡片内容,第一次写容易忘掉字段。我建议在飞书开放平台的卡片编辑器里先在线调好,然后粘贴JSON到命令行里。记得别把JSON写错,否则CLI会直接报错,连错误消息都看不懂。
还有个技巧:发消息时可以指定群聊。用`--chat-id`参数,后面跟群ID。群ID在哪看?在飞书桌面端打开群聊,右键群名点“复制群ID”就行。如果懒得查,也可以用`--chat-name`指定群名,但同名群多了会匹配错误,所以我一直用ID。另外,当心消息频率,飞书API有调用限制,比如每分钟最多20条。我试过脚本里循环发消息,结果被限流了,消息丢了一半。后来加了`sleep 3`间隔才解决。
群管理:查成员、拉机器人、改配置
CLI不光能发消息,还能管群。比如你想看看某个群有多少人,或者谁是新加的,用`lark group list --chat-id xxx`就能列出成员列表。参数`--page-size`能控制一次显示多少条,默认20,如果群大,调成100也行。结果会以表格形式打印在终端上,字段包括用户ID、名字、是否管理员。但要注意,这个命令只列出群成员,查不出来谁在潜水。
拉机器人入群也挺方便。如果你有自定义机器人,用`lark group add-bot --chat-id xxx --bot-id yyy`就能加进去,不用点界面里的“添加机器人”按钮。不过,机器人必须先被管理员授权,否则报错说“无权限”。我踩过这个坑,因为飞书的安全策略,不是谁都能拉机器人。如果你是群主,还得先给机器人配置权限,比如消息读取、成员管理之类的。
改群设置也支持。比如改群名:`lark group update --chat-id xxx --name "新名字"`。或者改群公告,用`--description`参数。但CLI只能改你管理的群,自己不是群主的话,命令会失败。我有个朋友用CLI试着改同事群的名字,结果被踢了,管理员还找他谈话。所以建议只在自动化脚本里用,别瞎玩。
文件操作:上传下载与数据管理
飞书CLI还能处理文件,这点我直到现在才觉得特有用。以前在飞书群里传个日志文件,得点附件、再下载,麻烦。现在用CLI直接上传:`lark file upload --file-type file --file-path /tmp/debug.log --chat-id xxx`。`file-type`参数支持file、image、audio几种类型,上传成功后返回一个fileKey,可以拿来发给别人。如果上传的是图片,注意飞书限制大小不超过20MB,太大得压缩。
下载文件也简单:`lark file download --file-key xxxx --output /tmp`。关键是得先知道fileKey。怎么查?如果是自己上传的,记录返回值。如果是别人发的,可以用`lark message list --chat-id xxx`查看最近消息,消息里带着附件信息,里面就有fileKey。但要注意,CLI只能下载有权限访问的群消息里的文件,如果你不是群成员,命令会报错。而且有些文件,比如PDF或zip,飞书会加加密,CLI直接下载下来可能打不开,得先解密。这个问题我还没完全搞懂,所以一般不用CLI下敏感文件。
自动化集成:CI/CD与定时任务
飞书CLI真正的威力在自动化。比如在GitLab CI/CD or GitHub Actions里,构建完代码后,用`lark send`推个通知。我写过一个最简单的GitLab CI配置:`after_script: - lark send text "构建成功"`,这样每次代码合并后,群里就会自动跳出一条消息。但注意,CI环境里得先安装CLI,并用token登录,不然报无认证。这涉及到环境变量,我一般把`LARK_CLI_TOKEN`和`LARK_CLI_USER`配在CI的settings里,CLI会自动读取。
定时任务也常见。比如每天早上8点,用`cron`或`systemd timer`跑个脚本,查下数据库备份状态,再用CLI通知。我写过个bash脚本:`if [ $? -eq 0 ]; then lark send text "备份成功"; else lark send text "备份失败"; fi`,配合crontab,省去了手动检查的功夫。但定时任务里环境变量记得配全,尤其PATH里要有CLI的路径,不然cron跑起来找不到命令。
还有一个高级用法:监听消息并自动回复。飞书CLI支持事件订阅,比如有人@机器人,你可以用`lark event listen`启动个监听器,把接收到的消息通过callback处理。我试过用Flask写个webhook接口,让CLI把消息转发到我自己的服务器。但这个功能对网络要求高,得用公网IP或内网穿透,否则消息收不到。而且配置略复杂,得在开放平台里设置事件订阅,再在本地跑CLI的监听命令。新手不建议一上来就玩这个,先专注发消息和查群。
注意事项:权限、限流与踩坑总结
用了这么久飞书CLI,我总结了几条心得。第一,权限问题。CLI几乎所有操作都需要用户或机器人有相应权限。比如`lark group list`需要群管理权限,`lark send`需要消息发送权限。这些权限在飞书开放平台的应用里配,别以为装了CLI就能无所不能。第二,限流。前面提到,发消息频率每分钟20条左右,如果超了,API会返回429状态码,CLI会直接报错但不会重试。我建议在脚本里加个指数退避逻辑,比如第一次失败等3秒、第二次等9秒。第三,环境变量。CI或定时任务里,一定要把token这些敏感信息放环境变量,别硬编码在脚本里,不然谁看到Git仓库就泄露了。
最后,别小看CLI的离线问题。飞书CLI重度依赖网络,如果你的服务器在内网且不能联网,CLI基本没用。这时候可以考虑用飞书的机器人API通过代理转发,但那就不是CLI的范畴了。另外,不同版本CLI的命令参数可能有小变,比如老版本用`lark msg`,新版本改成`lark send`。我建议升级前先看下官方文档,避免破环之前写好的脚本。