使用 Python 實現一個飛書/微信記賬機器人,酷B了!

Python+飛書文檔+機器人

今天的主題是:使用Python聯動飛書文檔+機器人,實現一個專屬的記賬助手,這篇文章如果對你幫助極大,歡迎你分享給你的朋友、她、他,一起成長。

也歡迎大家留言,說說自己想看什么主題的Python文章,留言越具體,我寫的越快,比如留言:我想看Python 自動操作Excel 相關文章。

如果你有具體的需求想通過使用Python實現自動化,那將更好,歡迎私聊我微信,一起交流探討。

  • 核心邏輯

  • 實踐出真知

    • 創建一個飛書應用
    • 對接飛書Excel
    • 記賬功能對接到飛書機器人

核心邏輯

1、通過關鍵詞觸發機器人記賬,比如/fs 支出 微信 18 午飯,其中/fs 為觸發關鍵詞,后面的四項分別是:類型、支付渠道、金額、備注。

2、機器人識別到關鍵詞,調用飛書記賬功能函數,在該函數中對收到內容進行解析,并調用飛書文檔接口,將內容寫入飛書文檔。

3、機器人判斷飛書文檔寫入結果,寫入成功則返回記錄成功+文檔地址;寫入失敗則返回記錄失敗+錯誤信息。

微信效果:

飛書效果:

實踐出真知

首先你需要登錄飛書APP創建一個企業,這個過程很簡單,手機下載飛書APP即可,我這里就不貼圖了。

創建一個飛書應用

前提:你已經有了一個飛書帳號,并創建了一個個人企業。

飛書開放平臺地址:open.feishu.cn/app/

訪問 飛書開放平臺,點擊創建企業自建應用,輸入應用相關信息即可。

創建成功后,在憑證與基礎信息中可以看到應用的 App IDApp Secret,后面有用。

點擊左側的添加應用能力,點擊添加機器人功能。

沒添加這個后面調用會出現如下錯誤:

點擊左側的權限管理,搜索電子表格,將相關的兩個權限勾選開通。

再搜索消息,開通發送接收消息權限,如下圖:

再搜索獲取用戶 user ID,開通獲取用戶 user_id 權限,如下圖:

點擊確定并前往創建應用版本

在版本創建頁面點擊創建版本,然后根據提示輸入版本號、更新說明、申請理由即可。

應用管理后臺:xxxxx.feishu.cn/admin/appCe…
xxxxx 改成自己的飛書主頁域名前綴

訪問上面應用管理后臺地址,審核通過即可。

對接飛書Excel

首先在飛書文檔里創建一個 Excel,獲取到Excel 鏈接,格式如下:

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

其中PQV*****************Uh是spreadsheetToken,k****Y表格名稱,用于鎖定具體工作表。

本案例我們使用飛書追加數據接口:open.feishu.cn/document/se…

其中請求參數中 Authorization 獲取方法如下:

import requests
import jsondef 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_tokenheader = {"Content-Type": "application/json; charset=utf-8", "Authorization": f"Bearer {get_access_token()}"}
請求測試
# 記得換成自己的信息
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 快速寫一個簡單的代碼,如下,

from flask import Flask, request, jsonifyapp = 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", 400except Exception as e:return str(e), 500if __name__ == '__main__':app.run(debug=True, port=8003, host="0.0.0.0")

將上面代碼寫入服務器的 feishu.py 文件,然后運行python feishu.py 即可,

默認配置鏈接為:http://你的服務器公網IP:8003/func

然后在飛書管理后臺,事件與回調頁面配置驗證接口是否OK,沒問題點保存即可。

然后點擊添加事件,搜索接收消息,添加對應事件。

點擊開啟獲取用戶發給機器人的單聊消息獲取用戶在群組中@機器人的消息權限。

然后發布一個新版本。

這時我們從飛書發送消息給機器人,我們就可以在服務器獲取到對應消息了。

飛書:

服務器:

飛書主動回復用戶實現

在前面實踐部分,我們已經開通過了接收消息權限,這里直接上請求代碼。

