我用Python寫了一款微信定時發送!工作總結就由Python來發送了!

需求背景

「有沒有那麼一款可以定時群發的軟件?」

「自己動手,豐衣足食」

「此話怎講?」

「人生苦短,我用 python 啊!」

。。。。。

當然這個方案可以適用於在微信上:每天定時給特定的人發送「晚安」,過年過節把祝福群體發送,以及回覆許多重複而又有固定問題的答案的朋友。

什麼是 Python?

私信小編001 獲取此案例所有代碼以及數十套PDF

!@

Python 是一種計算機程序設計語言。你可能已經聽說過很多種流行的編程語言,比如非常難學的 C 語言,非常流行的 Java 語言,適合初學者的 Basic 語言,適合網頁編程的 JavaScript 語言等等。

選 Python 有什麼好處?

Python 是一種相當高級的語言, 極大的提高了遊標卡尺

的銷量,是一種讓遊標卡尺脫銷的語言(霧)。完成同一個任務,C 語言要寫 1000 行代碼,Java 只需要寫 100 行,而 Python 可能只要 20 行。對於初學者和完成普通任務,Python 語言是非常簡單易用的。連 Google、NASA 都在大規模使用 Python,你就不用擔心學了會沒用!

用 Python 可以做什麼?

可以做日常任務,比如自動備份你的 MP3;可以做網站,很多著名的網站包括 YouTube 就是 Python 寫的;可以做網絡遊戲的後臺,很多在線遊戲的後臺都是 Python 開發的。總之就是能幹很多很多事啦。

Python 當然也有不能幹的事情,比如寫操作系統,這個只能用 C 語言寫;寫手機應用,只能用 Swift/Objective-C(針對 iPhone)和 Java(針對 Android);寫 3D 遊戲,最好用 C 或 C++。

我對編程一竅不通怎麼辦?

即便你是小白用戶 ,只要你滿足:

會使用電腦,但從來沒寫過程序;

還記得初中數學學的方程式和一點點代數知識;

能抽出半個小時閱讀實踐。

就能輕鬆完成,你還在等什麼!

準備階段

我主要使用的系統環境是Windows Python3.7,但它同樣適用於Mac和各種Linux/Unix系統上,本文內容主要以Windows環境展開

Python的安裝

目前,Python有兩個版本,一個是2.x版,一個是3.x版,這兩個版本是不兼容的。由於3.x版越來越普及,我們的教程將以最新的Python 3.7版本為基礎。請確保你的電腦上安裝的Python版本是最新的3.7.x,這樣,你才能無痛學習這個教程。

