150 lines
4.3 KiB
Python
150 lines
4.3 KiB
Python
"""
|
||
钉钉推送使用示例
|
||
演示如何配置和使用钉钉推送功能
|
||
"""
|
||
import os
|
||
import sys
|
||
|
||
# 添加父目录到路径
|
||
current_dir = os.path.dirname(os.path.abspath(__file__))
|
||
parent_dir = os.path.dirname(os.path.dirname(current_dir))
|
||
if parent_dir not in sys.path:
|
||
sys.path.insert(0, parent_dir)
|
||
|
||
from applications.reporter.daily import DailyReporter
|
||
from applications.reporter.weekly import WeeklyReporter
|
||
from applications.reporter.dingtalk_webhook import DingTalkWebhook
|
||
|
||
|
||
def example_with_config():
|
||
"""示例1:通过config.py配置"""
|
||
print("=" * 50)
|
||
print("示例1:使用config.py中的配置")
|
||
print("=" * 50)
|
||
|
||
# 需要在config.py中设置 DINGTALK_WEBHOOK
|
||
reporter = DailyReporter()
|
||
result = reporter.generate()
|
||
print(f"✅ 报告已生成并推送\n")
|
||
|
||
|
||
def example_with_env_var():
|
||
"""示例2:通过环境变量配置"""
|
||
print("=" * 50)
|
||
print("示例2:使用环境变量配置")
|
||
print("=" * 50)
|
||
|
||
# 设置环境变量
|
||
webhook_url = os.getenv('DINGTALK_WEBHOOK', '')
|
||
if webhook_url:
|
||
reporter = DailyReporter(dingtalk_webhook=webhook_url)
|
||
result = reporter.generate()
|
||
print(f"✅ 报告已生成并推送\n")
|
||
else:
|
||
print("⚠️ 未设置环境变量 DINGTALK_WEBHOOK\n")
|
||
|
||
|
||
def example_with_direct_url():
|
||
"""示例3:直接指定Webhook地址"""
|
||
print("=" * 50)
|
||
print("示例3:直接指定Webhook地址")
|
||
print("=" * 50)
|
||
|
||
# 直接指定webhook地址(请替换为实际的webhook地址)
|
||
webhook_url = "https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN"
|
||
|
||
if webhook_url != "https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN":
|
||
reporter = DailyReporter(dingtalk_webhook=webhook_url)
|
||
result = reporter.generate()
|
||
print(f"✅ 报告已生成并推送\n")
|
||
else:
|
||
print("⚠️ 请先设置实际的webhook地址\n")
|
||
|
||
|
||
def example_without_push():
|
||
"""示例4:生成报告但不推送"""
|
||
print("=" * 50)
|
||
print("示例4:生成报告但不推送到钉钉")
|
||
print("=" * 50)
|
||
|
||
reporter = DailyReporter()
|
||
result = reporter.generate(send_dingtalk=False)
|
||
print(f"✅ 报告已生成(未推送)\n")
|
||
|
||
|
||
def example_weekly_report():
|
||
"""示例5:生成周报并推送"""
|
||
print("=" * 50)
|
||
print("示例5:生成周报并推送")
|
||
print("=" * 50)
|
||
|
||
reporter = WeeklyReporter()
|
||
result = reporter.generate()
|
||
print(f"✅ 周报已生成并推送\n")
|
||
|
||
|
||
def example_test_webhook():
|
||
"""示例6:测试钉钉Webhook连接"""
|
||
print("=" * 50)
|
||
print("示例6:测试钉钉Webhook连接")
|
||
print("=" * 50)
|
||
|
||
webhook_url = input("请输入钉钉Webhook地址(直接回车跳过): ").strip()
|
||
if not webhook_url:
|
||
print("⚠️ 未输入Webhook地址,跳过测试\n")
|
||
return
|
||
|
||
client = DingTalkWebhook(webhook_url)
|
||
|
||
# 发送测试消息
|
||
success = client.send_text("这是一条测试消息", at_all=False)
|
||
|
||
if success:
|
||
print("✅ 测试消息发送成功,Webhook配置正确\n")
|
||
else:
|
||
print("❌ 测试消息发送失败,请检查Webhook地址是否正确\n")
|
||
|
||
|
||
def main():
|
||
"""主函数"""
|
||
print("\n" + "=" * 50)
|
||
print("钉钉推送功能使用示例")
|
||
print("=" * 50 + "\n")
|
||
|
||
print("请选择要运行的示例:")
|
||
print("1. 通过config.py配置(需要先在config.py中设置DINGTALK_WEBHOOK)")
|
||
print("2. 通过环境变量配置")
|
||
print("3. 直接指定Webhook地址")
|
||
print("4. 生成报告但不推送")
|
||
print("5. 生成周报并推送")
|
||
print("6. 测试钉钉Webhook连接")
|
||
print("0. 退出")
|
||
|
||
choice = input("\n请输入选项(0-6): ").strip()
|
||
|
||
if choice == "1":
|
||
example_with_config()
|
||
elif choice == "2":
|
||
example_with_env_var()
|
||
elif choice == "3":
|
||
example_with_direct_url()
|
||
elif choice == "4":
|
||
example_without_push()
|
||
elif choice == "5":
|
||
example_weekly_report()
|
||
elif choice == "6":
|
||
example_test_webhook()
|
||
elif choice == "0":
|
||
print("退出")
|
||
else:
|
||
print("无效选项")
|
||
|
||
print("=" * 50)
|
||
print("示例运行完成!")
|
||
print("=" * 50 + "\n")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|
||
|