色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

200行代碼教你自制微信機器人

電子工程師 ? 來源:未知 ? 作者:胡薇 ? 2018-11-06 08:36 ? 次閱讀

1

當初決定自己寫這么個機器人有幾個原因:

1) 用一個windows客戶端工具運營公眾號,真的很局限。雖然工具的功能很強大,能自動添加好友,自動拉好友入群,關鍵字回復等等,但是有一個繞不開的點,它是一款客戶端工具,一款exe軟件。

2) 我是Mac,為了用這個工具,就要開著虛擬機去操作。

3) 為了能一直自動添加好友,邀請入群,自動回復等一系列操作,電腦就不能合上。

4) 在外面突然想到一個點,想操作群發了,GG,無能為力。

5) 其他……

2

基于以上的原因,就想著自己來一套算了。畢竟可以定制化的話,之后想要什么就很方便了,而且在服務器端掛個python服務要比開個windows 就為了掛一個exe要很多。

那么首先需要確定需求,wxRobot我是準備長期維護、迭代的,所以顯然不可能像網上那些個腳本一樣,一個文件打通關。

另外功能自定義,就需要有版本引入,先做什么,痛點是什么都需要明確。我說下自己的選擇:

1) 痛點是不能自主化的管理公眾號、微信號

2) 最急迫解決的是之前exe工具用到的功能,畢竟這也是我用這個工具的原因。那么有哪些功能呢?

群發消息

自動添加好友

邀請好友入群

關鍵字回復

3

既然是個項目,那么該有的組件一個不能少,看一下我的目錄結構,這也是我自己總結出的common structure,大家可以參考一下,如果有好的建議歡迎大佬不吝留言。

app:項目業務模塊。如果有多個模塊就添加子目錄,例如:一個網站下的博客模塊、投票模塊等。

core:核心組件。例如:數據庫組件、類-文件組件等。

doc:文檔。存放所有的文檔,一般我會有固定的幾個:CHANGELOG.md、BUGLIST.md、TODOLIST.md。

etc:配置文件。可以細分基本配置、業務配置等。

static:靜態文件。

test:單元測試。

tmp:不需要進入版本控制的東西。

utility:輔助組件。和core相輔。

4

我把業務分為兩塊,filehelper算一個,好友相關的算一個。

好友相關的好理解,諸如添加好友、自動回復、邀請入群等。filehelper是什么呢?說白了,我們除了簡單的自動回復、添加外,一定還希望做的更多吧?比如交互式指令。那這個filehelper就承擔了指令收發的角色。

所有的業務模塊都基于一個BaseHandle,這樣底層的一些單元我就可以統一管控了:

色。

classBaseHandle: def__init__(self): ''' self._meta = { 'obj':{ # 消息發送對象 'ul': [], # unlimit group 'l': [], # limit group 'r': [] # restrict }, 'reply':{ 'text': '', 'article': '', } } ''' self._usage ='' self._meta = {} self.current_cmd =None @property defusage(self): returnself._usage @property defmeta(self): returnself._meta

再來看看FileHandle這個類,這也是當前版本最豐富的模塊。這里面有兩端邏輯:1.自動更新群組信息。 2.注冊群發相關命令。

自動更新群組信息的目的是因為itchat模塊會將所有聯系人以及群組信息存儲在本地的一個pkl文件中(pickle縮寫?),如果想提升群發消息前獲取群組列表的速度,那么就應該把數據放在內存里(反正也沒多少數據),以下我把主要邏輯都羅列出來了,具體的代碼太長了,暫時就不放出來了:

classFileHelper(BaseHandle): _usage =''' ''' def__init__(self): super().__init__() self._meta = { ... } self._th_update = threading.Thread(target=self._update_meta, args=(), daemon=True) self.auto_update_groups() defauto_update_groups(self): # 自動更新群組 self._th_update.start() def_update_meta(self): ''' 初始化限時推送的群組 ''' def_filter_restrict_groups(group): # 篩選出不能群發的群組 def_filter_limit_groups(group): # 篩選出有時間限制的群組 def_filter_unlimit_group(groups, limit_groups): # 篩選出不受限制的群組 whileTrue: time.sleep(30) # 更新群組信息

注冊群發相關命令的思路就是做一個命令注冊器,因為群發消息、文章、圖片等行為類似,針對不同的用戶群組發送不同的消息體。

所以我就把注冊器的成員分成了:類型(文字、圖片),對象(時間限制群組、無限制群組),行為(群發、單發)。

