import requests
def 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']))
直接調(diào)用即可(群號隨便用一個)
get_group(QQ群號)
會打印出所有群成員的群昵稱(未編輯群昵稱的打印QQ昵稱)和QQ號。
3、接收上報的事件
下面這個代碼命名為receive.py,之后方便調(diào)用。
這個返回的是事件的上報信息,包括接收到的信息、加好友請求等等。
import socket
import json
ListenSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ListenSocket.bind(('127.0.0.1', 5701))
ListenSocket.listen(100)
HttpResponseHeader = '''HTTP/1.1 200 OK
Content-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
#需要循環(huán)執(zhí)行,返回值為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、實現(xiàn)簡單的自動回復
需要寫一個whil循環(huán)一直接收返回的rev,然后根據(jù)字段里面的信息做出回應。
下面的代碼需要改一處地方,改為你機器人的QQ號。
from receive import rev_msg
import socket
import requests
import random
while 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