python实现微信自动聊天
16lz
2021-01-22
# -*- coding: utf-8 -*-
''' 这一次对上一个demo进行了扩充 主要是添加了tuling机器人的自动回复以及让python进程保持且可以调试 主要还是归功于wxpy的embed()函数。。。 tulingKey需要自己申请 很简单,上网站注册一下账号就ok了 下面给出图灵网址:http://www.tuling123.com/ 然后就是wxpy的灵活使用,详情可以参照官网的API文档 网址:http://wxpy.readthedocs.io/zh/latest/index.html 然后接下来就是我写的一个小例子 主要功能有 1、单人聊天消息反馈(备注在代码里改,懒得写交互了,反正大家都懂得) 2、单人聊天消息发送(根据输入的备注,这里写了简单的交互,没写exception处理) 3、图灵自动聊天(可以通过关闭注册函数来关闭或者开启) 注意此代码不可直接复制粘贴: 1、需要自己申请tulingkey赋值 2、需要指定进程保持时候和谁通信 当然也可以自己做修改自由发挥! '''
from __future__ import unicode_literals
from wxpy import *
import requests
from threading import Timer
from tkinter import *
tulingKey = 'xxxxx'
itchat = Bot(console_qr=2,cache_path="botoo.pkl")
friend = itchat.friends().search(name = u'xxxx')
tuling = Tuling(api_key=tulingKey)
def getNews():
url = "http://open.iciba.com/dsapi/"
r = requests.get(url)
content = r.json()['content']
note = r.json()['note']
return content, note
#tuling自动回复的消息注册
def reply(msg):
return tuling.do_reply(msg)
#接受到消息后的打印
@itchat.register(msg_types=TEXT)
def printMsg(msg):
print(msg)
print('tuling自动回复消息---'+reply(msg))
#发送每日一句消息函数
def sendNews():
try:
#这里是备注print
content = getNews()
message1 = str(content[0])
message2 = str(content[1])
print('--------------今日内容:-------------\n'+message1+'\n'+message2+"\n---------------------------------")
# message3 = "进行最后一项测试embed()"
print('----当前friend对象为:'+str(friend))
for index,item in enumerate(friend):
rightMark = True
while rightMark:
print("---------------将要发送给 "+str(item)+" ing,index="+str(index)+' 是否发送?')
order = input("-----------------请输入指令(1是2否3退出当前操作循环):")
order = int(order)
if(order == 1):
rightMark = False
item.send(message1)
item.send(message2)
print("----------消息发送成功----------------")
elif(order ==2):
rightMark = False
print("----------消息发送操作被忽略-----------")
continue
elif(order ==3):
rightMark = False
print("----------消息发送程序退出------------")
break
else:
print("-------指令错误,请重新输入!")
except:
errorMessage = "BugBugBug!"
for index,item in enumerate(friend):
item.send(errorMessage)
def sendMessage():
name = input("请输入好友备注:")
friend = itchat.friends().search(name = name)
if(len(friend)>0):
print("找寻到备注为"+name+"的好友\n"+str(friend)+"\n如果存在多个该备注好友,默认选择第一个人发送")
sendMessageByFriend(friend[0])
else:
print("未找到备注为:"+name+"的好友!")
def sendMessageByFriend(friend):
rightMark = True
while rightMark:
mess = input("------请输入您要发的信息:")
order = input("----------即将发送的信息为:"+mess+" 请选择是否发送 0是1否--------")
order = int(order)
if(order == 0):
friend.send(mess)
print("----------消息已成功发送(注意此处无catch)-------")
rightMark = False
elif(order ==1):
print("----------消息未发送--------")
rightMark = False
else:
print("---------指令错误,请重新输入!")
if __name__ == "__main__":
# sendNews()
embed()
更多相关文章
- pylogin系列之V2EX自动领币消息提醒
- Linux下多任务间通信和同步-消息队列
- 安卓消息处理机制
- JAVA实现 springMVC方式的微信接入、实现消息自动回复
- 为什么我们应该将XMPP而不是JSON用于简单(仅文本)消息传递应用程序
- Android[中级教程] 深入剖析Android消息机制
- Android消息推送接收后,通知栏的显示
- 在使用visualvm进行分析时,如何避免“Profiler代理警告:无法查找缓