自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

利用Python制作屬于自己的微信小客服

開發(fā) 后端
由于要以微信作一個(gè)某學(xué)習(xí)網(wǎng)站的登陸途徑,用小程序就又有一些額外的花費(fèi),所以想以微信聊天窗口做些文章,就在網(wǎng)上找了很多關(guān)于微信機(jī)器人的方法,大多數(shù)都是用的老舊并且已經(jīng)失效的wxpy,沒辦法了,放棄嗎?

[[350138]]

 由于要以微信作一個(gè)某學(xué)習(xí)網(wǎng)站的登陸途徑,用小程序就又有一些額外的花費(fèi),所以想以微信聊天窗口做些文章,就在網(wǎng)上找了很多關(guān)于微信機(jī)器人的方法,大多數(shù)都是用的老舊并且已經(jīng)失效的wxpy,沒辦法了,放棄嗎?

整體思路:利用自動(dòng)化測試庫達(dá)到預(yù)期效果。

運(yùn)行環(huán)境:PyCharm Python

碼字流程

  • 獲取微信的PID
  • 連接到微信
  • 微信的一些基本功能
  • 獲取用戶發(fā)來的消息獲取聊天信息用戶在聊天界面找到某個(gè)用戶搜索某個(gè)用戶向某個(gè)用戶發(fā)送文本信息刪除某個(gè)用戶
  • 微信的一些額外功能
  • 修改備注添加指定申請好友一鍵添加所有申請好友發(fā)送圖片至指定用戶接收超級用戶指令,處理相關(guān)任務(wù)接收普通用戶指令,回復(fù)相關(guān)內(nèi)容一鍵刪除所有好友掉線通知超級用戶掉線自動(dòng)重登對接其他接口,完成相關(guān)任務(wù)收藏信息自動(dòng)收款判斷金額并通知超級用戶對接數(shù)據(jù)庫,判斷用戶是否在使用該功能的期限內(nèi)一鍵通知信息至好友指定好友消息免打擾群踢出成員轉(zhuǎn)發(fā)信息發(fā)送收藏中的內(nèi)容至用戶發(fā)送本地文件至用戶

 

[[350139]]

  

獲取微信的PID

