Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >利用飞书BOT发送消息

利用飞书BOT发送消息

作者头像
cuijianzhe
发布于 2022-06-14 10:05:36
发布于 2022-06-14 10:05:36
1.3K00
代码可运行
举报
文章被收录于专栏:cuijianzhecuijianzhe
运行总次数:0
代码可运行

飞书开放平台

此文只是测试使用,后续可能对接应用平台。

自定义消息发送

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/python3
#######################################################
# This script is to send messages to Lijuan regularly #
# Date: 2020-2-17                                     #
# Author: cuijianzhe                                  #
# Email: 598941324@qq.com                             #
#######################################################
import requests,json,sys
mobiles=sys.argv[1]
messages=sys.argv[2]
def get_token():
    data = {"app_id":"cli_xxxxxxxxxxx9d","app_secret":"YJJxxxxxxxxxxxxxxxxxxxxxxxxxxxxYUi"}
    headers = {"Content-Type": "application/json"}
    url_token = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/"
    try:
        res = requests.post(url_token, json=data, headers=headers)
        if res.status_code == 200:
            token = (json.loads(res.text)).get('tenant_access_token')
            return token
    except:
        print('请求失败')

headers_group = {
    "Authorization" : "Bearer %s"%(get_token()),
    "Content-Type" : "application/json"
}

def getuserid():   #根据手机号get用户id
    userurl = "https://open.feishu.cn/open-apis/user/v1/batch_get_id?mobiles=%s"%mobiles
    res_data = requests.get(url=userurl, headers=headers_group)
    userid = json.loads(res_data.text)['data']['mobile_users'][mobiles][0]['user_id']
    return userid

def send_messages(userID):
    data1 = {
        "user_id": userID,
        "msg_type": "text",
        "content": {
            "text": "%s <at user_id=\"%s\">test</at>"%(messages,userID)
        }
    }
    url_mess = "https://open.feishu.cn/open-apis/message/v4/send/"
    res_mess = requests.post(url_mess,json=data1,headers=headers_group)
if __name__ == "__main__":
    token = get_token()
    user_ID = getuserid()
    send_messages(user_ID)
  • 实例演示:

随机发送文本消息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests,json,linecache,random
file = 'word'
def get_token():
    data = {"app_id":"cli_xxxxxxxxxxxxxxxd","app_secret":"YJJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxYUi"}
    headers = {"Content-Type": "application/json"}
    url_token = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/"
    try:
        res = requests.post(url_token, json=data, headers=headers)
        if res.status_code == 200:
            token = (json.loads(res.text)).get('tenant_access_token')
            return token
    except:
        print('请求失败')

headers_group = {
    "Authorization" : "Bearer %s"%(get_token()),
    "Content-Type" : "application/json"
}
def get_chatid():
    url_group = "https://open.feishu.cn/open-apis/chat/v4/list?"
    try:
        res_group = requests.get(url_group,headers=headers_group)
        if res_group.status_code == 200:
            chatid = ((json.loads(res_group.text)).get('data').get('groups'))[0].get('chat_id')
            return chatid
    except:
        print('请求失败')

def getuserid():   #根据手机号get用户id
    mobiles = "18600796142"  #测试号,可@所有人
    userurl = "https://open.feishu.cn/open-apis/user/v1/batch_get_id?mobiles=%s"%mobiles
    res_data = requests.get(url=userurl, headers=headers_group)
    userid = json.loads(res_data.text)['data']['mobile_users'][mobiles][0]['user_id']
    return userid
def send_messages(userID,chatID):
    with open(file, 'r', encoding='utf-8') as good:
        word = linecache.getline(file, random.randint(1, len(good.readlines()))).replace(',', ' ')
    data1 = {
        "chat_id": chatID,
        "user_id": userID,
        "msg_type": "text",
        "content": {
            "text": "%s <at user_id=\"%s\">love</at>"%(word,userID)
        }
    }
    url_mess = "https://open.feishu.cn/open-apis/message/v4/send/"
    res_mess = requests.post(url_mess,json=data1,headers=headers_group)

