|
1 |
| -import itchat |
2 |
| -import re |
3 |
| -import xmltodict |
| 1 | +import io |
4 | 2 | import logging
|
| 3 | +import mimetypes |
5 | 4 | import os
|
6 |
| -import io |
| 5 | +import re |
7 | 6 | import time
|
| 7 | +from binascii import crc32 |
| 8 | + |
| 9 | +import itchat |
8 | 10 | import magic
|
9 |
| -import mimetypes |
10 |
| -import config |
| 11 | +import xmltodict |
11 | 12 | from PIL import Image
|
12 |
| -from binascii import crc32 |
| 13 | + |
| 14 | +import config |
13 | 15 | from channel import EFBChannel, EFBMsg, MsgType, MsgSource, TargetType, ChannelType
|
14 |
| -from utils import extra |
15 | 16 | from channelExceptions import EFBMessageTypeNotSupported
|
| 17 | +from utils import extra |
| 18 | + |
16 | 19 |
|
17 | 20 | def incomeMsgMeta(func):
|
18 | 21 | def wcFunc(self, msg, isGroupChat=False):
|
| 22 | + logger = logging.getLogger("plugins.eh_wechat_slave.incomeMsgMeta") |
19 | 23 | mobj = func(self, msg, isGroupChat)
|
20 |
| - self = msg['FromUserName'] == itchat.get_friends()[0]['UserName'] |
21 |
| - if self: |
22 |
| - msg['FromUserName'] = msg['ToUserName'] |
23 |
| - mobj.text = "You: " + mobj.text |
24 |
| - FromUser = self.search_user(UserName=msg['FromUserName'])[0] or {"NickName": "User error. (UE01)", "RemarkName": "User error. (UE01)"} |
| 24 | + me = msg['FromUserName'] == itchat.get_friends()[0]['UserName'] |
| 25 | + logger.debug("me, %s", me) |
| 26 | + if me: |
| 27 | + msg['FromUserName'], msg['ToUserName'] = msg['ToUserName'], msg['FromUserName'] |
| 28 | + FromUser = self.search_user(UserName=msg['FromUserName']) or \ |
| 29 | + [{"NickName": "User error. (UE01)", "RemarkName": "User error. (UE01)", "Uin": 0}] |
| 30 | + FromUser = FromUser[0] |
| 31 | + logger.debug("From user, %s", FromUser) |
25 | 32 | if isGroupChat:
|
26 |
| - member = self.search_user(UserName=msg['FromUserName'], ActualUserName=msg['ActualUserName'])[0]['MemberList'][0] |
| 33 | + logger.debug("groupchat") |
| 34 | + if me: |
| 35 | + msg['ActualUserName'] = msg['ToUserName'] |
| 36 | + member = {"NickName": itchat.get_friends()[0]['NickName'], "DisplayName": "You", "Uin": itchat.get_friends()[0]['Uin']} |
| 37 | + else: |
| 38 | + logger.debug("search_user") |
| 39 | + member = self.search_user(UserName=msg['FromUserName'], ActualUserName=msg['ActualUserName'])[0]['MemberList'][0] |
| 40 | + logger.debug("search_user.done") |
27 | 41 | mobj.source = MsgSource.Group
|
| 42 | + logger.debug("Group. member: %s", member) |
28 | 43 | mobj.origin = {
|
29 | 44 | 'name': FromUser['NickName'],
|
30 | 45 | 'alias': FromUser['RemarkName'] or FromUser['NickName'],
|
31 | 46 | 'uid': self.get_uid(UserName=msg.get('FromUserName', None),
|
32 | 47 | NickName=FromUser.get('NickName', None),
|
33 | 48 | alias=FromUser.get('RemarkName', None),
|
34 |
| - uid=FromUser.get('Uin', None)) |
| 49 | + Uin=FromUser.get('Uin', None)) |
35 | 50 | }
|
36 | 51 | mobj.member = {
|
37 | 52 | 'name': member['NickName'],
|
38 | 53 | 'alias': member['DisplayName'],
|
39 | 54 | 'uid': self.get_uid(UserName=msg.get('ActualUserName', None),
|
40 | 55 | NickName=member.get('NickName', None),
|
41 | 56 | alias=member.get('DisplayName', None),
|
42 |
| - uid=member.get('Uin', None)) |
| 57 | + Uin=member.get('Uin', None)) |
43 | 58 | }
|
| 59 | + logger.debug("origin: %s\nmember: %s\n", mobj.origin, mobj.member) |
44 | 60 | else:
|
| 61 | + if me: |
| 62 | + mobj.text = "You: " + mobj.text |
45 | 63 | mobj.source = MsgSource.User
|
46 | 64 | mobj.origin = {
|
47 | 65 | 'name': FromUser['NickName'],
|
48 | 66 | 'alias': FromUser['RemarkName'] or FromUser['NickName'],
|
49 | 67 | 'uid': self.get_uid(UserName=msg.get('FromUserName', None),
|
50 | 68 | NickName=FromUser.get('NickName', None),
|
51 | 69 | alias=FromUser.get('RemarkName', None),
|
52 |
| - uid=FromUser.get('Uin', None)) |
| 70 | + Uin=FromUser.get('Uin', None)) |
53 | 71 | }
|
54 | 72 | mobj.destination = {
|
55 | 73 | 'name': itchat.get_friends()[0]['NickName'],
|
56 | 74 | 'alias': itchat.get_friends()[0]['NickName'],
|
57 | 75 | 'uid': self.get_uid(UserName=msg['ToUserName'])
|
58 | 76 | }
|
59 |
| - logger = logging.getLogger("plugins.eh_wechat_slave.%s" % __name__) |
| 77 | + logger.debug("dest: %s", mobj.destination) |
60 | 78 | logger.info("WeChat incoming message:\nType: %s\nText: %s\nUserName: %s\nuid: %s\nname: %s" %
|
61 | 79 | (mobj.type, msg['Text'], msg['FromUserName'], mobj.origin['uid'], mobj.origin['name']))
|
62 | 80 | self.queue.put(mobj)
|
@@ -159,6 +177,9 @@ def get_uid(self, UserName=None, NickName=None, alias=None, Uin=None):
|
159 | 177 | data = {"nickname": NickName, "alias": alias, "uin": Uin}
|
160 | 178 | if UserName and not (NickName or alias or Uin):
|
161 | 179 | r = self.search_user(UserName=UserName)
|
| 180 | + if not r: |
| 181 | + self.logger.debug("get_uid, return False") |
| 182 | + return False |
162 | 183 | data = {"nickname": r[0]['NickName'], "alias": r[0]["RemarkName"], "uin": r[0]["Uin"]}
|
163 | 184 | for i in fallback_order:
|
164 | 185 | if data[i.lower()]:
|
@@ -221,7 +242,7 @@ def search_user(self, UserName=None, uid=None, uin=None, name=None, ActualUserNa
|
221 | 242 | "uin": i.get("Uin", None)}
|
222 | 243 | for j in fallback_order:
|
223 | 244 | if str(crc32(data[j.lower()].encode("utf-8"))) == uid:
|
224 |
| - result.append(j.copy()) |
| 245 | + result.append(i.copy()) |
225 | 246 | if str(i.get('UserName', '')) == UserName or \
|
226 | 247 | str(i.get('AttrStatus', '')) == uid or \
|
227 | 248 | str(i.get('Uin', '')) == uin or \
|
|
0 commit comments