#Python 项目:实现功能——使用钉钉“自定义”机器人在群中发送文字消息

 (目前还是新手,程序难免有废话代码,请大家耐心看__比心)

第一步:创建群聊机器人,参考官方手册

官方链接:自定义机器人的创建和安装 - 钉钉开放平台

此步骤可以得到两个关键参数:

Webhook(机器人的通信网址):https://oapi.dingtalk.com/robot/send?############(如这样)

secret(加签未解密密钥):SECe2######################30    #密钥,机器人安全设置页面,加签一栏下面显示的SECe开头的字符串。

第二步:计算时间戳,解算secret密钥

这里也使用官方提供的代码(我自己加了些备注)

此步骤可以得到两个关键参数,并合成最终的webhook(带时间戳和密钥的机器人的通信网址):

timestamp(时间戳)

sign(解密后的密钥)

webhook(机器人的通信网址)

#python 3.8
#导入依赖库
import time
import hmac
import hashlib
import base64
import urllib.parse

timestamp = str(round(time.time() * 1000))    #此处计算时间戳并换算为毫秒
secret = 'this is secret'    #此处填写密钥
#以下内容进行哈希计算,具体原理自行科普我也不懂
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
#print(timestamp)   #显示解算过的时间戳(如需要查看请删除#号)
#print(sign)    #显示解密过的密钥(如需要查看请删除#号)
webhook = "{}&timestamp={}&sign={}".format(webhook,timestamp,sign) #{}分别代表{通讯网址}和{时间戳}和{密钥}

第三步:编码交互内容

在content中输入文本内容即可

headers = {'Content-Type': 'application/json;charset=utf-8'}
data = {
    "msgtype": "text",
    "text": {
        "content": "需要发送至群中的内容"
    },
    "at": {
        "isAtAll": True    #是否@所有人,True是,False否
    }
}
resp = requests.post(webhook, 
                     data=json.dumps(data).encode("utf-8"), 
                     headers=headers,
                    )
print (resp.json())

完整代码展示(这部分内容是根据我自己的需求加入了交互部分)

#字符提示:
#qm是输入的群名
#my是每个群加签的密钥
#wz网址是每个机器人的后台网址
#nr是发到群中的文字内容
#sy是否需要at所有人

#导入依赖库
import requests,json
#签名计算依赖的库
import time,hmac,hashlib,base64,urllib.parse

#给操作者的提示
print("提示:\"此操作小程序,目前仅支持联动一群、二群、和测试群,请悉知\"\n\n")
qm = input("第一步:###请您选择要发通知的群号###\n\n群名包含一下内容(输入时不用加引号):\n\n\"1:一群\"    \"2:二群\"    \"3:测试群\"\n请输入群号:")
print("")
if qm == "1" or qm == "2" or qm == "3":
    if qm == "1":
        my = "此处输入一群的未解密密钥"
        wz = "此处输入一群的网址"
    if qm == "2":
        my = "此处输入二群的未解密密钥"
        wz = "此处输入二群的网"
    if qm == "3":
        my = "此处输入测试群的未解密密钥"
        wz = "此处输入测试群的网址"
else:
    print("输入错误,程序结束")
    exit()

#先将密钥解析得到时间戳(timestamp)以及签名值(sign)
timestamp = str(round(time.time() * 1000))

secret = my
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))

webhook = "{}&timestamp={}&sign={}".format(wz,timestamp,sign) #{}分别代表wz和my
nr = input("第二步:###输入文本内容###\n①此输入的内容会直接发至群中,建议现在测试群测试。\n②文本内容如需换行请在段尾输入\"\ n\"中间无空格。\n\n")
nr = "\"" + nr + "\""
sy = input("第三步:###是否需要@所有人?###  1:是  2:否\n")
if sy == "1":
    sy = "True"
elif sy == "2":
    sy = "Flase"
headers = {'Content-Type': 'application/json;charset=utf-8'}
data = {
    "msgtype": "text",
    "text": {
        "content": eval(nr)   #eval()计算在字符串中的有效Python表达式,并返回一个对象
    },
    "at": {
        "isAtAll": sy
    }
}
resp = requests.post(webhook, 
                     data=json.dumps(data).encode("utf-8"), 
                     headers=headers,
                    )
print (resp.json())

实现效果展示:

Python钉钉机器人是通过使用Python编程语言与钉钉机器人进行交互的一种方式。首先,你需要创建一个钉钉机器人并获取其Webhook地址。Webhook地址是一个API参数,类似于访问权限,用于将消息发送到指定的钉钉群组。然后,你可以使用Python的requests库中的post函数和json模块中的dump方法来格式化消息数据,并通过钉钉机器人的Webhook地址将消息发送到聊天框中。具体的操作步骤如下: 1. 准备工作:确保你已经在钉钉中创建了一个群组,并且拥有管理员权限以添加自定义机器人。 2. 创建自定义机器人:在钉钉中打开你想要添加机器人的群组,点击右上角的群组设置图标,然后选择「智能群助手」。在智能群助手页面中,选择「自定义机器人」,点击「添加机器人」,按照提示完成机器人的创建过程。 3. 获取Webhook地址:在机器人创建完成后,你将获得一个Webhook地址。这个地址是用来将消息发送到指定群组的唯一标识。你可以将这个地址保存下来,以便后续使用。 通过以上步骤,你就可以使用Python编程语言与钉钉机器人进行交互,发送消息到指定的钉钉群组了。 #### 引用[.reference_title] - *1* *3* [使用Python搭建钉钉机器人的教程](https://blog.csdn.net/weixin_63783406/article/details/130933785)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [python操作钉钉机器人 ——学习来源:Datawhale自动化办公](https://blog.csdn.net/qq_55104849/article/details/125952852)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值