大家好,今天我们要学习的是如何使用Python向微信发送消息。这个技能不仅可以帮助你在自动化任务中与人交流,还可以用来做各种有趣的小项目,比如天气提醒、股票更新等。
安装必要的库
首先,我们需要安装一些必要的库。这里我们主要使用 itchat 库,它是一个开源的微信个人号接口,可以帮助我们轻松地发送和接收微信消息。
pip install itchat
登录微信
使用 itchat 登录微信非常简单。只需要几行代码就可以实现:
import itchat
# 登录微信
itchat.auto_login(hotReload=True)
auto_login(hotReload=True):这个函数会生成一个二维码,扫描后即可登录。hotReload=True 表示保持登录状态,这样下次运行时就不需要重新扫码了。
获取好友列表
登录成功后,我们可以获取好友列表,以便知道可以向谁发送消息。
# 获取好友列表
friends = itchat.get_friends(update=True)
# 打印好友列表
for friend in friends:
print(friend['NickName'])
- get_friends(update=True):获取好友列表,update=True 表示强制更新好友列表。
- friend['NickName']:好友的昵称。
发送文本消息
接下来,我们来看看如何向好友发送文本消息。假设我们要给一个昵称为 "朋友A" 的好友发送消息:
# 查找好友
friend = itchat.search_friends(name='朋友A')[0]
# 发送消息
itchat.send_msg('你好,这是来自Python的消息!', toUserName=friend['UserName'])
- search_friends(name='朋友A'):根据昵称搜索好友,返回一个列表,取第一个元素。
- send_msg(message, toUserName):发送消息,message 是要发送的内容,toUserName 是接收者的用户ID。
发送图片和文件
除了文本消息,我们还可以发送图片和文件。这里以发送图片为例:
# 发送图片
itchat.send_image('path/to/your/image.jpg', toUserName=friend['UserName'])
send_image(fileDir, toUserName):发送图片,fileDir 是图片的路径,toUserName 是接收者的用户ID。
接收消息
有时候我们不仅需要发送消息,还需要接收消息并做出响应。itchat 提供了消息监听的功能:
@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
# 打印接收到的消息
print(f"收到消息:{msg['Text']},来自:{msg['FromUserName']}")
# 回复消息
itchat.send_msg('我收到了你的消息!', toUserName=msg['FromUserName'])
# 运行消息监听
itchat.run()
- @itchat.msg_register(itchat.content.TEXT):注册一个文本消息监听器。
- text_reply(msg):处理接收到的文本消息,msg 是包含消息信息的字典。
- itchat.run():启动消息监听。
实战案例:自动天气提醒
假设我们想每天早上给好友发送一条天气预报。我们可以结合 requests 库来获取天气数据,并使用 itchat 发送消息。
首先,安装 requests 库:
pip install requests
然后编写代码:
import itchat
import requests
from datetime import datetime
# 登录微信
itchat.auto_login(hotReload=True)
# 获取天气数据
def get_weather():
url = 'https://api.openweathermap.org/data/2.5/weather?q=北京&appid=YOUR_API_KEY&units=metric'
response = requests.get(url)
data = response.json()
weather = data['weather'][0]['description']
temperature = data['main']['temp']
return f"今天的天气是 {weather},温度是 {temperature}°C"
# 发送天气提醒
def send_weather_reminder():
friend = itchat.search_friends(name='朋友A')[0]
message = get_weather()
itchat.send_msg(message, toUserName=friend['UserName'])
# 每天早上8点发送天气提醒
while True:
now = datetime.now()
if now.hour == 8 and now.minute == 0:
send_weather_reminder()
time.sleep(60) # 防止重复发送
# 保持程序运行
import time
while True:
time.sleep(1)
- get_weather():从 OpenWeatherMap API 获取天气数据。
- send_weather_reminder():发送天气提醒消息。
- while True 循环:每隔一秒钟检查当前时间,如果时间是早上8点整,则发送天气提醒。
总结
今天我们一起学习了如何使用Python向微信发送消息。我们从安装库、登录微信、获取好友列表、发送文本消息、发送图片和文件、接收消息,到最后的实战案例——自动天气提醒,一步步掌握了这些技能。