被裝飾器注冊的函數就成為了某個具有單獨意義的指令了。

classFileHelper(BaseHandle): ... defupdate_cmd(self, cmd): # 更新命令,用于動態注冊函數 def_register_mass(func): @functools.wraps(func) defdecorator(self, msg, *args, **kwargs): _action, _reply, _obj = func.__name__.split('_') ifself._meta['action'][_action]: _to_user = self._meta['obj'][_obj] for_groupin_to_user: instance.send_msg(msg, _group['UserName']) time.sleep(random.randrange(0,20)) self._meta['action'][_action] =False self._current_cmd =None instance.send_msg('群發消息發送完畢', self._meta['extra']['UserName']) returndecorator @_register_mass defmass_text_ul(self, msg=None): pass @_register_mass defmass_text_l(self, msg): pass @_register_mass defmass_text_test(self, msg): pass @_register_mass defmass_article_ul(self, msg): pass @_register_mass defmass_article_l(self, msg): pass

對比著效果圖來看看:

5

接下來就是添加好友部分了,目前只支持自動接受好友,根據打招呼自動設置備注,關鍵字回復。

classFriend(BaseHandle): _usage =''' ''' def__init__(self): super().__init__() self._meta = { ... } defis_biz(self, msg): # 判斷是不是商務合作

看下效果圖:

6

講完核心代碼后,再來講下中間經歷的幾個看不到的版本吧。

最一開始就是實現功能咯,沒想很多,但是發現代碼重復太多了,邏輯都差不多,一堆代碼太丑了。優化后的代碼就是第一版中的群發注冊器函數。

接著原本的BaseHandle基類太重了,想的很好,把itchat方法都重寫在基類里,這樣就不用在其他地方調用itchat實例了,但是結果就是所有的子類都可以做同樣的動作,就變成了filehelper.send_msg(), friend.send_image()了,這樣對于同一個方法就會產生歧義了。因此就把基類里所有重寫itchat方法的函數都去了,就保留了業務代碼,并分別移到對應的類里去,而原本itchat的方法還是用itchat實例去操作。

接著關于itchat實例、FileHelper實例、Friend實例等的共享問題,容易造成重疊,重復使用、互相引用問題。解決辦法目前就是把itchat實例單獨在配置文件里初始化了,這也同時解決了上一個問題,其他業務類的實例采用單例模式,在類外面暴露一個統一的實例。

7

好了,這回是真花了功夫把這套代碼講完了,雖然還是相對簡陋了,但迫于時間關系,先發出來了。之后會繼續優化、健碩它。

今天也和一位大佬討論了下這個項目,有很多值得思考的地方。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器人
    +關注

    關注

    211

    文章

    28390

    瀏覽量

    206957
  • 代碼
    +關注

    關注

    30

    文章

    4780

    瀏覽量

    68539

