吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1029|回复: 11
收起左侧

[Python 原创] 一种内网服务器程序接收钉钉群机器人消息的方式

  [复制链接]
duminghan23 发表于 2024-11-19 13:43
本帖最后由 duminghan23 于 2024-11-19 13:45 编辑

基于钉钉群机器人的消息接收并处理

使用钉钉提供的stream方式进行连接钉钉服务器,当你再钉钉群里艾特对应的机器人后,此消息会被程序接收到,已经打印了详细的日志信息,可以根据日志信息进行二次开发。

# !/usr/bin/env python

import argparse    # 命令行参数的解析
import logging
from dingtalk_stream import AckMessage
import dingtalk_stream

# import requests,json

def get_instructions(info_text):
    # 业务逻辑部分写在这里
    return '输入有误。帮助文档\n'+\
            '其他功能敬请期待...'

def setup_logger():     # 配置日志记录器,设置日志格式、输出到控制台,并设定日志级别为INFO。
    logger = logging.getLogger()
    handler = logging.StreamHandler()
    handler.setFormatter(
        logging.Formatter('%(asctime)s %(name)-8s %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s'))
    logger.addHandler(handler)
    logger.setLevel(logging.INFO)
    return logger

def define_options():    # 用户提供--client_id和--client_secret,这些通常是与钉钉应用相关的密钥
    parser = argparse.ArgumentParser()
    parser.add_argument(
        '--client_id', dest='client_id', required=True,
        help='app_key or suite_key from https://open-dev.digntalk.com'
    )
    parser.add_argument(
        '--client_secret', dest='client_secret', required=True,
        help='app_secret or suite_secret from https://open-dev.digntalk.com'
    )
    options = parser.parse_args()
    return options

class EchoTextHandler(dingtalk_stream.ChatbotHandler):    # 继承自dingtalk_stream.ChatbotHandler,这是一个异步处理类,用于处理从钉钉聊天机器人接收到的消息。收到消息后,会回复相同的内容,并返回确认状态。
    def __init__(self, logger: logging.Logger = None):
        super(dingtalk_stream.ChatbotHandler, self).__init__()
        if logger:
            self.logger = logger

    async def process(self, callback: dingtalk_stream.CallbackMessage):
        incoming_message = dingtalk_stream.ChatbotMessage.from_dict(callback.data)

        text = incoming_message.text.content.strip()
        self.logger.info('mylog----callback.data:')
        self.logger.info(callback.data)
        self.logger.info('mylog----incoming_message:')
        self.logger.info(incoming_message)
        self.logger.info('mylog----text:')
        self.logger.info(text)
        # print('\n\n',callback.data,'\n\n',incoming_message,'\n\n',text)
        resout = get_instructions(text)
        self.logger.info('mylog----resout:')
        self.logger.info(resout)
        # print(resout)
        self.reply_text(resout, incoming_message)
        return AckMessage.STATUS_OK, 'OK'

def main():
    logger = setup_logger()
    # options = define_options()

    # credential = dingtalk_stream.Credential(options.client_id, options.client_secret)
    credential = dingtalk_stream.Credential('钉钉应用授权--client_id', '钉钉应用授权--client_secret')
    client = dingtalk_stream.DingTalkStreamClient(credential)
    client.register_callback_handler(dingtalk_stream.chatbot.ChatbotMessage.TOPIC, EchoTextHandler(logger))
    client.start_forever()

if __name__ == '__main__':
    main()

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wkkk0920 发表于 2024-11-19 15:39
client_id和client_secret如何获取?
kisller 发表于 2024-11-19 15:51
qianyuhb 发表于 2024-11-19 16:20
zhangxiaoxiao 发表于 2024-11-19 16:56
学习了,谢谢楼主分享
qhrhr 发表于 2024-11-19 17:41
感谢大佬分享
dzzZOne 发表于 2024-11-19 18:41
wkkk0920 发表于 2024-11-19 15:39
client_id和client_secret如何获取?

这是钉钉的认证信息吧,钉钉开发者平台去搜呗
davidzhan 发表于 2024-11-19 18:57
感谢分享,学习了。多谢!!1
inix312 发表于 2024-11-19 19:35
感谢分享,学习了。多谢
chen714714 发表于 2024-11-19 21:13
厉害厉害,学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-8 20:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表