要過年啦!啥?朋友太多?用python實現一個完美的自動回覆吧

kissjz發表於2018-02-09

昨天逛聚能聊的時候,看到一個話題2018程式設計師拜年的奇思妙想,漲姿勢了,裡面給出了一個實現自動回覆的程式碼。

第一次接觸itchat,雖然之前也聽說過,這個可以用來弄微信機器人。

於是,強烈的搞事情精神驅使著我,在網上又搜了一下。

itchat詳細講解請看:SegmentFault-python實現微信介面(itchat)

然後看了簡書上的一個程式碼:12行Python程式碼,自在隨心應付微信拜年群發

本來以為直接可以用,確實可以。

簡書中這段程式碼的優點:

  1. 這個自動回覆程式碼設定了防止對一個人重複發問候,防止聰明的朋友懷疑是自動回覆,然後重複發“新年好”,而你不停的“回覆”新年問候,這樣設定了防止重複,就能有效避免了尷尬情況發生。即使懷疑也不至於太尷尬。
  2. 自動提取你對好友的備註名稱最為回覆的稱呼,這樣是不是更逼真了呢?

但也有缺點:

  1. 但是裡面的的短息祝福語API稍微有點老套
  2. 有時候會自動回覆“ 我的猴年願望:從今天起你只准疼我一個,要寵我,不許騙我,答應我的每一件事都要做到,對我說的每一句話都要真心”
  3. 自動回覆的內容老套,而且不能控制,萬一對方是基(女)友(票),回覆錯了怎麼辦。。。

於是稍微簡單的修改了一下,程式碼可直接用在python3環境中,你只需下載一個itchatrequests的包。

# -*- coding:utf-8 -*-
import itchat, time, requests, random
from itchat.content import *

replied = []

@itchat.msg_register([TEXT])
def text_reply(msg):
    if `年` in msg[`Text`] and msg[`FromUserName`] not in replied:
      sendGreeting(msg)

@itchat.msg_register([PICTURE, RECORDING, VIDEO, SHARING])
def other_reply(msg):
  if msg[`FromUserName`] not in replied:
    sendGreeting(msg)

def sendGreeting(msg):
  global replied
  friend = itchat.search_friends(userName=msg[`FromUserName`])
  itchat.send((friend[`RemarkName`]+` `+getRandomGreeting()), msg[`FromUserName`])
  replied.append(msg[`FromUserName`])

##列表中的祝福語可以替換成你想要的,可能我這個也俗套了。。。
greeting_list=[`狗年送你五隻狗:機靈詭祕如獼狗,健康快樂像馬狗,富貴悠然似金絲狗,無憂無慮比猿狗,聰明伶俐勝孫狗。`,` 大紅燈籠高高掛,掛出吉祥;歡歌笑語陣陣飄,飄出喜慶;鞭炮禮花聲聲響,響出美好;真摯祝福條條發,發出心聲:祝你狗年新年樂翻天,歡天喜地笑開顏!`,`年到,我許下願望,願你:寒冷時,有人送暖不畏寒;飢餓時,有人送飯不擔憂;困難時,有人伸手來扶持;孤單時,有人陪伴寂寞消。願你開心每一天!`]
length_list=len(greeting_list)
def getRandomGreeting():
  index=int(random.random()*3)
  greeting=greeting_list[index]
  return greeting

itchat.auto_login(hotReload=True)##保留登入的狀態,之後不再用掃二維碼
itchat.run()


相關文章