webhook.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import json
  2. import requests
  3. from config import VERSION
  4. def post_webhook(url: str, message: str, event_data: dict) -> bool:
  5. try:
  6. payload = {}
  7. if "https://hooks.slack.com" in url:
  8. payload["text"] = message
  9. elif "https://discord.com/api/webhooks" in url:
  10. payload["content"] = message
  11. elif "webhook.office.com" in url:
  12. action = event_data.get("action", "undefined")
  13. facts = [
  14. {"name": name, "value": value}
  15. for name, value in json.loads(event_data.get("user", {})).items()
  16. ]
  17. payload = {
  18. "@type": "MessageCard",
  19. "@context": "http://schema.org/extensions",
  20. "themeColor": "0076D7",
  21. "summary": message,
  22. "sections": [
  23. {
  24. "activityTitle": message,
  25. "activitySubtitle": f"Open WebUI ({VERSION}) - {action}",
  26. "activityImage": "https://openwebui.com/favicon.png",
  27. "facts": facts,
  28. "markdown": True,
  29. }
  30. ],
  31. }
  32. else:
  33. payload = {**event_data}
  34. r = requests.post(url, json=payload)
  35. r.raise_for_status()
  36. return True
  37. except Exception as e:
  38. print(e)
  39. return False