|
- """
- wechat channel
- """
- import itchat
- import json
- from itchat.content import *
- from channel.channel import Channel
- from concurrent.futures import ThreadPoolExecutor
-
- thead_pool = ThreadPoolExecutor(max_workers=8)
-
- @itchat.msg_register([TEXT])
- def handler_receive_msg(msg):
- WechatChannel().handle(msg)
-
-
- class WechatChannel(Channel):
- def __init__(self):
- pass
-
- def startup(self):
- # login by scan QRCode
- itchat.auto_login(enableCmdQR=2)
-
- # start message listener
- itchat.run()
-
- def handle(self, msg):
- # print("handle: ", msg)
- print("[WX]receive msg: " + json.dumps(msg, ensure_ascii=False))
- from_user_id = msg['FromUserName']
- other_user_id = msg['User']['UserName']
- if from_user_id == other_user_id:
- thead_pool.submit(self._do_send, msg['Text'], from_user_id)
-
- def send(self, msg, receiver):
- # time.sleep(random.randint(1, 3))
- print(msg, receiver)
- itchat.send(msg + " [bot]", toUserName=receiver)
-
- def _do_send(self, send_msg, reply_user_id):
- context = dict()
- context['from_user_id'] = reply_user_id
- self.send(super().build_reply_content(send_msg, context), reply_user_id)
|