changsha_bot.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. """
  2. 独立执行,每个人执行一次,单日总量到达 300 即执行一次
  3. """
  4. import json
  5. import datetime
  6. import time
  7. import requests
  8. from common.db import RedisClient
  9. def bot(name):
  10. """
  11. 报警机器人
  12. """
  13. id_dict = {
  14. "余海涛": "ou_b87d153e200a04de3d82b1b9276e8f90",
  15. "范军": "ou_fce9cfef186e260e70554b47fee70a34",
  16. "罗情": "ou_88139cd84c2d105c2e1d699c14ec3375",
  17. "鲁涛": "ou_7986cccb78e6c981db8d0eef93443d05",
  18. "王雪珂": "ou_2233fb8e1302314bae166fcfa144151f",
  19. "邓锋": "ou_379d37645f929e1e6553a75aecda42a2"
  20. }
  21. url = "https://open.feishu.cn/open-apis/bot/v2/hook/df47bb77-ecaa-4628-b076-aae776415ae8"
  22. headers = {"Content-Type": "application/json"}
  23. payload = {
  24. "msg_type": "interactive",
  25. "card": {
  26. "elements": [
  27. {
  28. "tag": "div",
  29. "text": {
  30. "content": "抓取数量触发限量通知, <at id={}></at>, <at id={}></at>, <at id={}></at>\n".format(
  31. id_dict[name], id_dict["邓锋"], id_dict["王雪珂"]
  32. ),
  33. "tag": "lark_md",
  34. },
  35. },
  36. {
  37. "tag": "div",
  38. "text": {
  39. "content": "当天已经入库 300 条视频",
  40. "tag": "lark_md",
  41. },
  42. },
  43. ],
  44. "header": {"title": {"content": "【 通知 】", "tag": "plain_text"}},
  45. },
  46. }
  47. requests.post(url, headers=headers, data=json.dumps(payload))
  48. def monitor():
  49. """
  50. 监测 redis 中数据
  51. """
  52. keys = {"352": "余海涛", "353": "罗情", "53": "范军", "51": "鲁涛"}
  53. now = datetime.datetime.now().time()
  54. start_alert_time = datetime.time(10)
  55. end_alert_time = datetime.time(20, 30)
  56. while True:
  57. if start_alert_time <= now <= end_alert_time:
  58. try:
  59. R = RedisClient()
  60. if R.connect():
  61. for key in keys:
  62. count = R.select(key)
  63. if count:
  64. OO = int(count.decode("utf-8"))
  65. name = keys[key]
  66. redis_date_key = key + "-" + datetime.date.today().strftime("%Y%m%d")
  67. if R.select(redis_date_key):
  68. # 说明已经存储进去了, 不需要再报警了
  69. continue
  70. else:
  71. if OO > 300:
  72. R.insert(redis_date_key, "already bot", 86400)
  73. # print("超过了, 报警", name)
  74. bot(name)
  75. else:
  76. continue
  77. except Exception as e:
  78. print(e)
  79. pass
  80. # 查询一次之后等待 60 s
  81. time.sleep(60)
  82. if __name__ == '__main__':
  83. monitor()
  84. # R = RedisClient()
  85. # R.connect()
  86. # # w = R.select("53-20240327")
  87. # # print(w)
  88. # R.delete("51-20240327")
  89. # R.delete("53-20240327")
  90. # R.delete("353-20240327")
  91. # R.delete("352-20240327")