当前位置:   article > 正文

使用 Python 实现一个飞书/微信机器人,酷B了!

飞书文档 微信

d4b99f39c4e3d5d0336b3aa04afbf2c6.gif

  1. 微信改版,大家按上方操作星标下公众号,
  2. 不然后面推送大家可能会看不到

Python+飞书文档+机器人

哈喽,大家好,我是老表,学 Python 编程,找老表就对了。

我打算每日花1小时来写一篇文章(这篇文章实际耗时约24小时,从了解飞书机器人及相关接口、权限等开始,到调通记账助手),这一小时包括文章主题思考和实现,这是2024年更新的第12篇原创推文,看看能不能被官方推荐。(帮我点点赞哦~)

今天的主题是:使用Python联动飞书文档+机器人,实现一个专属的记账助手,这篇文章如果对你帮助极大,欢迎你分享给你的朋友、她、他,一起成长。

也欢迎大家留言,说说自己想看什么主题的Python文章,留言越具体,我写的越快,比如留言:我想看Python 自动操作Excel 相关文章。

如果你有具体的需求想通过使用Python实现自动化,那将更好,欢迎私聊我微信,一起交流探讨。

整合代码较多,源码已分享到 Github,项目地址可以点击下方公众号卡片,关注后回复:jsjz 获取,还可加入对应开源项目交流群,更好的学习交流。

58c70259ddbb13fcf2a4290d4acd5a2b.png
目录

3da21ae6323c26a784ce3deeb026ec6c.png

核心逻辑

1、通过关键词触发机器人记账,比如/fs 支出 微信 18 午饭,其中/fs 为触发关键词,后面的四项分别是:类型、支付渠道、金额、备注。

2、机器人识别到关键词,调用飞书记账功能函数,在该函数中对收到内容进行解析,并调用飞书文档接口,将内容写入飞书文档。

3、机器人判断飞书文档写入结果,写入成功则返回记录成功+文档地址;写入失败则返回记录失败+错误信息。

微信效果:f6fa159f55d2686505635b06db6802a8.png

飞书效果:e9bdd2f465dc08339d9cf4dfcc3945df.png

实践出真知

首先你需要登录飞书APP创建一个企业,这个过程很简单,手机下载飞书APP即可,我这里就不贴图了。

创建一个飞书应用

前提:你已经有了一个飞书帐号,并创建了一个个人企业。

飞书开放平台地址:https://open.feishu.cn/app/

访问 飞书开放平台,点击创建企业自建应用,输入应用相关信息即可。

60798be8e5e2f491c5c9733618efbb6b.png

创建成功后,在凭证与基础信息中可以看到应用的 App IDApp Secret,后面有用。

88f9cc1ef34eed98faf3470db0fe3729.png

点击左侧的添加应用能力,点击添加机器人功能。

435e7686a90a89b6b2e8788ea924cc62.png

没添加这个后面调用会出现如下错误:

70f856eae9d60c9001d2bf14372fbabf.png

点击左侧的权限管理,搜索电子表格,将相关的两个权限勾选开通。

4046ffa58bf77ae2e4b025a9e6c4cd6d.png

再搜索消息,开通发送接收消息权限,如下图:

d90464201818feb4cc2ada194e591ac9.png

再搜索获取用户 user ID,开通获取用户 user_id 权限,如下图:

556f7f29111f662989631b4fc6da6935.png

点击确定并前往创建应用版本

b2d781266ea6e867d109f06942db6674.png

在版本创建页面点击创建版本,然后根据提示输入版本号、更新说明、申请理由即可。

f337eefa150455ba31ab4fa3efd1d5a3.png

应用管理后台:https://exxxxxxxxz.feishu.cn/admin/appCenter/audit

exxxxxxxxz 改成自己的飞书主页域名前缀

访问上面应用管理后台地址,审核通过即可。

d9ecb7bf03de8cafd941d73c10e53338.png

对接飞书Excel

首先在飞书文档里创建一个 Excel,获取到Excel 链接,格式如下:

https://xxxxxx.feishu.cn/sheets/PQV*****************Uh?sheet=k****Y

其中PQV*****************Uh是spreadsheetToken,k****Y表格名称,用于锁定具体工作表。

本案例我们使用飞书追加数据接口:https://open.feishu.cn/document/server-docs/docs/sheets-v3/data-operation/append-data

1a2d32c11a71191676f9c65f75a2c48c.png