根據你的Windows版本(64位還是32位)從Python的官方網站(https://www.python.org/)下載Python 3.7對應的64位安裝程序或32位安裝程序

下載完成後運行下載的EXE安裝包,特別要注意勾上Add Python 3.7 to PATH

然後點“Install Now”即可完成安裝。

運行Python

安裝完成後,打開命令提示符窗口,敲入python驗證是否安裝成功。

可使用組合鍵Win+R打開運行窗口,然後輸入cmd回車打開命令提示符窗口。


我用Python寫了一款微信定時發送!工作總結就由Python來發送了!


看到以上畫面說明Python安裝成功。

>>>就表示我們已經在Python交互式環境中了,可以輸入任何Python代碼,回車後會立刻得到執行結果。

現在,輸入exit()並回車,就可以退出Python交互式環境(直接關掉命令行窗口也可以)。

如果遇到提示

‘python’ 不是內部或外部命令,也不是可運行的程序或批處理文件。

C:> python

’python’is not recognized as an internal or external command,

operable program or batch file.

說明環境變量設定出現問題,就要手動把python.exe所在的路徑添加到Path中,當然也可以重新運行Python安裝程序,重複上述步驟,務必記得勾上Add Python 3.7 to PATH。

安裝wxpy

在Python中,安裝使用第三方模塊通常能夠極大的提升工作的效率和簡化複雜程度,本文選擇wxpy庫,它可以通過授權登陸網頁版微信,實現各種微信個人號的自動化操作。

wxpy的API文檔:

http://wxpy.readthedocs.io/zh/latest/index.html

wxpy的項目主頁:

https://github.com/youfou/wxpy

安裝過程是通過包管理工具pip完成的。請確保在安裝時勾選了pip和Add python.exe to Path

在命令提示符窗口下嘗試運行pip,如果Windows提示未找到命令,可以重新運行安裝程序添加pip。

  • 從 PYPI 官方源下載安裝 (在國內可能比較慢或不穩定):

pip install wxpy

C:>pip install wxpy

  • 從豆瓣 PYPI 鏡像源下載安裝 (推薦國內用戶選用):

pip install wxpy -i “https://pypi.doubanio.com/simple/“

實現代碼

本部分參照API文檔介紹一些基本使用方法。

程序中寫上這兩行並運行,會通過圖片掃描二維碼並登錄微信。

# 導入模塊
from wxpy import *
# 初始化機器人,掃碼登陸
bot = Bot()

如果你認為每次都需要掃描二維碼很麻煩,可以啟用緩存,來保存自己的登錄狀態:

bot = Bot(console_qr=True, cache_path=True)

發送消息

首先我們嘗試給自己和文件傳輸助手發消息

# 給機器人自己發送消息
bot.self.send('Hello World!')
# 給文件傳輸助手發送消息
bot.file_helper.send('Hello World!')

接著我們給好友發送消息,第一步先找到要發送信息的對象

# 查找暱稱為'Streetcar'的好友
my_friend = bot.friends().search(u'Streetcar')[0]

其次我們需要確定發送消息的類型與內容

# 發送文本
my_friend.send('Hello, WeChat!')
# 發送圖片
my_friend.send_image('my_picture.png')
# 發送視頻

my_friend.send_video('my_video.mov')
# 發送文件
my_friend.send_file('my_file.zip')
# 以動態的方式發送圖片
my_friend.send('@img@my_picture.png')

群發消息

可以嘗試給自己的好友發送早安(謹慎使用

my_friends = bot.friends(update=False)
my_friends.pop(0) # 除去列表中第一個元素(自己)
for i in range(120):
friend = my_friends[i]
friend.send('早上好')

運營支持

查看自己的好友數、加入群聊數、關注微信公眾號數等

# 獲取所有好友[返回列表包含Chats物件(你的所有好友,包括自己)]
t0 = bot.friends(update=False)
# 查看自己好友數(除自己)
print("我的好友數:"+str(len(t0)-1))
# 獲取所有微信群[返回列表包含Groups物件]
t1 = bot.groups(update=False)
# 查看微信群數(活躍的)
print("我的微信群聊數:"+str(len(t1)))
# 獲取所有關注的微信公眾號[返回列表包含Chats物件]

t2 = bot.mps(update=False)
# 查看關注的微信公眾號數
print("我關注的微信公眾號數:"+str(len(t2)))

當然也可以分析指定群內成員結構

# 找到群
group = ensure_one(bot.groups().search('要找的群名稱'))
# 更新群成員詳細信息
group.update_group(True)
找出所有女群員~
female_members = group.members.search(sex=FEMALE)
只想看本地的?那就加個 city 參數吧。
local_female_members = group.members.search(sex=FEMALE, city='重慶')
想一次性把她們都加為好友?
local_female_members.add_all(interval=3, verify_content='認識一下吧?')

注意設置 add_all()的 interval參數,過高的請求頻率可能導致加好友功能被短暫封鎖。

除了群成員外,bot.friends() 也有 search()方法,可用於在好友中進行搜索。

首先你需要註冊一個圖靈機器人

bot = Bot() 
tuling = Tuling(api_key='圖靈api')
print('圖靈機器人已上線')
my_friednd = bot.friends().search('Streetcar')[0]
# 如果想對所有好友實現機器人回覆把引數my_friend改成chats = [Friend]
# 使用圖靈機器人自動與指定好友聊天

@bot.register(my_friend)
def reply_my_friend(msg):
tuling.do_reply(msg)
# 進入交互式的 Python 命令行界面,並堵塞當前線程
embed()

本例的需求為每天都需要你發送指定內容到微信群內

from __future__ import unicode_literals
from threading import Timer
from wxpy import *
import random
bot = Bot(cache_path="Wechat.pkl")
# Bot 在初始化時便會執行登陸操作,需要手機掃描登陸。
# cache_path 設置當前會話的緩存路徑,並開啟緩存功能,可在短時間內避免重複掃碼
def search():
groups = bot.groups()
for group in groups:
print(group)
# 獲取微信獲取所有群聊對象並顯示,一些不活躍的群可能無法被獲取到,可通過「添加通訊錄」強制活躍
def send_news():
try:
Text=u"這裡是Python測試"
# 引號內為群發的消息內容
my_groups = bot.groups().search("誇誇群")[0]
my_groups.send(Text)
my_groups.send_file("readme.txt")
# 引號內為微信群的名稱。
group.send(Text)
group.send_file("readme.txt")
# 為了防止時間太固定,於是決定對其加上隨機數,單位為秒,1天為每86400秒

ran_int = random.randint(0,10)
t = Timer(86400+ran_int,send_news)
t.start()
except:
# 通過文件傳輸助手回饋。
bot.file_helper.send(u"今天消息發送失敗了")
if __name__ == "__main__":
search()
send_news()

小結

wxpy還能實現許多功能,感興趣的朋友可以詳細查看官方API文檔:


分享到:


相關文章: