Esempio n. 1
0
 def run(self):
     # 先从数据库中查询管理员和关注的群号码(加快后面的访问速度)
     db = DBDriver(variable.DbFile)
     db.openConn()
     db.exec_(variable.Table_Admin)
     db.exec_(variable.Table_Group)
     db.exec_(variable.Table_Ask)
     # [('892768447',), ('892768447',)]
     try:
         variable.Admins = set([j for i in db.select(variable.Select_Admin) for j in i])
         variable.Groups = set([j for i in db.select(variable.Select_Group) for j in i])
         print("管理员: %s", variable.Admins)
         print("关注群: %s", variable.Groups)
     except Exception as e:
         print.error(e)
     db.closeConn()
     if self.login():
         t = 0
         self._event.start()
         while self._run:
             if variable.Exit:
                 self.stop()
                 break
             if variable.Offine:
                 break
             # 心跳包轮询
             if t > 5:
                 data = {"from":variable.Email, "to":variable.Email, "title":"QQ下线", "msg":"网络无连接"}
                 self._http.post(variable.EmailUrl, data)
                 self.stop()
                 break
             time.sleep(1)    # 1秒一轮询
             ret = self.check()
             print("ret: %s", ret)
             retcode = ret.get("retcode")
             if retcode == 100006:
                 break    # post数据有误
             if retcode == 102 or retcode == 108:
                 continue    # 无消息
             if retcode == 116:
                 variable.Ptwebqq = ret.get("p")
                 continue    # 更新ptwebqq值
             if retcode == 0:
                 # 消息广播
                 self.msg_handler(ret.get("result"))
                 continue
             if ret == "":
                 t = t + 1
                 continue    # 返回数据有误