-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdistributer.py
125 lines (113 loc) · 4.22 KB
/
distributer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import json
import msg_analyzer.replyer as replyer
bot_qq = json.load(open("./config.json", encoding="utf-8"))['bot_qq']
'''
request 结构:
{
post_type : 事件类型
message_type : 消息类型
sender : 发送人 {
sex
user_id
}
sub_type : 次类型
message/raw_message : 消息
group_id : 群号
}
reqmeta 结构 :
{
type : 事件类型
}
reqdata 结构 :
{
type : 暂时指消息类型 Private/Group
msgmeta : 消息元数据 {
msgtype 消息类型
msgsender 消息发送者 (Sender)
subtype
}
msgdata : 消息数据 {
msg/raw_msg
}
}
'''
class Distributer() :
reqdata, reqmeta = {}, {}
def __init__(self, requset) :
if requset['post_type'] == "message" :
self.reqmeta['type'] = "message"
self.reqdata['type'] = requset["message_type"]
if self.reqdata['type'] == "private" :
self.reqdata['msgmeta'] = {
"msgtype" : "private",
"msgsender" : requset['sender'],
"subtype" : requset['sub_type']
}
self.reqdata['msgdata'] = {
"raw_msg" : requset['raw_message'],
"msg" : requset['message']
}
elif self.reqdata['type'] == "group" :
self.reqdata['msgmeta'] = {
"msgtype" : "group",
"msgsender" : requset['sender'],
"group_id" : requset['group_id']
}
self.reqdata['msgdata'] = {
"raw_msg" : requset['raw_message'],
"msg" : requset['message']
}
elif requset["post_type"] == "notice" :
self.reqmeta['type'] = "notice"
self.reqdata['type'] = requset["notice_type"]
elif requset['post_type'] == "request" :
self.reqmeta['type'] = "request"
self.reqdata['type'] = requset['request_type']
else :
raise Exception
def Distribute(self) :
replydata, replymeta = {}, {}
logstr = ''' DEBUG DATA ::::
User : {}
Message : {}
Type : {}
'''
print("DEBUG :: Distributing")
# try :
# print(logstr.format(reqdata['msgmeta']['msgsender'], reqdata['msgdata']['msg'], reqdata['msgmeta']['msgtype']))
# except Exception(e) :
# print(e)
if self.reqdata['msgmeta']['msgtype'] == "private" :
if self.reqdata['msgmeta']['subtype'] != "friend" :
replydata['msg'] = replyer.talk_to_unknown(self.reqdata['msgmeta']['msgsender'])
else :
replydata['msg'] = replyer.talk_to_friend(
self.reqdata['msgdata']['msg'],
self.reqdata['msgmeta']['msgsender'],
"friend"
)
replymeta['type'] = self.reqdata['type']
replymeta['sender'] = self.reqdata['msgmeta']['msgsender']
elif self.reqdata['msgmeta']['msgtype'] == 'group' :
if "[CQ:at,qq={}]".format(bot_qq) in self.reqdata['msgdata']['raw_msg'] :
try :
self.reqdata['msgdata']['msg'] = self.reqdata['msgdata']['msg'].split(" ", 1)[1]
replydata['msg'] = replyer.talk_to_friend(
self.reqdata['msgdata']['msg'],
self.reqdata['msgmeta']['msgsender'],
"friend"
)
except :
replydata['msg'] = "要和我说话嘛?先@我然后就可以说了哦~"
else :
replydata['msg'] = replyer.talk_to_friend(
self.reqdata['msgdata']['msg'],
self.reqdata['msgmeta']['msgsender'],
"group"
)
replymeta['type'] = self.reqdata['type']
replymeta['group_id'] = self.reqdata['msgmeta']['group_id']
if replydata['msg'] != None :
return replydata, replymeta
else :
return None