'''
發送消息
doc-link https://open.feishu.cn/document/server-docs/im-v1/message/create
接口限制:1000 次/分鐘、50 次/秒receive_id_type值:
- 私聊 user_id 
- 群聊 chat_idmsg_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

測試請求:

# 這里 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,項目地址:github.com/XksA-me/Sim…

對接到微信

通過前面操作,我們已經完成了Python代碼和飛書的對接,將該功能加入到機器人就比較簡單了。

流程我已經在文章最開頭分享了,大家可以根據需要去實踐,至于如何開發機器人,大家可以github搜索下相關項目。后面也會將相關實現更新到開源項目中,歡迎關注支持。

哈嘍,大家好,看到這里你真是太帥太美了,快快動手吧!

我是老表,學 Python 編程,找老表就對了。

老表寫教程,就是要寫的小白也能懂!有問題,快來評論區 up up up~ (打亢奮素式學習法)

本文轉自 https://juejin.cn/post/7340093152861159424,如有侵權,請聯系刪除。

如果你對Python感興趣,想要學習python,這里給大家分享一份Python全套學習資料,都是我自己學習時整理的,希望可以幫到你,一起加油!

😝有需要的小伙伴,可以V掃描下方二維碼免費領取🆓

?

1??零基礎入門

① 學習路線

對于從來沒有接觸過Python的同學,我們幫你準備了詳細的學習成長路線圖。可以說是最科學最系統的學習路線,你可以按照上面的知識點去找對應的學習資源,保證自己學得較為全面。
在這里插入圖片描述

② 路線對應學習視頻

還有很多適合0基礎入門的學習視頻,有了這些視頻,輕輕松松上手Python~
在這里插入圖片描述

③練習題

每節視頻課后,都有對應的練習題哦,可以檢驗學習成果哈哈!
在這里插入圖片描述

2??國內外Python書籍、文檔

① 文檔和書籍資料

在這里插入圖片描述

3??Python工具包+項目源碼合集

①Python工具包

學習Python常用的開發軟件都在這里了!每個都有詳細的安裝教程,保證你可以安裝成功哦!
在這里插入圖片描述

②Python實戰案例

光學理論是沒用的,要學會跟著一起敲代碼,動手實操,才能將自己的所學運用到實際當中去,這時候可以搞點實戰案例來學習。100+實戰案例源碼等你來拿!
在這里插入圖片描述

③Python小游戲源碼

如果覺得上面的實戰案例有點枯燥,可以試試自己用Python編寫小游戲,讓你的學習過程中增添一點趣味!
在這里插入圖片描述

4??Python面試題

我們學會了Python之后,有了技能就可以出去找工作啦!下面這些面試題是都來自阿里、騰訊、字節等一線互聯網大廠,并且有阿里大佬給出了權威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。
在這里插入圖片描述
在這里插入圖片描述

上述所有資料 ?? ,朋友們如果有需要的,可以掃描下方👇👇👇二維碼免費領取🆓
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/711286.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711286.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711286.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

代碼隨想錄第天 78.子集 90.子集II

LeetCode 78 子集 題目描述 給你一個整數數組 nums ,數組中的元素 互不相同 。返回該數組所有可能的子集(冪集)。 解集 不能 包含重復的子集。你可以按 任意順序 返回解集。 示例 1: 輸入:nums [1,2,3] 輸出&…

LeetCode 2581.統計可能的樹根數目:換根DP(樹形DP)

【LetMeFly】2581.統計可能的樹根數目:換根DP(樹形DP) 力扣題目鏈接:https://leetcode.cn/problems/count-number-of-possible-root-nodes/ Alice 有一棵 n 個節點的樹,節點編號為 0 到 n - 1 。樹用一個長度為 n - 1 的二維整數數組 edges…

debian/ubuntu 編譯安裝nginx php

debian/ubuntu 編譯安裝nginx php tar -zxvf nginx-1.9.9.tar.gz apt-get install libpcre3 libpcre3-dev ./configure --prefix/work/nginx-1.9.9 --with-pcre make make install service iptables stop #關閉防火墻, 可能不需要 修改nginx運行用戶為tboqi 抱著log目錄可…

【通信基礎知識】完整通信系統的流程圖及各模塊功能詳解

2024.2.29 抱歉最近在寫畢設大論文,因此沒有太多時間更新。然而,在寫論文的過程中,發現自己對通信系統的了解還不夠全明白,因此差了一些碩博論文總結了一個完整的通信系統流程圖。若有不對的地方請多多指正//部分內容有參考ChatGP…

【Elasticsearch管理】網絡配置

文章目錄 HTTP高級網絡設置高級TCP設置 TransportTCP傳輸概要文件Transport跟蹤 線程池fixed線程池fixed_auto_queue_sizescaling處理器設置 HTTP Elasticsearch只在默認情況下綁定到本地主機。對于運行本地開發服務器(如果在同一臺機器上啟動多個節點,甚至可以運行…

YOLOv7基礎 | 第2種方式:簡化網絡結構之yolov7.yaml(由104層簡化為30層)

前言:Hello大家好,我是小哥談。通過下載YOLOv7源碼可知,原始的yolov7.yaml文件是拆開寫的,比較混亂,也不好理解,并且為后續改進增添了很多困難。基于此種情況,筆者就給大家介紹一種將yolov7.yaml文件簡化的方法,將104層簡化為30層,并且參數量和計算量和原來是一致的,…

內存占用構造方法

#使用虛擬內存構造內存消耗 mkdir /tmp/memory mount -t tmpfs -o size5G tmpfs /tmp/memory dd if/dev/zero of/tmp/memory/block #釋放消耗的虛擬內存 rm -rf /tmp/memory/block umount /tmp/memory rmdir /tmp/memory #內存占用可直接在/dev/shm目錄下寫文件

《極客時間 - 左耳聽風》【文章筆記個人思考】

《極客時間 - 左耳聽風》原文鏈接:https://time.geekbang.org/column/intro/100002201?tabcatalog 10 | 如何成為一個大家愿意追隨的Leader? 10 | 如何成為一個大家愿意追隨的Leader? 這里的Leader是在技術上取得優勢,而不是行政…

2024年2月個人工作生活總結

本文為 2024年2月工作生活總結。 研發編碼 一些警告修正記錄 這個月修正了個人所負責的工程警告,這些警告其實是前人的代碼遺留的,我續寫的代碼,除printf函數的%d、%ld格式,都在寫的過程中改了。 下面記錄一些典型的警告及應對…

NLP(一)——概述

參考書: 《speech and language processing》《統計自然語言處理》 宗成慶 語言是思維的載體,自然語言處理相比其他信號較為特別 word2vec用到c語言 Question 預訓練語言模型和其他模型的區別? 預訓練模型是指在大規模數據上進行預訓練的模型,通常…

測試環境搭建整套大數據系統(七:集群搭建kafka(2.13)+flink(1.13.6)+dinky(0.6)+iceberg)

一:搭建kafka。 1. 三臺機器執行以下命令。 cd /opt wget wget https://dlcdn.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz tar zxvf kafka_2.13-3.6.1.tgz cd kafka_2.13-3.6.1/config vim server.properties修改以下倆內容 1.三臺機器分別給予各自的broker_id…

git操作學習記錄,簡單易上手

配置git 的賬戶郵箱 $ git config --global user.name "Firstname Lastname" $ git config --global user.email "your_emailexample.com"代碼回溯 git rest --hard [commit哈希值]git log命令只能查看以當前狀態為終點的歷史日志 git reflog命令&#x…

Python+neo4j構建豆瓣電影知識圖譜

文章目錄 數據來源數據整理導入節點和關系導入使用Subgraph批量導入節點和關系 多標簽實體和實體去重 數據來源 http://www.openkg.cn/dataset/douban-movie-kg 該網址擁有豐富的中文知識圖譜數據集,OpenKG(Open Knowledge Graph),可供研究人員使用研究…

【golang】25、圖片操作

用 “github.com/fogleman/gg” 可以畫線, 框 用 “github.com/disintegration/imaging” 可以變換顏色 一、渲染 1.1 框和字 import "github.com/fogleman/gg"func DrawRectangles(inPath string, cRects []ColorTextRect, fnImgNameChange FnImgNameChange) (st…

Python爬蟲——Urllib庫-3

目錄 ajax的get請求 獲取豆瓣電影第一頁的數據并保存到本地 獲取豆瓣電影前十頁的數據 ajax的post請求 總結 ajax的get請求 獲取豆瓣電影第一頁的數據并保存到本地 首先可以在瀏覽器找到發送數據的接口 那么我們的url就可以在header中找到了 再加上UA這個header 進行請…

Facebook的元宇宙實踐:數字化社交的新前景

近年來,元宇宙(Metaverse)這一概念備受矚目,被認為是數字化社交的未來趨勢之一。而在眾多科技巨頭中,Facebook(現更名為Meta)一直處于元宇宙發展的前沿。在本文中,我們將深入探討Fac…

萬字帶你走過數據庫的這激蕩的三年

本文收集了卡內基梅隆大學計算機科學系數據庫學副教授 Andy Pavlo 從 2021 到 2023 連續三年對數據庫領域的回顧,希望通過連續三年的回顧讓你對數據庫領域的技術發展有所了解。 關于 Andy Pavlo:卡內基梅隆大學計算機科學系數據庫學副教授,數…

vuepress項目側邊欄菜單配置使用

第一種菜單配置,自定義菜單名稱 {text: 菜單名稱,// 是否折疊collapsible: true,children: [{text: "自定義md菜單名稱",sidebarDepth: 2,link: "/xxx/aa.md",children: [],}],},第二種菜單配置 標題自動生成菜單,使用需要搭配sideb…

c語言求矩陣的局部極大值

給定M行N列的整數矩陣A,如果A的非邊界元素A[i][j]大于相鄰的上下左右4個元素,那么就稱元素A[i][j]是矩陣的局部極大值。本題要求給定矩陣的全部局部極大值及其所在的位置。 輸入格式: 輸入在第一行中給出矩陣A的行數M和列數N(3≤…

C語言創建結構體時 什么時候需要C++引用 什么情況下下不需要引用

在C語言中,結構體通常通過傳遞指針來實現對結構體的修改。當在函數中需要修改結構體的內容,并且希望這些修改在調用函數后仍然保持,可以考慮使用指針。引用是C中的一種特殊機制,用于更方便地傳遞參數,但在純粹的C語言中…