import requestsdef get_group(id): response = requests.post('http://127.0.0.1:5700/get_group_member_list?group_id='+str(id)).json() for i in response['data']: if(i['card']!=''): print(i['card']+str(i['user_id'])) else: print(i['nickname']+str(i['user_id']))
直接调用即可(群号随便用一个)
get_group(QQ群号)
会打印出所有群成员的群昵称(未编辑群昵称的打印QQ昵称)和QQ号。
3、接收上报的事件
下面这个代码命名为receive.py,之后方便调用。
这个返回的是事件的上报信息,包括接收到的信息、加好友请求等等。
import socketimport jsonListenSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)ListenSocket.bind(('127.0.0.1', 5701))ListenSocket.listen(100)HttpResponseHeader = '''HTTP/1.1 200 OKContent-Type: text/html'''def request_to_json(msg): for i in range(len(msg)): if msg[i]=="{" and msg[-1]=="/n": return json.loads(msg[i:]) return None#需要循环执行,返回值为json格式def rev_msg():# json or None Client, Address = ListenSocket.accept() Request = Client.recv(1024).decode(encoding='utf-8') rev_json=request_to_json(Request) Client.sendall((HttpResponseHeader).encode(encoding='utf-8')) Client.close() return rev_json
4、实现简单的自动回复
需要写一个whil循环一直接收返回的rev,然后根据字段里面的信息做出回应。
下面的代码需要改一处地方,改为你机器人的QQ号。
from receive import rev_msgimport socketimport requestsimport randomwhile True: try: rev = rev_msg() print(rev) if rev == None: continue except: continue if rev["post_type"] == "message": #print(rev) #需要功能自己DIY if rev["message_type"] == "private": #私聊 if rev['raw_message']=='在吗': qq = rev['sender']['user_id'] send_msg({'msg_type':'private','number':qq,'msg':'我在'}) elif rev["message_type"] == "group": #群聊 group = rev['group_id'] if "[CQ:at,qq=机器人的QQ号]" in rev["raw_message"]: if rev['raw_message'].split(' ')[1]=='在吗': qq=rev['sender']['user_id'] send_msg({'msg_type':'group','number':group,'msg':'[CQ:poke,qq={}]'.format(qq)}) else: continue else: # rev["post_type"]=="meta_event": continue