如何用 Python 向微信發(fā)送消息
大家好,今天我們要學(xué)習(xí)的是如何使用Python向微信發(fā)送消息。這個技能不僅可以幫助你在自動化任務(wù)中與人交流,還可以用來做各種有趣的小項目,比如天氣提醒、股票更新等。
安裝必要的庫
首先,我們需要安裝一些必要的庫。這里我們主要使用 itchat 庫,它是一個開源的微信個人號接口,可以幫助我們輕松地發(fā)送和接收微信消息。
pip install itchat
登錄微信
使用 itchat 登錄微信非常簡單。只需要幾行代碼就可以實現(xiàn):
import itchat
# 登錄微信
itchat.auto_login(hotReload=True)
auto_login(hotReload=True):這個函數(shù)會生成一個二維碼,掃描后即可登錄。hotReload=True 表示保持登錄狀態(tài),這樣下次運行時就不需要重新掃碼了。
獲取好友列表
登錄成功后,我們可以獲取好友列表,以便知道可以向誰發(fā)送消息。
# 獲取好友列表
friends = itchat.get_friends(update=True)
# 打印好友列表
for friend in friends:
print(friend['NickName'])
- get_friends(update=True):獲取好友列表,update=True 表示強制更新好友列表。
- friend['NickName']:好友的昵稱。
發(fā)送文本消息
接下來,我們來看看如何向好友發(fā)送文本消息。假設(shè)我們要給一個昵稱為 "朋友A" 的好友發(fā)送消息:
# 查找好友
friend = itchat.search_friends(name='朋友A')[0]
# 發(fā)送消息
itchat.send_msg('你好,這是來自Python的消息!', toUserName=friend['UserName'])
- search_friends(name='朋友A'):根據(jù)昵稱搜索好友,返回一個列表,取第一個元素。
- send_msg(message, toUserName):發(fā)送消息,message 是要發(fā)送的內(nèi)容,toUserName 是接收者的用戶ID。
發(fā)送圖片和文件
除了文本消息,我們還可以發(fā)送圖片和文件。這里以發(fā)送圖片為例:
# 發(fā)送圖片
itchat.send_image('path/to/your/image.jpg', toUserName=friend['UserName'])
send_image(fileDir, toUserName):發(fā)送圖片,fileDir 是圖片的路徑,toUserName 是接收者的用戶ID。
接收消息
有時候我們不僅需要發(fā)送消息,還需要接收消息并做出響應(yīng)。itchat 提供了消息監(jiān)聽的功能:
@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
# 打印接收到的消息
print(f"收到消息:{msg['Text']},來自:{msg['FromUserName']}")
# 回復(fù)消息
itchat.send_msg('我收到了你的消息!', toUserName=msg['FromUserName'])
# 運行消息監(jiān)聽
itchat.run()
- @itchat.msg_register(itchat.content.TEXT):注冊一個文本消息監(jiān)聽器。
- text_reply(msg):處理接收到的文本消息,msg 是包含消息信息的字典。
- itchat.run():啟動消息監(jiān)聽。
實戰(zhàn)案例:自動天氣提醒
假設(shè)我們想每天早上給好友發(fā)送一條天氣預(yù)報。我們可以結(jié)合 requests 庫來獲取天氣數(shù)據(jù),并使用 itchat 發(fā)送消息。
首先,安裝 requests 庫:
pip install requests
然后編寫代碼:
import itchat
import requests
from datetime import datetime
# 登錄微信
itchat.auto_login(hotReload=True)
# 獲取天氣數(shù)據(jù)
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"
# 發(fā)送天氣提醒
def send_weather_reminder():
friend = itchat.search_friends(name='朋友A')[0]
message = get_weather()
itchat.send_msg(message, toUserName=friend['UserName'])
# 每天早上8點發(fā)送天氣提醒
while True:
now = datetime.now()
if now.hour == 8 and now.minute == 0:
send_weather_reminder()
time.sleep(60) # 防止重復(fù)發(fā)送
# 保持程序運行
import time
while True:
time.sleep(1)
- get_weather():從 OpenWeatherMap API 獲取天氣數(shù)據(jù)。
- send_weather_reminder():發(fā)送天氣提醒消息。
- while True 循環(huán):每隔一秒鐘檢查當前時間,如果時間是早上8點整,則發(fā)送天氣提醒。
總結(jié)
今天我們一起學(xué)習(xí)了如何使用Python向微信發(fā)送消息。我們從安裝庫、登錄微信、獲取好友列表、發(fā)送文本消息、發(fā)送圖片和文件、接收消息,到最后的實戰(zhàn)案例——自動天氣提醒,一步步掌握了這些技能。