if __name__ == "__main__":
    token = get_token()
    chatid = get_chatid()
    user_ID = getuserid()
    send_messages(user_ID,chatid)

发送富文本消息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/env python3
########################################################
#  This script is to send emails to Lijuan regularly   #
#  Date: 2020-2-24                                     #
#  Author: cuijianzhe                                  #
#  Email: 598941324@qq.com                             #
########################################################

import requests
import json
import os
import random
import linecache
import logging
import datetime
logging.basicConfig(filename='/scripts/feishu/log', level=logging.DEBUG,
                    datefmt='%Y-%m-%d %H:%M:%S',
                    format='%(asctime)s - %(levelname)s - %(lineno)d - %(message)s')
logger = logging.getLogger(__name__)

def get_token():
    data = {"app_id":"cli_xxxxxxxxxxx","app_secret":"YJJ7xxxxxxxxxxxxxxxxxxxxYUi"}
    headers = {"Content-Type": "application/json"}
    url_token = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/"
    try:
        res = requests.post(url_token, json=data, headers=headers)
        if res.status_code == 200:
            token = (json.loads(res.text)).get('tenant_access_token')
            return token
    except:
        print('请求失败')
headers_group = {
    "Authorization" : "Bearer %s"%(get_token()),
    "Content-Type" : "application/json"
}

def getuserid(mobile):   #根据手机号get用户id
    userurl = "https://open.feishu.cn/open-apis/user/v1/batch_get_id?mobiles=%s"%mobile
    res_data = requests.get(url=userurl, headers=headers_group)
    userid = json.loads(res_data.text)['data']['mobile_users'][mobile][0]['user_id']
    return userid

def uploadimg():
    imgname = random.choice(os.listdir('/scripts/feishu/images'))
    # 上传图片接口,get image key
    with open("/scripts/feishu/images/%s"%imgname,'rb') as p:
        image = p.read()
    imgurl = "https://open.feishu.cn/open-apis/image/v4/put/"
    headers = {"Authorization" : "Bearer %s"%get_token()}
    files = {
        'image':image
    }
    imgdata = {
        "image_type": "message"
    }
    resp = requests.post(url=imgurl,headers=headers,files=files,data=imgdata)
    os.remove('/scripts/feishu/images/%s'%imgname)
    resp.raise_for_status()
    content = resp.json()
    return content['data']['image_key']

def sendmess(path,user_id,image_key=None):
    with open(path, encoding='utf-8') as yuju:
        qinghua = linecache.getline(path, random.randint(1, len(yuju.readlines()))).split('、')[1].strip().replace(' ','  ')
    message_url = "https://open.feishu.cn/open-apis/message/v4/send/"
    # 发送富文本消息
    data = {
        "user_id": user_id,
        "msg_type": "post",
        "content": {
            "post": {
                "zh_cn": {
                    "title": "表情包来了",
                    "content": [
                        [
                            {
                                "tag": "text",
                                "un_escape": True,
                                "text": "%s :"%qinghua
                            },
                            {
                                "tag": "at",
                                "user_id": user_id

                            }
                        ],
                        [
                            {
                                "tag": "img",
                                "image_key": image_key,
                                "width": 1080,
                                "height": 1080
                            }
                        ]
                    ]
                }
            }
        }
    }
    request = requests.post(url=message_url, headers=headers_group, json=data)
if __name__ == '__main__':
    logger.info('Started..')
    token = get_token()
    mobiles = ["18xxxxx42","17xxxxxxx3"]
    for iphone in mobiles:
        user_ID = getuserid(iphone)
        imgkey = uploadimg()
        sendmess('/scripts/feishu/wenben',user_ID,imgkey)
    logger.info("Finished!\n")

标题:利用飞书BOT发送消息

作者:cuijianzhe

地址:https://cloud.tencent.com/developer/article/2022799

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
利用Python实现网易云音乐自动签到
标题:利用Python实现网易云音乐自动签到 作者:cuijianzhe 地址:https://solo.cjzshilong.cn/articles/2020/03/27/1585293177882.html
cuijianzhe
2022/06/14
1.3K0
利用Python实现网易云音乐自动签到
ZABBIX对接飞书实现报警通知
飞书提供了丰富的api来实现消息的通知,包括文本消息、图片消息、富文本消息,本次介绍使用飞书api发送文本消息,以下是实现思路 飞书API地址:https://open.feishu.cn/document/ukTMukTMukTM/uITNz4iM1MjLyUzM
没有故事的陈师傅
2020/02/26
4.9K7
ZABBIX对接飞书实现报警通知
利用爬虫爬取我的solo博客
标题:利用爬虫爬取我的solo博客 作者:cuijianzhe 地址:https://solo.cjzshilong.cn/articles/2020/03/25/1585126708916.html
cuijianzhe
2022/06/14
3730
利用爬虫爬取我的solo博客
Pyhton爬虫爬取天气情况以及情话
参考:https://blog.csdn.net/blowfire123/article/details/99173295
cuijianzhe
2022/06/14
3590
Pyhton爬虫爬取天气情况以及情话
使用 Serverless + 飞书打造你的个性化消息提醒系统
如果每件事都花时间去关注,那我们的时间必然会不够用,那有没有什么办法可以让这些消息集中起来并且及时推送呢?在这里我想向大家推荐一个解决方案,那就是使用 Serverless + 飞书打造属于自己的个性化消息提醒系统。
腾讯云serverless团队
2020/07/09
1.8K0
【玩转腾讯云】使用Serverless+飞书打造你的个性化消息提醒系统
如果每件事都花时间去关注,那我们的时间必然会不够用,那有没有什么办法可以让这些消息集中起来并且及时推送呢?在这里我想向大家推荐一个解决方案,那就是使用Serverless+飞书打造属于自己的个性化消息提醒系统。
用户1358150
2020/04/08
2.5K0
【玩转腾讯云】使用Serverless+飞书打造你的个性化消息提醒系统
手把手教你,使用 Python 实现一个飞书/钉钉/微信机器人
1、通过关键词触发机器人记账,比如/fs 支出 微信 18 午饭,其中/fs 为触发关键词,后面的四项分别是:类型、支付渠道、金额、备注。
老表
2024/06/26
1.3K1
手把手教你,使用 Python 实现一个飞书/钉钉/微信机器人
使用 Python 实现一个飞书/微信机器人,酷B了!
我打算每日花1小时来写一篇文章(这篇文章实际耗时约24小时,从了解飞书机器人及相关接口、权限等开始,到调通记账助手),这一小时包括文章主题思考和实现,这是2024年更新的第12篇原创推文,看看能不能被官方推荐。(帮我点点赞哦~)
老表
2024/03/05
1.9K0
使用 Python 实现一个飞书/微信机器人,酷B了!
基于 Python 后端的聊天软件机器人开发
其中 intents 表示监听事件,监听事件后通过实现 client 的 on_XX 方法可以获取并响应对应事件
dandelion1990
2024/03/11
8360
飞书 + Lua 实现企业级组织架构登录认证
飞书是字节跳动旗下一款企业级协同办公软件,本文将介绍如何基于飞书开放平台的身份验证能力,使用 Lua 实现企业级组织架构的登录认证网关。
K8sCat
2021/08/14
1.8K0
.NET6用起来-飞书dotnet sdk
最近有用到飞书开放平台的功能,然后在github上找了下,没找到对应的sdk,于是自己封装了一个飞书dotnet sdk,方便调用,只需要结合官网文档,传递对应的参数,接收到返回的数据。
李明成
2022/05/16
1.3K1
.NET6用起来-飞书dotnet sdk
飞书接收CloudWatch监控告警
基于aws Cloudwatch创建监控和告警后,可以将告警信息结合SNS主题和lambda函数发送通知到告警群,比如钉钉、企业微信、飞书等等。本篇我们就详细介绍下如何将Cloudwatch告警信息推送到告警群,以飞书为例。
叔牙
2023/06/21
1.7K0
飞书接收CloudWatch监控告警
zabbix发送报警信息带图片
zabbix 发送报警内容调用 zabbix 的 api 生成原始图数据,然后将图片上传到远方图床取出图片 URL 进行展示;
cuijianzhe
2022/06/14
7310
zabbix发送报警信息带图片
证书到期提醒竟然要收费?白嫖方法来了
众所周知,SSL证书是网站的一个保障。但对个人来说,有个免费的SSL证书用太方便了,还有现成工具可以自动续期。
大风写全栈
2024/11/21
1400
证书到期提醒竟然要收费?白嫖方法来了
zabbix-告警
vim /usr/lib/zabbix/alertscripts/zabbix_feishu_alarm.py
buiu
2021/12/31
3730
Python3.7配合Django2.0来调用钉钉(dingding)在线api实时监测员工考勤打卡情况
    新冠疫情期间,大多数公司为了避免交叉感染都或多或少的采用了远程办公的方式,这显然是一个明智的选择,基本上钉钉(dingding)作为一个远程办公平台来用的话,虽然差强人意,但是奈何市面上没有啥更好的选择,矬子里拔将军,也还是可以凑合用的,不过远程办公有个问题,就是每天需要检查员工的考勤,居家办公虽然灵活,但是大家究竟有没有办公,则是另外一回事,钉钉提供的解决方案就是考勤在线打卡功能,但是检查出勤钉钉在移动端就有点费劲,需要在钉钉app里点击至少5次,还不能实时刷新,pc端的钉钉oa系统做的更烂,还不如移动端来得方便,另外如果你在一家上千人的企业里,这家企业有大大小小几十个部门,你又非常倒霉的担任这家公司的人事主管,每天按部门来出员工考勤报表就不是一件容易事了,所以利用钉钉开放的接口,使用Django自己打造一套实时监控员工考勤的web平台是我们本次的目的。
用户9127725
2022/08/08
1.3K0
Python3.7配合Django2.0来调用钉钉(dingding)在线api实时监测员工考勤打卡情况
手把手教你在飞书中搭建机器人
大家好,我是潇潇雨声。飞书是一款在国内广受欢迎的企业内部管理和协同工具,同时也可以作为一个强大的个人知识管理工具。在本文中,我将帮助你迅速创建一个飞书对话机器人,并嵌入 chatGPT 的功能。这个机器人可以直接回答你的问题,也可以在群聊中被@,从而以 chatGPT 的方式提供回应。通过这样的操作,你的飞书机器人将迅速蜕变成一个支持 chatGPT 的智能助手。
用户10517932
2023/12/24
2.1K0
手把手教你在飞书中搭建机器人
python3微信企业号 发送图文
本例 只适用于企业号,公众号没试,可自行测试,方法差不多。有事找官网开发文档。 #!/usr/bin/env python # -*- coding: utf-8 -*- import requests import json import urllib.request ID="xxxxxxxxxxxx"   Secret="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" UserID = "hequan2011"##成员ID列表(消息接收者,多个接收者用'|'分隔,最多支持1000个
py3study
2020/01/03
1.2K0
python发送微信及企业微信消息
直接使用第三方库 itchat,其文档中有详细使用方式; https://itchat.readthedocs.io/zh/latest/
用户1558882
2019/06/21
10.2K0
python发送微信及企业微信消息
通过 python 获取钉钉后台人员
通过钉钉官方接口可定时同步得知企业离职人员便于认证管理同步,大大简便了人员账号的管理。
cuijianzhe
2022/06/14
9080
通过 python 获取钉钉后台人员
相关推荐
利用Python实现网易云音乐自动签到
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验