Python 如何操作微信

1、给文件传输助手发一条消息
import itchat itchat.auto_login(enableCmdQR=True) # 这里需要你人工手机扫码登录
itchat.send('Hello, 文件助手', toUserName='filehelper')
2、回复发给自己的文本消息
import itchat @itchat.msg_register(itchat.content.TEXT)
def text_replay(msg):
return msg.text # 人家说啥你回复啥。。。 itchat.auto_login()
itchat.run()
3、群发助手
import itchat
import time itchat.auto_login(hotReload=True, enableCmdQR=True) SINCERE_WISH = u"祝%s感恩节快乐!" riend_list = itchat.get_friends(update=True) # 第一个是自己
friend_list = friend_list[1:]
for friend in friend_list:
# 如果是演示,把send改成print就行
# itchat.send(SINCERE_WISH % (friend['DisplayName'] or friend['NickName']), friend['UserName'])
print(SINCERE_WISH % (friend['DisplayName'] or friend['NickName']))
time.sleep(3)
4、好友删除检测
"""有时候我们会想知道某个好友有没有删除自己或者把自己拉入黑名单。 这一操作使用itchat也会变的非常简单。 原理的话,在于将好友拉入群聊时,非好友和黑名单好友不会被拉入群聊。 所以群聊的返回值中就有了好友与你关系的数据。 另外,群聊在第一次产生普通消息时才会被除创建者以外的人发现的(系统消息不算普通消息)。 这样,就可以隐蔽的完成好友检测
""" import itchat CHATROOM_NAME = 'friend'
CHATROOM = None
HELP_MSG = u'''\
好友状态监测
* 发送名片将会返回好友状态
* 请确有名为%s的未使用的群聊
* 并将该群聊保存到通讯录
* 调用频率存在一定限制\
''' % CHATROOM_NAME
CHATROOM_MSG = u'''\
无法自动创建群聊,请手动创建
确保群聊名称为%s
请不要使用已经使用过的群聊
创建后请将群聊保存到通讯录\
''' % CHATROOM_NAME def get_chatroom():
global CHATROOM
if CHATROOM is None:
itchat.get_chatrooms(update=True)
chatrooms = itchat.search_chatrooms(CHATROOM_NAME)
if chatrooms:
return chatrooms[0]
else:
r = itchat.create_chatroom(itchat.get_friends()[1:4], topic=CHATROOM_NAME)
if r['BaseResponse']['ErrMsg'] == '':
CHATROOM = {'UserName': r['ChatRoomName']}
return CHATROOM
else:
return CHATROOM
def get_friend_status(friend):
ownAccount = itchat.get_friends(update=True)[0]
if friend['UserName'] == ownAccount['UserName']:
return u'检测到本人账号。'
elif itchat.search_friends(userName=friend['UserName']) is None:
return u'该用户不在你的好友列表中。'
else:
chatroom = CHATROOM or get_chatroom()
if chatroom is None: return CHATROOM_MSG
r = itchat.add_member_into_chatroom(chatroom['UserName'], [friend])
if r['BaseResponse']['ErrMsg'] == '':
status = r['MemberList'][0]['MemberStatus']
itchat.delete_member_from_chatroom(chatroom['UserName'], [friend])
return { 3: u'该好友已经将你加入黑名单。',
4: u'该好友已经将你删除。', }.get(status,
u'该好友仍旧与你是好友关系。')
else:
return u'无法获取好友状态,预计已经达到接口调用限制。' @itchat.msg_register(itchat.content.CARD)
def get_friend(msg):
if msg['ToUserName'] != 'filehelper': return
friendStatus = get_friend_status(msg['RecommendInfo'])
itchat.send(friendStatus, 'filehelper') itchat.auto_login(True)
itchat.send(HELP_MSG, 'filehelper')
itchat.run()
5、微信播放音乐
"""
这是一个通过微信控制电脑播放音乐的小项目,那么主要就是三个功能: 输入“帮助”,显示帮助 输入“关闭”,关闭音乐播放 * 输入具体歌名,进入歌曲的选择
"""
import os import itchat
from NetEaseMusicApi import interact_select_song HELP_MSG = """\
欢迎使用微信网易云音乐
帮助:显示帮助
关闭:关闭歌曲
歌名:按照引导播放音乐
""" with open('stop.mp3', 'w') as f:
pass def close_music():
os.startfile('stop.mp3') @itchat.msg_register(itchat.content.TEXT)
def music_player(msg):
if msg['ToUserName'] != 'filehelper':
return
if msg['Text'] == u'关闭':
close_music()
itchat.send(u'音乐已关闭', 'filehelper')
if msg['Text'] == u'帮助':
itchat.send(HELP_MSG, 'filehelper')
else:
itchat.send(interact_select_song(msg['Text']), 'filehelper') itchat.auto_login(True)
itchat.send(HELP_MSG, 'filehelper')
itchat.run()
6、实现微信消息的获取
import itchat
"""
图片对应itchat.content.PICTURE
语音对应itchat.content.RECORDING
名片对应itchat.content.CARD TEXT = 'Text'
MAP = 'Map'
CARD = 'Card'
NOTE = 'Note'
SHARING = 'Sharing'
PICTURE = 'Picture'
RECORDING = VOICE = 'Recording'
ATTACHMENT = 'Attachment'
VIDEO = 'Video'
FRIENDS = 'Friends'
SYSTEM = 'System'
"""
@itchat.msg_register(itchat.content.TEXT)
def print_content(msg):
print(msg['Text'])
itchat.auto_login()
itchat.run()
7、实现微信消息的发送
import itchat
"""例子将会将文本消息原封不动的返回"""
@itchat.msg_register(itchat.content.TEXT)
def print_content(msg):
return msg['Text'] itchat.auto_login()
itchat.run()
8、最简单的与图灵机器人的交互
import requests
import itchat KEY = '8edce3ce905adbb965e6b35c3834d' def get_response(msg):
# 这里我们就像在“3. 实现最简单的与图灵机器人的交互”中做的一样
# 构造了要发送给服务器的数据
apiUrl = 'http://www.tuling123.com/openapi/api'
data = {
'key': KEY,
'info': msg,
'userid': 'wechat-robot',
}
try:
r = requests.post(apiUrl, data=data).json()
# 字典的get方法在字典没有'text'值的时候会返回None而不会抛出异常
return r.get('text')
# 为了防止服务器没有正常响应导致程序异常退出,这里用try-except捕获了异常
# 如果服务器没能正常交互(返回非json或无法连接),那么就会进入下面的return
except:
# 将会返回一个None
return # 这里是我们在“1. 实现微信消息的获取”中已经用到过的同样的注册方法
@itchat.msg_register(itchat.content.TEXT)
def tuling_reply(msg):
# 为了保证在图灵Key出现问题的时候仍旧可以回复,这里设置一个默认回复
defaultReply = 'I received: ' + msg['Text']
# 如果图灵Key出现问题,那么reply将会是None
reply = get_response(msg['Text'])
# a or b的意思是,如果a有内容,那么返回a,否则返回b
# 有内容一般就是指非空或者非None,你可以用`if a: print('True')`来测试
return reply or defaultReply # 为了让实验过程更加方便(修改程序不用多次扫码),我们使用热启动
itchat.auto_login(hotReload=True)
itchat.run()
Python 如何操作微信的更多相关文章
- phantomjs + python 打造一个微信机器人
phantomjs + python 打造一个微信机器人 1.前奏 媳妇公司不能上网,但经常需要在公众号上找一些文章做一些参考,需要的时候就把文章链接分享给我,然后我在浏览器打开网页,一点点复制过 ...
- 用Python代码实现微信跳一跳作弊器
最近随着微信版本的更新,在进入界面有个跳一跳的小游戏,在网上看到技术篇教你用Python来玩微信跳一跳 ( 转载自 " 工科给事中的技术博客 " ) 本文旨在总结,技术全靠大神完成 ...
- Python flask构建微信小程序订餐系统
第1章 <Python Flask构建微信小程序订餐系统>课程简介 本章内容会带领大家通览整体架构,功能模块,及学习建议.让大家在一个清晰的开发思路下,进行后续的学习.同时领着大家登陆ht ...
- Python玩转微信小程序
用Python玩转微信 Python玩转微信 大家每天都在用微信,有没有想过用python来控制我们的微信,不多说,直接上干货! 这个是在 itchat上做的封装 http://itchat. ...
- 用Python玩转微信
Python玩转微信 大家每天都在用微信,有没有想过用python来控制我们的微信,不多说,直接上干货! 这个是在 itchat上做的封装 http://itchat.readthedocs.io ...
- Python爬取微信小程序(Charles)
Python爬取微信小程序(Charles) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90045204 一.前言 最近需要获取微信小 ...
- Python中操作mysql的pymysql模块详解
Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...
- Python 字符串操作
Python 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) 去空格及特殊符号 s.strip() .lstrip() .rstrip(',') 复制字符 ...
- Python目录操作
Python目录操作 os和os.path模块os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回但前目录('.') ...
随机推荐
- Ubuntu下配置IP地址
17.10版本之前: Ubuntu的网卡配置文件跟CentOS的不一样,Ubuntu的网卡配置文件是/etc/network/interfaces.我们用vi /etc/network/interfa ...
- vue element-ui父列表和子列表同时出现时的bug
在项目中遇到这样的问题 当第一个父列表下的子列表选择了1,切换到第二个父列表的时候,也会默认选择1 我最开始是计划通过修改子列表的default-active为-1,结果不行 后来发现出现这个问题的原 ...
- BZOJ2301/LG2522 「HAOI2011」Problem B 莫比乌斯反演 数论分块
问题描述 BZOJ2301 LG2522 积性函数 若函数 \(f(x)\) 满足对于任意两个最大公约数为 \(1\) 的数 \(m,n\) ,有 \(f(mn)=f(m) \times f(n)\) ...
- Redux Class(immutable Record)引入的必要性 && Navigation引入方式
我的意见 和大家讨论一下几个问题 1. 项目里面没有用class规定的请求数据结构,调试数据的时候无法从前端获取请求的数据格式,要看后端接口,增加了调试的难度.我们以前会用immutable Reco ...
- 21-django-pure-pagination分页
一.django-pure-pagination分页 github上的描述(django-pure-pagination provides advanced pagination features a ...
- vs 2019 自带 反编译 与 Reflector 反编译工具比较
都是一样的 但是要看自己写的 反编译代码 还是得去 Reflector
- sql server判断表存在
在创建表.更改表结构.删除表或对表进行什么操作之前,一个比较严谨的做法是先判断该表是否已经存在. 在SQL Server中判断一个表是否存在,有两个方法,下面以diso表为例. 方法1 from sy ...
- Python调用Redis
#!/usr/bin/env python # -*- coding:utf-8 -*- # ************************************* # @Time : 2019/ ...
- Spring注解式AOP面向切面编程.
1.AOP指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式.aop底层是动态代理. package com.bie.config; import org.aspectj.lan ...
- spring boot项目记录--日志处理
微信点餐用到的日志框架:slf4j(门面)+logback(框架) @RunWith(SpringRunner.class) @SpringBootTest @Slf4j public class L ...