這里用到了psutil庫,大概意思是獲取所有的進(jìn)程,遍歷挑選出微信的進(jìn)程ID

  1. #!/usr/bin/env python 
  2. # -*- coding:utf-8 -*- 
  3. # Author:smart_num_1 
  4. # Blog:https://blog.csdn.net/smart_num_1 
  5. from psutil import process_iter 
  6. def get_pid(): 
  7.     PID = process_iter() 
  8.     name = '' 
  9.     pid_num = 0 
  10.     for pid_temp in PID: 
  11.         pid_dic = pid_temp.as_dict(attrs = ['pid','name']) 
  12.         if pid_dic ['name'] == 'WeChat.exe'
  13.             name = pid_dic ['name'
  14.             pid_num = pid_dic ['pid'
  15.             break 
  16.     if name =='WeChat.exe'
  17.         return pid_num 
  18.     else : 
  19.         return False 

連接到微信

  1. # 創(chuàng)建一個(gè)實(shí)例對象,Pywinauto中backend有兩種:win32和uia,默認(rèn)為win32??墒褂胹py++和Inspect工具判斷backend適合寫哪種。在這里微信為'uia' 
  2. self.app = Application(backend = 'uia'
  3.  
  4. # 將 app 連接到已經(jīng)登陸成功的微信,這里可以用進(jìn)程ID、句柄、以及程序路徑進(jìn)行連接,此處采用PID 
  5. self.app.connect(process = PID ) 
  6.  
  7. # 定位到微信窗口 
  8. self.win = app[u'微信'

微信的一些基本功能

獲取用戶發(fā)來的消息

  1. def get_text(self): 
  2.     data = '' 
  3.     try: 
  4.         data = self.win.Edit2.get_value() 
  5.         with open('./temporary_text','w',encoding = 'utf-8'as f: 
  6.             f.write(data) 
  7.     except
  8.         pass 
  9.     return data #line:4 

獲取聊天信息用戶

  1. def get_users(self): 
  2.     user_lis = [] 
  3.     try: 
  4.         # 定位到信息列表,獲取這個(gè)對象 
  5.         conunacation = self.win.child_window(title = "會(huì)話",control_type = "List"
  6.         # 定位到這個(gè)位置 
  7.         position = conunacation.rectangle() 
  8.         mouse.click(button = 'left',coords = (position.left + 100 ,position.top + 10 )) 
  9.          
  10.         # 定位到列表的位置,取他的子控件,至于為何,列表是一個(gè)總的容器,而每個(gè)用戶都存在這個(gè)容器中,固取子控件 
  11.         users = conunacation.children() 
  12.         for user in users: 
  13.             user_lis.append(user.window_text()) 
  14.     except
  15.         pass 
  16.     return user_lis 

在聊天界面找到某個(gè)用戶

  1. def find_user (self ,user = ''): 
  2.     # 找到指定名稱用戶的按鈕 
  3.     user = self.win.child_window(title = user, control_type = 'Text'
  4.      
  5.     # 定位到該按鈕,獲取它的相對位置 
  6.     position = user .rectangle() 
  7.      
  8.     # 模擬點(diǎn)擊,coords 是點(diǎn)擊的位置 
  9.     mouse.click (button = 'left',coords = (position.left ,position.top)) 
  10.     sleep(0.3) 

搜索某個(gè)用戶

  1. def search_ueser (self ,user_name = ''): 
  2.     # 找控件的方法如上個(gè)函數(shù)中介紹,此處不再繼續(xù)介紹 
  3.     search = self.win.child_window(title = "搜索", control_type = "Edit"
  4.     position = search.rectangle() 
  5.     mouse.click(button = 'left', coords = (position.left + 100 ,position.top + 10)) 
  6.     sleep(0.1) 
  7.     mouse.click(button = 'left', coords = (position.left + 100 ,position.top + 10)) 
  8.      
  9.     # 自帶的模塊,輸入該用戶的名字 
  10.     self.win.type_keys(user_name) 
  11.     sleep(0.6) 
  12.     self.win.type_keys('{ENTER}'

向某個(gè)用戶發(fā)送文本信息

  1. def send_message (self ,texts =''):#line:64 
  2.     for text in texts .split ('\n'):#line:65 
  3.         # 這里用到了另外的一個(gè)庫,因?yàn)橛胮ywinauto 自帶的輸入模塊,表情,空格等是自動(dòng)略過或者識別不出,達(dá)不到按原有縮進(jìn)樣式縮進(jìn)的效果 
  4.         if text.isalnum(): 
  5.             copy(text.strip()) 
  6.             hotkey ('ctrl''v'
  7.         else
  8.             self.win.type_keys(text) 
  9.         sleep(0.1) 
  10.         hotkey ('ctrl''enter')#line:67 
  11.     hotkey ('enter')#line:68 

刪除某個(gè)用戶

  1. def delete_user(self ,user =''): 
  2.     user = self.win.child_window(title = user, control_type = 'Text'
  3.     position = user.rectangle() 
  4.     mouse.click(button = 'right', coords = (position.left - 40 ,position.top)) 
  5.     # 這里右鍵會(huì)彈出菜單,直接點(diǎn)擊該菜單中的刪除聊天選項(xiàng) 
  6.     self.app.Menu ['刪除聊天'].click_input('left'

微信的一些額外功能

由于此程序的使用原因,牽扯到項(xiàng)目的一些敏感內(nèi)容,不方便將這些功能全部詳細(xì)說出,只是大概寫一下已經(jīng)實(shí)現(xiàn)了哪些內(nèi)容,如有人需要相關(guān)思路,可聯(lián)系微信:Be_a_luck_dog

 

  • 修改備注
  • 添加指定申請好友
  • 一鍵添加所有申請好友
  • 發(fā)送圖片至指定用戶
  • 接收超級用戶指令,處理相關(guān)任務(wù)
  • 接收普通用戶指令,回復(fù)相關(guān)內(nèi)容
  • 一鍵刪除所有好友
  • 掉線通知超級用戶
  • 掉線自動(dòng)重登
  • 對接其他接口,完成相關(guān)任務(wù)
  • 收藏信息
  • 自動(dòng)收款判斷金額并通知超級用戶
  • 對接數(shù)據(jù)庫,判斷用戶是否在使用該功能的期限內(nèi)
  • 一鍵通知信息至好友
  • 指定好友消息免打擾
  • 群踢出成員
  • 轉(zhuǎn)發(fā)信息
  • 發(fā)送收藏中的內(nèi)容至用戶
  • 發(fā)送本地文件至用戶

 

 

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2023-03-26 08:04:08

微信公眾號接口

2018-01-29 20:12:11

python翻譯命令行

2025-03-03 00:25:00

DeepSeek微信公眾號

2017-12-25 05:08:53

智能客服深度學(xué)習(xí)人工智能

2022-01-11 21:06:45

微信企業(yè)微信移動(dòng)應(yīng)用

2021-04-16 11:27:16

Python表情微信

2022-01-11 20:50:12

微信企業(yè)微信移動(dòng)應(yīng)用

2022-11-14 07:30:37

2014-11-28 16:32:12

靈云

2014-11-17 11:13:17

易維

2021-07-19 22:31:39

微信微信客服移動(dòng)應(yīng)用

2016-05-24 14:43:10

互聯(lián)網(wǎng)+

2017-02-06 13:32:12

微信小程序思想

2021-05-26 10:21:31

Python音樂軟件包

2016-11-19 18:06:44

微信小程序張小龍

2013-06-07 09:42:45

微信移動(dòng)應(yīng)用營銷工具

2013-05-22 10:58:09

微信公眾賬號微信

2014-08-26 10:05:37

框架開發(fā)AngularJS

2017-06-09 10:40:00

微信小程序架構(gòu)分析

2016-10-20 21:02:12

微信小程序javascript
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號