其中请求参数中 Authorization 获取方法如下:

  1. import requests
  2. import json
  3. def get_access_token():
  4.     url= "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/" 
  5.     # 应用凭证里的 app id 和 app secret  
  6.     post_data = {"app_id""cli_xxxxxxxx""app_secret""8xxxxxxxxxxxxxxxxxxk"}
  7.     r = requests.post(url, data=post_data)
  8.     access_token = r.json()["tenant_access_token"
  9.     return access_token
  10. header = {
  11.     "Content-Type""application/json; charset=utf-8"
  12.     "Authorization": f"Bearer {get_access_token()}"
  13.     }
请求测试
  1. # 记得换成自己的信息
  2. spreadsheetToken = "Pxxxxxxxxxxxxh"
  3. sheetId = "lxxxxV"
  4. data_raw = {
  5.   "valueRange": {
  6.     "range": f"{sheetId}!A1:E3",
  7.     "values": [
  8.       [
  9.         "2023/12/25",
  10.         "收入",
  11.         "微信",
  12.         "100",
  13.         "帐号 老表max"
  14.       ],
  15.       [
  16.         "2023/12/25",
  17.         "支出",
  18.         "支付宝",
  19.         "10",
  20.         "买东西 老表max"
  21.       ],
  22.       [
  23.         "2023/12/26",
  24.         "支出",
  25.         "支付宝",
  26.         "19.9",
  27.         "买东西 老表max"
  28.       ],
  29.     ]
  30.   }
  31. }
  32. url = f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{spreadsheetToken}/values_append"    
  33. r2 = requests.post(url, data=json.dumps(data_raw), headers=header)  #请求写入
  34. print( r2.json()["msg"])  #输出来判断写入是否成功

结果:

30dea464cb8cf05a33d553568e1df701.png

记账功能对接到飞书机器人

开通消息事件,接收消息

如果你想对接到飞书,得有一个云服务器用来接收用户发给飞书机器人的消息,并返回处理后的结果给飞书用户。

或者本地部署,然后内网穿透方法也行(不是长久之计)。

开通消息事件之前,需要先在服务器部署一个简单 web 服务用于接收消息,如下图,没啥特别要求,用 flask 快速写一个简单的代码,如下,

72c549354720a5afab8f7e0e951a761d.png
  1. from flask import Flask, request, jsonify
  2. app = Flask(__name__)
  3. @app.route('/func', methods=['POST'])
  4. def all_func():
  5.     try:
  6.         data = request.json  # 解析收到的 JSON 数据
  7.         print(data)
  8.         if data:
  9.             # 原样返回数据
  10.             return jsonify(data)
  11.         else:
  12.             return "Missing data"400
  13.     except Exception as e:
  14.         return str(e), 500
  15. if __name__ == '__main__':
  16.     app.run(debug=True, port=8003, host="0.0.0.0")

将上面代码写入服务器的 feishu.py 文件,然后运行python feishu.py 即可,

默认配置链接为:http://你的服务器公网IP:8003/func

然后在飞书管理后台,事件与回调页面配置验证接口是否OK,没问题点保存即可。

d7f7758bb09efd64629811394c3bdde0.png

然后点击添加事件,搜索接收消息,添加对应事件。

39917d812b1ff6d396af859a9724644c.png

点击开启获取用户发给机器人的单聊消息获取用户在群组中@机器人的消息权限。

4fc4f525eb9c7f3972230ff5e465d499.png

然后发布一个新版本。

这时我们从飞书发送消息给机器人,我们就可以在服务器获取到对应消息了。

飞书:9da02012d9f74bad8a04b84b92476e0d.png

服务器:6cad2f19800c435da04d3d29c33656c6.png

飞书主动回复用户实现

在前面实践部分,我们已经开通过了接收消息权限,这里直接上请求代码。

  1. '''
  2. 发送消息
  3. doc-link https://open.feishu.cn/document/server-docs/im-v1/message/create
  4. 接口限制:1000 次/分钟、50 次/秒
  5. receive_id_type值:
  6. - 私聊 user_id 
  7. - 群聊 chat_id
  8. msg_type: 
  9. doc-link https://open.feishu.cn/document/server-docs/im-v1/message-content-description/create_json
  10. '''
  11. def fs_send_msg(headers, post_data, receive_id_type):
  12.     url= f"https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type={receive_id_type}"  
  13.     r = requests.post(url, headers=headers, data=json.dumps(post_data))
  14.     result = r.json()
  15.     return result

测试请求:

  1. # 这里 user_id 可以怎么获取?
  2. # 在前面`消息事件`返回结果里面有,可以从里面获取
  3. receive_id_type = "user_id"
  4. receive_id = "xxxxx"
  5. msg_type = "text"
  6. content = "{\"text\": \"你好\"}"
  7. post_data = {
  8.       "receive_id": receive_id,
  9.       "msg_type": msg_type,
  10.       "content": content,
  11.       # "uuid""选填,每次调用前请更换,如a0d69e20-1dd1-458b-k525-dfeca4015204"
  12.     }
  13. result = fs_send_msg(headers, post_data, receive_id_type)

结果:6db31265a9ac826360d2bc4aeb4eff0c.png飞书:467c4c1dec63f4ad2dc7c35e3f3ae60c.png

整合代码实现自动记账

逻辑思路:847e61712c1d146bdff4f2b795965f3b.png

实现效果:9f322ef8349a0e179652b978670400d5.png

整合代码较多,源码已分享到 Github,项目地址可以点击下方公众号卡片,关注后回复:jsjz 获取,还可加入对应开源项目交流群,更好的学习交流。

c45f5fd00cd5bf1bb416ceaa57b4dfbe.png
对接到微信

通过前面操作,我们已经完成了Python代码和飞书的对接,将该功能加入到机器人就比较简单了。

2368d64580d5c9fd3444318b40456863.png

流程我已经在文章最开头分享了,大家可以根据需要去实践,至于如何开发机器人,大家可以github搜索下相关项目。后面也会将相关实现更新到开源项目中,欢迎关注支持。

哈喽,大家好,看到这里你真是太帅太美了,快快动手吧!

我是老表,学 Python 编程,找老表就对了。

老表写教程,就是要写的小白也能懂!有问题,快来评论区 up up up~ (打亢奋素式学习法)

如果觉得文章还不错,记得点赞转发收藏。

长按下方二维码加我微信,回复:

关键词:GPT 可免费体验GPT3.5和GPT4

关键词:Python 可进入Python学习交流群

关键词:副业 可进入副业群成长之路交流群

  1. 扫码加我微信,回复:GPT,
  2. 一起迎接AI时代
  3. 记得发送留言截图哦~

--END--

2小时快速掌握Python基础知识要点

  1. Python小知识 | 这些技能你不会?(一)
  2. Python小知识 | 这些技能你不会?(二)
  3. Python小知识 | 这些技能你不会?(三)
  4. Python小知识 | 这些技能你不会?(四)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/907590
推荐阅读
相关标签
  

闽ICP备14008679号