contact.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. from service.robot import get_robot
  2. from common.sql_lite import init_new_db_connection
  3. from sqlite3 import Cursor
  4. import string
  5. # 根据 wx_id 获取昵称
  6. def get_contact_by_wxid(wx_id):
  7. # 获取全部联系人和标签列表
  8. robot = get_robot()
  9. label_list = robot.getContactLabelList()
  10. for label in label_list:
  11. if wx_id == label['LabelId']:
  12. return {
  13. "nickname": label['LabelName'],
  14. "wxid": wx_id,
  15. }
  16. return None
  17. # 追加联系人标签
  18. def add_contact_label(contact_id: str, action_label_add: list[int], action_label_del: list[int],
  19. action_label_add_list, action_label_del_list):
  20. """
  21. action_label_add [1,2,3]
  22. action_label_add_list ["命中任务1", "命中任务2", "命中任务3"]
  23. """
  24. return []
  25. robot = get_robot()
  26. label_list = robot.getContactLabelList()
  27. contact_label_list = []
  28. for label in label_list:
  29. contact_label_list.append(label['LabelName'])
  30. add_label_list = []
  31. rem_label_ids = []
  32. final_label_ids = []
  33. for add_label_name in action_label_add_list:
  34. if add_label_name not in contact_label_list and add_label_name not in action_label_del_list:
  35. add_label_list.append(add_label_id)
  36. for contact_label_id in contact_label_list:
  37. if contact_label_id not in action_label_del:
  38. final_label_ids.append(contact_label_id)
  39. else:
  40. rem_label_ids.append(contact_label_id)
  41. contacts = robot.getContactList()
  42. for label_id in add_label_list:
  43. # 新建label
  44. new_label = robot.insertLabel(label_id)
  45. # print(f"new_label={new_label}")
  46. # 把用于与label的关系建立起来
  47. for contact in contacts:
  48. if contact['UserName'] == contact_id:
  49. label_id_list = label_id_add_format(new_label['LabelId'], contact['LabelIDList'])
  50. self.wcf.query_sql("MicroMsg.db",
  51. f"update Contact set LabelIDList={label_id_list} where UserName={contact['UserName']}")
  52. for label_id in rem_label_ids:
  53. for contact in contacts:
  54. if contact['UserName'] == contact_id:
  55. label_id_list = label_id_remove_format(label_id, contact['LabelIDList'])
  56. self.wcf.query_sql("MicroMsg.db",
  57. f"update Contact set LabelIDList={label_id_list} where UserName={contact['UserName']}")
  58. return final_label_ids
  59. # 检查 label_id 是否在 label_id_list (形如:1,2,3) 这样的内容里
  60. def label_id_add_format(label_id, label_id_list):
  61. if label_id_list == '':
  62. return f",{label_id},"
  63. # 去掉前后的,
  64. label_id_list = str_trim_comma(label_id_list)
  65. label_id_set = label_id_list.split(',')
  66. if label_id in label_id_set:
  67. return label_id_list
  68. else:
  69. label_id_set.append(label_id)
  70. return label_id_set.join(',')
  71. # 检查 label_id 是否在 label_id_list (形如:1,2,3) 这样的内容里
  72. def label_id_remove_format(label_id, label_id_list):
  73. if label_id_list == '':
  74. return ""
  75. # 去掉前后的,
  76. label_id_list = str_trim_comma(label_id_list)
  77. label_id_set = label_id_list.split(',')
  78. if label_id not in label_id_set:
  79. return label_id_list
  80. else:
  81. label_id_set.remove(label_id)
  82. return label_id_set.join(',')
  83. # 去掉前后的,
  84. def str_trim_comma(label_id_list):
  85. if label_id_list.startswith(','):
  86. label_id_list = label_id_list[1:]
  87. if label_id_list.endswith(','):
  88. label_id_list = label_id_list[:-1]
  89. return label_id_list