前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用 Python 实现一个飞书/微信机器人,酷B了!

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

作者头像
老表
发布于 2024-03-05 10:03:54
发布于 2024-03-05 10:03:54
1.8K00
代码可运行
举报
运行总次数:0
代码可运行

Python+飞书文档+机器人

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

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

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

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

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

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

核心逻辑

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

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

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

微信效果:

飞书效果:

实践出真知

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

创建一个飞书应用

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

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

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

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

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

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

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

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

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

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

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

应用管理后台:https://exxxxxxxxz.feishu.cn/admin/appCenter/audit exxxxxxxxz 改成自己的飞书主页域名前缀

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

对接飞书Excel

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests
import json

def get_access_token():
    url= "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/" 
    # 应用凭证里的 app id 和 app secret  
    post_data = {"app_id": "cli_xxxxxxxx", "app_secret": "8xxxxxxxxxxxxxxxxxxk"}
    r = requests.post(url, data=post_data)
    access_token = r.json()["tenant_access_token"] 
    return access_token


header = {
    "Content-Type": "application/json; charset=utf-8", 
    "Authorization": f"Bearer {get_access_token()}"
    }
请求测试
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 记得换成自己的信息
spreadsheetToken = "Pxxxxxxxxxxxxh"
sheetId = "lxxxxV"
data_raw = {
  "valueRange": {
    "range": f"{sheetId}!A1:E3",
    "values": [
      [
        "2023/12/25",
        "收入",
        "微信",
        "100",
        "帐号 老表max"
      ],
      [
        "2023/12/25",
        "支出",
        "支付宝",
        "10",
        "买东西 老表max"
      ],
      [
        "2023/12/26",
        "支出",
        "支付宝",
        "19.9",
        "买东西 老表max"
      ],
    ]
  }
}
url = f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{spreadsheetToken}/values_append"    

r2 = requests.post(url, data=json.dumps(data_raw), headers=header)  #请求写入
print( r2.json()["msg"])  #输出来判断写入是否成功

结果:

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

开通消息事件,接收消息

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from flask import Flask, request, jsonify

app = Flask(__name__)


@app.route('/func', methods=['POST'])
def all_func():
    try:
        data = request.json  # 解析收到的 JSON 数据
        print(data)
        if data:
            # 原样返回数据
            return jsonify(data)
        else:
            return "Missing data", 400
    except Exception as e:
        return str(e), 500

if __name__ == '__main__':
    app.run(debug=True, port=8003, host="0.0.0.0")

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

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

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

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

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

然后发布一个新版本。

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

飞书:

服务器:

飞书主动回复用户实现

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'''
发送消息
doc-link https://open.feishu.cn/document/server-docs/im-v1/message/create
接口限制:1000/分钟、50/秒

receive_id_type值:
- 私聊 user_id 
- 群聊 chat_id

msg_type: 
doc-link https://open.feishu.cn/document/server-docs/im-v1/message-content-description/create_json

'''
def fs_send_msg(headers, post_data, receive_id_type):
    url= f"https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type={receive_id_type}"  
    r = requests.post(url, headers=headers, data=json.dumps(post_data))
    result = r.json()
    return result

测试请求:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 这里 user_id 可以怎么获取?
# 在前面`消息事件`返回结果里面有,可以从里面获取
receive_id_type = "user_id"
receive_id = "xxxxx"
msg_type = "text"
content = "{\"text\": \"你好\"}"

post_data = {
      "receive_id": receive_id,
      "msg_type": msg_type,
      "content": content,
      # "uuid": "选填,每次调用前请更换,如a0d69e20-1dd1-458b-k525-dfeca4015204"
    }
result = fs_send_msg(headers, post_data, receive_id_type)

结果:

飞书:

整合代码实现自动记账

逻辑思路:

实现效果:

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

