个人微信公众号搭建Python实现 -个人公众号搭建-处理消息和事件(14.3.4)
生活随笔
收集整理的這篇文章主要介紹了
个人微信公众号搭建Python实现 -个人公众号搭建-处理消息和事件(14.3.4)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
@
目錄
- 1.消息處理
- 2.事件處理
- 3.返回處理
- 關(guān)于作者
1.消息處理
現(xiàn)在只處理text文本消息
沒有關(guān)鍵字的就交給qingyunke機(jī)器人去應(yīng)付,這是一個(gè)免費(fèi)的對(duì)話api
從配置文件中讀取關(guān)鍵字信息,如果存在某個(gè)關(guān)鍵字就返回對(duì)應(yīng)的
返回的時(shí)候要傳之前用戶的信息,所以這里就直接把微信服務(wù)器發(fā)送過來(lái)的xml文件轉(zhuǎn)為dict傳過來(lái)
返回給用戶信息時(shí),如果是文字就不做處理的讀取配置信息的內(nèi)容
如果發(fā)現(xiàn)關(guān)鍵字對(duì)應(yīng)的信息以pic_開頭,說明返回的是圖片(這里使用了切片)
import ReturnMessage
import json
from requests import request
def Processing(xml_dict,msg_type,SET):
if msg_type == "text":
return Text(xml_dict,SET)
else:
return Others(xml_dict)
def Text(xml_dict,SET):
Content = str.lower(xml_dict.get("Content"))
Copyright = SET["MAIN"]
#使用run啟動(dòng),keyword.json對(duì)應(yīng)著run的目錄
with open(r'../resource/KeyWord.json', 'r', encoding="utf-8") as f:
KeyWord = json.load(f)
if Content in KeyWord.keys():
if KeyWord[Content][0:4] == "pic_":
return ReturnMessage.ReturnPic(xml_dict,KeyWord[Content][4:])
else:
return ReturnMessage.ReturnText(xml_dict,Copyright +"\n\n"+ KeyWord[Content])
else:
url = "http://api.qingyunke.com/api.php?key=free&appid=0&msg=%s" % Content
rep = request("get", url)
msg_ = rep.content.decode()
dict = json.loads(msg_)
return ReturnMessage.ReturnText(xml_dict,dict["content"])
def Others(xml_dict):
return ReturnMessage.ReturnException(xml_dict)
2.事件處理
這里就只處理訂閱事件,返回一個(gè)歡迎信息
import ReturnMessage
def Processing(xml_dict,Event):
if Event == "subscribe":
return Subscribe(xml_dict)
elif Event == "unsubscribe":
Unsubscribe(xml_dict)
else:
return Others(xml_dict)
def Subscribe(xml_dict):
return ReturnMessage.ReturnText(xml_dict,"歡迎訂閱")
def Unsubscribe(xml_dict):
pass
def Others(xml_dict):
return ReturnMessage.ReturnException(xml_dict)
3.返回處理
一共有三個(gè)方法,一是返回自定義文字,二是返回固定文字,三是返回圖片
這里都是查看的官方文檔去構(gòu)造的返回?cái)?shù)據(jù)
將dict轉(zhuǎn)化為xml返回給微信服務(wù)器
返回圖片的時(shí)候,是返回圖片的id(用永久素材的id)
import time
def ReturnText(xml_dict,text):
resp_dict = {
"xml":{
"ToUserName":xml_dict.get("FromUserName"),
"FromUserName":xml_dict.get("ToUserName"),
"CreateTime":int(time.time()),
"MsgType":"text",
"Content":text
}
}
return resp_dict
def ReturnException(xml_dict):
resp_dict = {
"xml":{
"ToUserName":xml_dict.get("FromUserName"),
"FromUserName":xml_dict.get("ToUserName"),
"CreateTime":int(time.time()),
"MsgType":"text",
"Content":"目前只支持文字類型"
}
}
return resp_dict
def ReturnPic(xml_dict,id):
resp_dict = {
"xml":{
"ToUserName":xml_dict.get("FromUserName"),
"FromUserName":xml_dict.get("ToUserName"),
"CreateTime":int(time.time()),
"MsgType":"image",
"Image":{"MediaId":id}
}
}
return resp_dict
關(guān)于作者
個(gè)人博客網(wǎng)站
個(gè)人GitHub地址
個(gè)人公眾號(hào):
總結(jié)
以上是生活随笔為你收集整理的个人微信公众号搭建Python实现 -个人公众号搭建-处理消息和事件(14.3.4)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 洋务运动中,洋务派创办的最大的军事工业是
- 下一篇: 联合国承认了多少个国家?