原文標題:200行代碼,一行行教你自制微信機器人

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    手把手教你制作機器人

    手把手教你制作機器人
    發表于 08-12 09:52

    C51步行機器人

    C51步行機器人 內含教程和相關程序和器件清單
    發表于 07-05 18:12

    ARDUINO基礎入門,帶你進入自制智能機器人的時代

    本帖最后由 shmily53 于 2013-9-14 17:46 編輯 ARDUINO基礎入門,帶你進入自制智能機器人的時代上傳部分資料:其余的資料到網盤下載吧網盤地址:[hide]http://shmily53.400gb.com/[/hide]覺得好加下群:單片
    發表于 09-14 12:18

    有沒有diy機器人的大神~小生想定制一個機器人~有償求幫助~!!

    想送給弟弟一個生日禮物,但是自己研究了很久還是個菜鳥,達不到心里的設想,所以想求助自制機器人的大神幫忙~絕對有報酬~有意者請聯系我~機器人要求:400mm——200mm高度;人形
    發表于 09-06 12:49

    【Nanopi NEO試用體驗】【機器學習/計算機視覺/NLP進階篇】34代碼搞定機器人

    的故事。我有一個tk1,一直以來都是用nat穿透來進行控制,之前有說到,但是公眾號本身又限制較多,不想去搞,于是突發奇想,通過來交
    發表于 11-13 12:55

    聊天機器人+平臺檢測環境,方案分享啦

    聊天機器人+平臺檢測環境,方案分享回饋論壇的幫助,也順便給自己拉拉票,第一季創客作品征集大賽,求點贊!!這是鏈接,有項目介紹:http://www.1cnz.cn/project
    發表于 02-22 19:46

    智能掃地機器人解決方案

    起步較晚,隨著掃地機器人功能更完善,智能化程度更高,預計未來中國沿海發達地區掃地機器人滲透率水平會達到美國掃地機器人目前的滲透率水平。2.本文編寫目的本文主要介紹通過智能WiFi控制技術實現手機
    發表于 05-27 13:31

    控制的家庭智能機器人(附語音聊天、人臉檢測、自主巡航等)

    ,或者機器人進行一個部署。并且會報警處理一些事情,例如降溫功能,人臉檢測報警等。當用戶在家時,機器人可以為用戶播放音樂、電影、語音識別聊天等,而且還會抓取網絡新聞、發送
    發表于 09-30 14:33

    工業機器人仿真與編程

    目錄概述行走軸模型拆分行走軸模型導入仿真軟件創建行走軸機械裝置外部軸配置向導插件安裝虛擬機器人系統創建行走軸系統配置機器人安裝到行走軸行走軸運動控制文已經首發在個人公眾號:工業
    發表于 09-07 08:57

    教你在Mathematica軟件中搭建機器人的仿真環境

    完美的教程,沒有之一,收藏學習。目的   本文手把手教你在 Mathematica 軟件中搭建機器人的仿真環境,...
    發表于 09-07 09:14

    智能機器人

    關于ros智能機器人,就是一個寫智能機器人代碼的一個虛擬機,
    發表于 10-13 19:20

    DIY機器人系列:工程師自制藍光呼吸WIFI機器人

    DIY機器人系列:工程師自制藍光呼吸WIFI機器人,“Shy ”是一個采用LINUX開源系統-Openwrt制作的WIFI機器人
    發表于 08-27 09:32 ?3.3w次閱讀
    DIY<b class='flag-5'>機器人</b>系列:工程師<b class='flag-5'>自制</b>藍光呼吸WIFI<b class='flag-5'>機器人</b>

    自制不倒機器人

    源碼,原理圖自制不倒機器人,兩輪的平衡小車再次升級,給你全新的感覺自制不倒機器人,兩輪的平衡小車再次升級,給你全新的感覺
    發表于 04-14 18:07 ?14次下載

    DIY:簡簡單單自制平衡機器人

    DIY:簡簡單單自制平衡機器人
    發表于 01-18 20:40 ?25次下載

    手把手教你用Python創建機器人

    python關于開發的庫主要有itchat和wxpy,而wxpy底層是調用的itchat,所以如果你只是要使用的話建議使用wxpy庫,它比其他的庫都要優雅,更面向對象,而且深度整合了圖靈機器人和小i
    的頭像 發表于 04-28 11:16 ?3573次閱讀
    手把手<b class='flag-5'>教你</b>用Python創建<b class='flag-5'>微</b><b class='flag-5'>信</b><b class='flag-5'>機器人</b>
    主站蜘蛛池模板: 亚洲综合国产精品| 蜜芽最新域名解析网站| 成人性生交大片免费看金瓶七仙女| 亚洲中文在线偷拍| 中国午夜伦理片| 99视频这里只有精品| 最新在线黄色网址| xxx性欧美在线| 国产高清美女一级毛片久久 | 日本乱子人伦在线视频| 日韩视频在线观看| 亚洲精品国产一区二区贰佰信息网| 日日干日日操日日射| 午夜视频在线瓜伦| 印度性hd18| 办公室里呻吟的丰满老师电影| 91精品国产色综合久久| 草草久久久亚洲AV成人片| 国产精品久久久久久久久免费下载| 东京热百度影音| 调教美丽的白丝袜麻麻视频| 国产精品美女久久久久AV超清| 给个男人都懂的网址2019| 国产自产第一区c国产| 国产又黄又硬又粗| 噜噜噜在线AV免费观看看| 色偷偷av男人的天堂| 亚洲色爽视频在线观看| JizzJizzJizz亚洲成年| 国产精品美女久久久网站动漫 | 国产精品青青青高清在线密亚| 国产黄片毛片| 久久这里有精品| 日韩一区二区天海翼| 偷拍久久国产视频免费| 曰批视频免费40分钟不要钱| 成人bt下载| 久久青青热| 午夜一级毛片看看| 99精品免费观看| 果冻传媒独家原创在线观看|