深圳全飞鸿

标题: itchat_qty.py的源码 [打印本页]

作者: zhgc    时间: 2019-7-7 23:39
标题: itchat_qty.py的源码
  1. #coding=utf8
  2. import MySQLdb,itchat,time,importlib,sys,threading
  3. from threading import Timer
  4. #reload(sys)
  5. importlib.reload(sys)
  6. #sys.setdefaultencoding('utf8')

  7. db_config = {
  8.   'host': '192.168.2.10',
  9.   'user': 'root',
  10.   'passwd': 'xxxxx',
  11.   'db': 'crc',
  12.   'charset': 'utf8'
  13. }

  14. db1=MySQLdb.connect(**db_config)

  15. db2=MySQLdb.connect(**db_config)

  16. db3=MySQLdb.connect(**db_config)

  17. #db.ping(True)

  18. itchat.auto_login(hotReload=True)
  19. users = itchat.search_chatrooms(name='凤天办公室')
  20. username=users[0]['UserName']

  21. # 这里是我们在“1. 实现微信消息的获取”中已经用到过的同样的注册方法,isGroupChat=True
  22. @itchat.msg_register(itchat.content.TEXT,isGroupChat=True)

  23. #实时回复任务
  24. def reply(msg):
  25.     if(msg.isAt):
  26.         try:
  27.             db1.ping()
  28.         except MySQLdb.Error as e:
  29.             #这是防止db连接离线 报错为(2006, 'MySQL server has gone away')
  30.             if (e and (e.args[0]==2006 or e.args[0]==2013 )):
  31.                 db1.ping(True)
  32.                 #print 'ping(true) connect'
  33.             else:
  34.                 #print "timer_MySQL Error :  %s" % e
  35.                 print("e")
  36.         try:
  37.             cursor1 = db1.cursor()
  38.             rooms=msg['User']['NickName']
  39.             fromuser_name=msg['ActualNickName']
  40.             mess=msg['Text']
  41.             to_rooms_id = msg['User']['UserName']
  42.             x='@x'
  43.             cursor1.callproc('CRC_IN',(rooms,fromuser_name,mess,x))
  44.             data1= cursor1.fetchone()
  45.             mo_data=data1[0]
  46.             mess_data ="来自群[%s]\r发送人[%s]\r消息内容:%s \r回复消息:%s"%(rooms,fromuser_name,mess,mo_data)
  47.             print(mess_data)
  48.             #回复群消息
  49.             itchat.send(msg=mo_data, toUserName=to_rooms_id)
  50.             #转发群消息至工作群
  51.             itchat.send(msg=mess_data, toUserName=username)
  52.             cursor1.close()
  53.             db1.commit()
  54.         except MySQLdb.Error as e:
  55.             print("itchat_rooms_MySQL Error :  %s" % e)
  56.             #itchat.send(msg="MySQL Error %d:  %s" % ( e.args[0], e.args[1] ), toUserName=username)
  57.             #itchat.auto_login(hotReload=True)
  58.             #users = itchat.search_chatrooms(name='凤天办公室')
  59.             #username=users[0]['UserName']

  60. #线程定时器执行函数
  61. def auto_run():
  62.     try:
  63.         db2.ping()
  64.     except MySQLdb.Error as e:
  65.         if (e and (e.args[0]==2006 or e.args[0]==2013 )):
  66.             db2.ping(True)
  67.         else:
  68.             print("timer_MySQL Error :  %s" % e)
  69.     try:
  70.             cursor2=db2.cursor()
  71.             cursor2.execute("SELECT now()")
  72.             data ="DB时间:%s" %cursor2.fetchone()
  73.             cursor2.close()
  74.             itchat.send(msg=data, toUserName=None)
  75.             itchat.send(msg=data, toUserName=username)
  76.             print('这次定时已经跑完 mess:%s'%data)
  77.             t = Timer(28800, auto_run)
  78.             t.start()
  79.             db2.commit()
  80.     except MySQLdb.Error as e:
  81.         if (e and (e.args[0]==2006 or e.args[0]==2013 )):
  82.             db2.ping(True)
  83.         else:
  84.             print("timer_MySQL Error :  %s" % e)   
  85.         #itchat.auto_login(hotReload=True)
  86.         #users = itchat.search_chatrooms(name='凤天办公室')
  87.         #username=users[0]['UserName']

  88. #线程循环查看系统有无信息需要回复
  89. def thread_run():
  90.     cursor3 = db3.cursor()  
  91.     sql = "SELECT mess_id,chatrooms,fromusername,out_mess FROM r_message WHERE UPPER(send_flag) ='N' AND UPPER(EVENT)='Y' AND  out_mess IS NOT NULL"     
  92.     while(True):
  93.         try:
  94.             #ab=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
  95.             time.sleep(2)
  96.             cursor3.execute(sql)
  97.             # 获取所有记录列表
  98.             results = cursor3.fetchall()
  99.             #print 'count:',len(results)
  100.             for row in results:
  101.                 back_mess="任务已经处理\r\n任务单号:%s\r\n创建人员:%s\r\n回复信息:%s" % \
  102.                       (row[0],row[2],row[3])
  103.                 users_id1 = itchat.search_chatrooms(name=row[1])
  104.                 usergroupname1=users_id1[0]['UserName']
  105.                 itchat.send(msg=back_mess, toUserName=usergroupname1)
  106.                 #转发群消息至工作群
  107.                 itchat.send(msg=back_mess, toUserName=username)
  108.                 print(back_mess)
  109.                 sql_up="UPDATE r_message SET send_flag='Y',out_time=now() WHERE mess_id='%s'" % row[0]
  110.                 cursor3.execute(sql_up)
  111.                 db3.commit()
  112.             db3.commit()
  113.         except MySQLdb.Error as e:
  114.             if (e and (e.args[0]==2006 or e.args[0]==2013 )):
  115.                 db3.ping(True)
  116.             else:
  117.                 print("timer_MySQL Error :  %s" %e)
  118.             #itchat.auto_login(hotReload=True)
  119.             #users = itchat.search_chatrooms(name='凤天办公室')
  120.              #username=users[0]['UserName']
  121.     cursor3.close()
  122. if __name__ == "__main__":
  123.     ab=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
  124.     print("start_time:",ab)

  125.     auto_run()

  126.     t =threading.Thread(target=thread_run)
  127.     t.setDaemon(True)#设置线程为后台线程
  128.     t.start()

  129.     itchat.send(msg=ab, toUserName=None)
  130.     itchat.run()
  131. #db.close()
复制代码

作者: zhgc    时间: 2020-12-27 16:40
全飞鸿CRC系统v3版 2019-12-02
用时间比较长的版本




欢迎光临 深圳全飞鸿 (http://www.nagomes.com/disc/) Powered by Discuz! X3.2