对接到微信

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

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 简说Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
手把手教你,使用 Python 实现一个飞书/钉钉/微信机器人
1、通过关键词触发机器人记账,比如/fs 支出 微信 18 午饭,其中/fs 为触发关键词,后面的四项分别是:类型、支付渠道、金额、备注。
老表
2024/06/26
1.2K1
手把手教你,使用 Python 实现一个飞书/钉钉/微信机器人
基于 Python 后端的聊天软件机器人开发
其中 intents 表示监听事件,监听事件后通过实现 client 的 on_XX 方法可以获取并响应对应事件
dandelion1990
2024/03/11
6820
利用飞书BOT发送消息
标题:利用飞书BOT发送消息 作者:cuijianzhe 地址:https://solo.cjzshilong.cn/articles/2020/02/20/1582192919773.html
cuijianzhe
2022/06/14
1.2K0
利用飞书BOT发送消息
ZABBIX对接飞书实现报警通知
飞书提供了丰富的api来实现消息的通知,包括文本消息、图片消息、富文本消息,本次介绍使用飞书api发送文本消息,以下是实现思路 飞书API地址:https://open.feishu.cn/document/ukTMukTMukTM/uITNz4iM1MjLyUzM
没有故事的陈师傅
2020/02/26
4.8K7
ZABBIX对接飞书实现报警通知
使用 Serverless + 飞书打造你的个性化消息提醒系统
如果每件事都花时间去关注,那我们的时间必然会不够用,那有没有什么办法可以让这些消息集中起来并且及时推送呢?在这里我想向大家推荐一个解决方案,那就是使用 Serverless + 飞书打造属于自己的个性化消息提醒系统。
腾讯云serverless团队
2020/07/09
1.8K0
【玩转腾讯云】使用Serverless+飞书打造你的个性化消息提醒系统
如果每件事都花时间去关注,那我们的时间必然会不够用,那有没有什么办法可以让这些消息集中起来并且及时推送呢?在这里我想向大家推荐一个解决方案,那就是使用Serverless+飞书打造属于自己的个性化消息提醒系统。
用户1358150
2020/04/08
2.4K0
【玩转腾讯云】使用Serverless+飞书打造你的个性化消息提醒系统
对接飞书机器人
https://open.feishu.cn/document/ukTMukTMukTM/ucTM5YjL3ETO24yNxkjN
阿超
2022/08/21
5340
利用Python实现网易云音乐自动签到
标题:利用Python实现网易云音乐自动签到 作者:cuijianzhe 地址:https://solo.cjzshilong.cn/articles/2020/03/27/1585293177882.html
cuijianzhe
2022/06/14
1.2K0
利用Python实现网易云音乐自动签到
手把手教你在飞书中搭建机器人
大家好,我是潇潇雨声。飞书是一款在国内广受欢迎的企业内部管理和协同工具,同时也可以作为一个强大的个人知识管理工具。在本文中,我将帮助你迅速创建一个飞书对话机器人,并嵌入 chatGPT 的功能。这个机器人可以直接回答你的问题,也可以在群聊中被@,从而以 chatGPT 的方式提供回应。通过这样的操作,你的飞书机器人将迅速蜕变成一个支持 chatGPT 的智能助手。
用户10517932
2023/12/24
2K0
手把手教你在飞书中搭建机器人
干货|Webhook配置钉钉/飞书机器人告警
自 Zabbix 4.4.4 版本开始,Zabbix 的报警媒介类型加入了Webhook的支持。
Zabbix
2022/12/12
3.7K0
干货|Webhook配置钉钉/飞书机器人告警
Prometheus+Alertmanager进行飞书机器人webhook告警
Alertmanager 是 Prometheus 生态系统中的一个核心组件,负责处理由 Prometheus 服务器发送的告警通知。其主要功能包括告警的去重、分组、抑制、和路由到不同的通知接收端(如邮件、Slack、PagerDuty 等)。本文中,我们主要使用webhook用于接收Alertmanager发出的告警。
空洞的盒子
2024/07/16
2K1
飞书接收CloudWatch监控告警
基于aws Cloudwatch创建监控和告警后,可以将告警信息结合SNS主题和lambda函数发送通知到告警群,比如钉钉、企业微信、飞书等等。本篇我们就详细介绍下如何将Cloudwatch告警信息推送到告警群,以飞书为例。
叔牙
2023/06/21
1.6K0
飞书接收CloudWatch监控告警
Pyhton爬虫爬取天气情况以及情话
参考:https://blog.csdn.net/blowfire123/article/details/99173295
cuijianzhe
2022/06/14
3500
Pyhton爬虫爬取天气情况以及情话
Linux服务器登录成功提醒
将以下脚本保存为 /etc/profile.d/sent_login_hook.sh:
蛋黄
2024/11/22
1400
飞书 + Lua 实现企业级组织架构登录认证
飞书是字节跳动旗下一款企业级协同办公软件,本文将介绍如何基于飞书开放平台的身份验证能力,使用 Lua 实现企业级组织架构的登录认证网关。
K8sCat
2021/08/14
1.7K0
pytest + yaml 框架 -27.支持飞书机器人通知了!
v1.2.4 版本加入了飞书机器人通知执行报告。 (备注:从v1.2.0 以后新版本不再公开,新功能内部 VIP 学员可以使用,公开版本仅解决bug, 不提供新功能了。)
上海-悠悠
2023/08/22
3280
pytest + yaml 框架 -27.支持飞书机器人通知了!
prometheus实战之五:飞书通知告警
程序员欣宸
2023/05/27
4.1K0
prometheus实战之五:飞书通知告警
利用爬虫爬取我的solo博客
标题:利用爬虫爬取我的solo博客 作者:cuijianzhe 地址:https://solo.cjzshilong.cn/articles/2020/03/25/1585126708916.html
cuijianzhe
2022/06/14
3670
利用爬虫爬取我的solo博客
证书到期提醒竟然要收费?白嫖方法来了
众所周知,SSL证书是网站的一个保障。但对个人来说,有个免费的SSL证书用太方便了,还有现成工具可以自动续期。
大风写全栈
2024/11/21
1090
证书到期提醒竟然要收费?白嫖方法来了
内网神伤之消息通知,坑太多了
内网保障了安全,却也阻断了一些常用的告警消息推送(比如有个服务监控系统,需要推送告警消息到企业微信/飞书/钉钉机器人)。
大风写全栈
2024/12/19
980
内网神伤之消息通知,坑太多了
相关推荐
手把手教你,使用 Python 实现一个飞书/钉钉/微信机器人
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验