当前位置: 首页 > news >正文

python调用飞书机器人发送文件

当前飞书webhook机器人还不支持发送文件类型的群消息,可以申请创建一个机器人应用来实现群发送文件消息。
在这里插入图片描述

在这里插入图片描述

创建机器人后,需要开通一系列权限,然后发布。由管理员审核通过后,才可使用。

包括如下的权限,可以获取群的chat_id。
在这里插入图片描述

开通权限发布应用后,可以取到两个重要的参数:

app_id
app_secret

使用两个参数可以生成密钥tenant_access_token,

headers = {‘Authorization’: f’Bearer {get_token()}', ## 获取tenant_access_token, 需要替换为实际的token

def get_token():# 获取tenant_access_token,供上传图片接口使用url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"headers = {"Content-Type": "application/json; charset=utf-8",}payload_data = {"app_id": "cli_xxx","app_secret": "xxx",}response = requests.post(url=url, data=json.dumps(payload_data), headers=headers).json()print(response)token = response['tenant_access_token']return token```

上传文件

def upload_file(file_path):try:file_name = file_path.split(',')[0]url = "https://open.feishu.cn/open-apis/im/v1/files"form = {'file_type': 'stream','file_name': file_name,'file': (file_name, open(file_path, 'rb'),'text/plain')}  # 需要替换具体的path  具体的格式参考  https://www.w3school.com.cn/media/media_mimeref.aspmulti_form = MultipartEncoder(form)headers = {'Authorization': f'Bearer {get_token()}',  ## 获取tenant_access_token, 需要替换为实际的token}headers['Content-Type'] = multi_form.content_typer = requests.request("POST", url, headers=headers, data=multi_form)print(r.json())# print(response.headers['X-Tt-Logid'])  # for debug or oncall# print(response.content)  # Print Responseif r.json().get("code") == 0 and r.json().get("msg") == "success":logger.info(f"上传文件到飞书成功,msg={r.json()},{file_path=}")media_id = r.json().get('data').get('file_key')return media_idelse:logger.warning(f"上传文件到飞书异常,{r.json()=},{file_path=}")# Press the green button in the gutter to run the script.except Exception as e:# logger.warning("上传文件到企业微信失败")print("上传文件到飞书失败")print(e)# logger.warning(e)pass

发送文件到群

def send_file(file_path=None, media_id=""):"""机器人应用上传文件"""if not media_id:media_id = upload_file(file_path=file_path)time.sleep(1)url = 'https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=chat_id'msgContent = {"file_key": media_id}form = {"content": json.dumps(msgContent),"msg_type": "file","receive_id": "oc_xxx"}headers = {'Authorization': 'Bearer ' + get_token()}response = requests.post(url=url, data=json.dumps(form), headers=headers)print(response.json())

获取群的chat_id

def get_qun_list():url = 'https://open.feishu.cn/open-apis/im/v1/chats'headers = {'Authorization': 'Bearer ' + get_token()}response = requests.get(url=url, headers=headers)print(response.json())return response.json()['data']['items']def get_ _by_name(qun_name):items = get_qun_list()for i in items:if i.get('name') == str(qun_name):print(i.get('chat_id'))return i.get('chat_id')

发送成功
在这里插入图片描述

相关文章:

python调用飞书机器人发送文件

当前飞书webhook机器人还不支持发送文件类型的群消息,可以申请创建一个机器人应用来实现群发送文件消息。 创建机器人后,需要开通一系列权限,然后发布。由管理员审核通过后,才可使用。 包括如下的权限,可以获取群的c…...

【产品应用】一体化伺服电机在焊接设备中的应用

随着制造业的不断发展,焊接设备在许多领域都得到了广泛应用,如汽车制造、机械加工、钢结构等领域。为了提高焊接设备的性能和效率,许多厂家开始采用一体化伺服电机作为焊接设备的主要驱动部件。本文将介绍一体化伺服电机在焊接设备中的应用背…...

uni+vue3+firstUI——组件弹框使用 v-model绑定参数

说明 将框架弹框组件 封装成子组件&#xff0c;在页面中引用该子组件&#xff0c;传参并控制弹框显示与隐藏。 子组件 <template><view><wh-modal :show"showPopup" :descr"descr" maskClosable click"onClick" :buttons"…...

【电路笔记】-正弦波形

正弦波 文章目录 正弦波1、概述2、波形产生3、总结 在 19 世纪末的 10 年间&#xff0c;许多技术成就使得交流电的使用得以扩展&#xff0c;并克服了直流电向公众供电的局限性。 1882 年&#xff0c;法国发明了变压器&#xff0c;它简化了交流电的分配&#xff0c;正如我们将在…...

Failed to launch task: 文件”Setup”不存在 Mac安装Adobe软件报错解决方案

在安装 Adobe 软件时&#xff0c;软件提示 Failed to launch task: 文件”Setup”不存在 &#xff0c;这个时候怎么处理呢&#xff1f; 解决方法如下&#xff1a; 1、安装 AnitCC 或 或 Creative Cloud 环境&#xff0c;保证软件所需要的环境 2、如果安装后也不起作用&#x…...

什么是 DevOps

DevOps是一套融合软件开发&#xff08;Dev&#xff09;和 IT 运营&#xff08;Ops&#xff09;的实践&#xff0c;旨在缩短应用程序开发周期并确保以高软件质量持续交付&#xff0c;通过采用 DevOps 实践&#xff0c;您可以帮助组织更可靠、更快速、更高效地交付软件。 什么是…...

java修仙基石篇->instanceof子父类检查

instanceof检查子父类&#xff08;或者是否能被强转&#xff09; 作用1&#xff1a;检查某对象是否是某类的子类 如&#xff1a;儿子类继承了父亲类。 检查儿子类对象是否属于父亲类 作用2&#xff1a;检查两个对象是否可以强转 语法&#xff1a; 子类对象 instanceof 父…...

[笔记] ‘\0‘的含义:任何字符串后面都会有的结束符。

参考博客&#xff1a;C语言中 \0 代表什么 摘录&#xff1a; ‘\0’ 是字符串的结束符&#xff0c;任何字符串之后都会自动加上’\0’。如果字符串末尾少了‘\0’字符&#xff0c;则其在输出时可能会出现乱码问题。 字符串总是以“\0”作为串的结束符&#xff1b;因此当把一个…...

雪花算法:分布式ID生成的优雅解决方案(建议收藏)

在分布式系统中&#xff0c;唯一ID的生成和管理是一项重要而棘手的任务。雪花算法&#xff0c;由Twitter开源的一种分布式ID生成算法&#xff0c;为这个问题提供了一种优雅的解决方案。本文将详细介绍雪花算法的原理、设计和实现&#xff0c;并通过示例代码和图片帮助读者更好地…...

全国产EtherCAT运动控制边缘控制器(六):RtBasic文件下载与连续轨迹加工的Python+Qt开发

今天&#xff0c;正运动小助手给大家分享一下全国产EtherCAT运动控制边缘控制器ZMC432H如何使用PythonQT实现连续轨迹加工。 01 功能简介 全国产EtherCAT运动控制边缘控制器ZMC432H是正运动的一款软硬件全国产自主可控&#xff0c;运动控制接口兼容EtherCAT总线和脉冲型的独立…...

git代码行统计

本文介绍统计项目代码行的方式&#xff0c;包括使用git log统计、git ls-files统计和使用linux命令行方式统计。 一、使用git log统计 1.统计所有代码行数 当前代码都存放在git仓库下&#xff0c;当需进行代码行数统计时&#xff0c;让开发人员在代码路径下运行如下指令&…...

LEEDCODE 2235两整数相加

class Solution { public:int sum(int num1, int num2) {return (num1 num2);} };...

魔术般的速度,焕然一新的磁盘空间 - Magic Disk Cleaner for Mac 2023

在当今这个信息时代&#xff0c;我们的磁盘空间无时无刻不在被各种文件和数据所填满。无论是工作文件&#xff0c;还是日常生活的照片、视频&#xff0c;亦或是下载的各种应用程序&#xff0c;都在不断地蚕食着我们的磁盘空间。面对这种情况&#xff0c;一款高效、便捷的磁盘垃…...

项目切换多租户导致的数据库SQL执行异常

先贴异常日志 java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(D…...

安防视频监控平台EasyCVR服务器需要开启firewalld防火墙,该如何开放端口?

智能视频监控/视频云存储/集中存储/视频汇聚平台EasyCVR具备视频融合汇聚能力&#xff0c;作为安防视频监控综合管理平台&#xff0c;它支持多协议接入、多格式视频流分发&#xff0c;视频监控综合管理平台EasyCVR支持海量视频汇聚管理&#xff0c;可应用在多样化的场景上&…...

Ubuntu Desktop 20.04升级gcc-11

默认自带的gcc是9&#xff0c;需要升级到11 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update sudo apt install gcc-11 sudo apt install g11 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50 sudo update-alternatives -…...

网站如何改成HTTPS访问

在今天的互联网环境中&#xff0c;将网站更改成HTTPS访问已经成为了一种标准做法。HTTPS不仅有助于提高网站的安全性&#xff0c;还可以提高搜索引擎排名&#xff0c;并增强用户信任。因此&#xff0c;转换为HTTPS是一个重要的举措&#xff0c;无论您拥有个人博客、电子商务网站…...

LeetCode 996.正方形数组的数目

和上一道状压的区别在于我们要去重一下~ 思路都是和上一篇博客是一样的&#xff0c;感兴趣的同学可以看一下 const int N 15; int dp[1<<N][N]; int n; vector<int>nums1;bool check(int x){int tem sqrt(x);if(tem*temx)return 1;return 0; }int dfs(int u,in…...

vue3写nav滚动事件中悬停在顶部

1. 防抖类Animate, 使用requestAnimationFrame代替setTimeout 也可以使用节流函数, lodash有现成的防抖和节流方法 _.debounce防抖 _.throttle节流 export default class Animate {constructor() {this.timer null;}start (fn) > {if (!fn) {throw new Error(需要执行…...

关于qiling->UC_ERR_FETCH_UNMAPPED等执行EXE时内存错误的问题

该文章遇到的问题简述&#xff1a; 使用wsl虚拟机&#xff0c;正常走了qiling配置流程后无法使用qiling对样例之外的exe进行模拟&#xff0c;会在执行到dll时&#xff0c;在dll的代码中报出内存未分配等读写错误。系统&#xff1a;kali、ubuntu20、ubuntu22。 解决&#xff1…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;采用DevEco Studio实现&#xff0c;包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...

Redis上篇--知识点总结

Redis上篇–解析 本文大部分知识整理自网上&#xff0c;在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库&#xff0c;Redis 的键值对中的 key 就是字符串对象&#xff0c;而 val…...