用 LINE API 打造自動回話機器人-2016/10/19更新



2016/10/19 更新LINE機器人相關文章:「LINE Bot 機器人 Trial API 試用 – 2016/10/05 更新


首先:這個主題其實並不是這麼的「正式」、「開放」。

因為 LINE 根本沒放出一個正式的 API 來讓開發者使用,那…

對,就是有韓國的神人去解析 LINE 的通訊機制,寫了個非官方的 API 來用!

LINE API

有趣的事是官方跑去要求作者對某部分的程式碼移除,某種程度上這也是種官方認證吧XD

現在要使用這套lib 要繞一下路,聰明的你應該可以知道(默)

下面提供我小改一下變成真正的回音機器人程式碼

#!/usr/bin/python
# -*- coding: utf-8 -*-
from line import LineClient, LineGroup, LineContact

try:
   client = LineClient(authToken="AUTHTOKENSTR")
except:
   print "Login Failed"

while True:
   op_list = []

   for op in client.longPoll():
      op_list.append(op)
      for op in op_list:
        sender = op[0]
        print sender
        receiver = op[1]
        print receiver
        message = op[2]
        print message
        msg = message.text
        print msg
        if message.contentType == 0:
          sender.sendMessage('自動回話機器人測試中: %s' % (msg))
        else:
          print 'Do nothing'
          print message.contentType

2015/8/24 更新

Github上的專案已被LINE官方提出侵權,開發者請注意使用別拿自己本尊開玩笑XD

DCMA Takedown

另外補充更新點: 這裡

Share:
  • Kevin

    您好 請問一下"現在要使用這套lib 要繞一下路,聰明的你應該可以知道您好 請問一下""
    這句話 還是不太懂? 可否提示一下 謝謝

    • 你現在安裝到哪一步了呀?

  • Kevin

    我用的是
    line 0.0.8 可以WORK但用新版0.5.2是不能WORK
    請問一下 您用的是幾版? Python 又是幾版?

    • 阿呀,一忙就忘記回你了,抱歉!
      我用的是最新版哦! Python是2.7版,作者有持續的在更新與修正,你說的不能work是甚麼問題呢?

  • Kevin

    我現在改用0.6.4 一樣會出現錯誤訊息

    # python

    Python 2.7.5 (default, Jun 17 2014, 18:11:42)

    [GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2

    Type “help", “copyright", “credits" or “license" for more information.

    >>> from line import LineClient, LineGroup, LineContact

    >>> client = LineClient(“mis1@xxxxx", “xxxxx")

    Enter PinCode ‘9243’ to your mobile phone in 2 minutes

    Traceback (most recent call last):

    File “", line 1, in

    File “/usr/lib/python2.7/site-packages/line/client.py", line 81, in __init__

    self.login()

    File “/usr/lib/python2.7/site-packages/line/api.py", line 113, in login

    raise Exception(“Code is removed because of the request of LINE corporation")

    Exception: Code is removed because of the request of LINE corporation

    >>> print client.authToken

    Traceback (most recent call last):

    File “", line 1, in

    NameError: name ‘client’ is not defined

    手機中 打完PIN CODE 一樣沒用

    • 這邊就是他在0.0.8之後版本中加入的trick了,你可以看看我上面code用什麼方式登入! 再想看看哪一版本可以,這樣應該就通了吧? (如果還是不清楚,就用聯絡我的方式聯絡我吧)

      • 蔡英傑

        NameError: name ‘client’ is not defined
        我也是一樣啊!

  • 林仁傑

    你好,
    我不太了解 " 現在要使用這套lib 要繞一下路,聰明的你應該可以知道(默)",這句話的意思,可否暗示一下呢?
    非常感謝!!

    • 下面討論有提到哦!你參考一下,過程中有問題再提出來一起討論吧

      • 林仁傑

        你好,經過一番 google 後,已經可以使用了,但現在遇到 authToken 每兩小時就會過期的問題有點麻煩,雖說 0.6.4 的版本宣稱有解決 authToken 過期的問題,但我試過的結果仍然無效,可能原作者遭 LINE 公司警告而拿掉了一些 code…. Orz

        • Good 我看最近的更新裡有提到更新token的問題,也有實作出來,可以試著更新到最新版後呼叫看看囉!

          client.updateAuthToken()

          • 林仁傑

            新版的 AuthToken 過期問題似乎已解決, 目前測試了三天都尚未過期

          • 感謝提供測試回報!!

          • 陳韻仁

            哈囉~~
            請問一下新版的作法跟0.08一樣嗎?
            它會自動更新AuthToken?
            還是需要呼叫什麼呢@@

            謝謝你~

          • 林仁傑

            使用 git clone https://github.com/carpedm20/LINE 下載最新版的 source code, 做法跟 0.0.8 一樣, 但不需使用 client.updateAuthToken() 來更新 authToken, 只需用 authToken 登入後即可, 測試至目前為止沒有出現過期的 error message

          • beachboy

            請問一下新版的要怎麼使用呢?
            我使用後還是會遇到過期的問題

          • 林仁傑

            Hi, 你是用 0.0.8 取得 authToken 後再用新版登入嗎?
            authToken 取得後,
            到新版的 folder 裡需要再執行 install 一次.

            0.6.9 之前的版本我測試的結果是會有過期的問題,

            目前穩定使用 0.6.9 的版本

          • beachboy

            感謝你的回答,但是還是一樣會過期,也查詢過當前版本是新版的了,可以請問你更詳細一點嗎?或是提供一下聯絡的方式? 再次感謝

          • 林仁傑

            下面連結是我目前用的版本, 你再試試看,
            還有問題的話可 mail 給我 touya1120@seed.net.tw

            https://www.dropbox.com/s/6jbs4u8ryfqyuhu/line.0.6.9.tar.gz?dl=0

          • 感謝你願意大方分享,讓社群的力量更加強大! 有機會分享相關新聞資訊也歡迎提供連結,我再把這篇文章做更新!

  • 俞桂昌

    你好我已經可以用line api登入了,但是程式碼要寫在哪??

    • 就是你測試可以登入的環境裡,把怎麼登入的那些code寫成檔案就好拉!

  • s60912frank

    請問 我現在用最新版一切運作正常 可是還是有token過期的問題
    用token登入後再使用client.updateAuthToken() 卻出現
    Exception: Error: You need to login first. There is no valid certificate
    不知道問題出在哪 謝謝!

    • 目前就連API作者也還無法說的準token何時會過期,這部分還是要等等看吧!

  • 哈囉
    想請問一下

    我用0.7.1+登入動手腳後可以正常做自動回復
    但是我發現他跑一跑會自己卡住掛掉
    甚至在剛剛我整個IP被*.line.naver.jp鎖掉了 Orz

    我發現他的LongPolling一秒鐘就送出了3~4個request
    一個晚上就送了幾萬個request…
    或許是被認定為DDoS惡意攻擊之類的

    不知道您有沒有遇過類似問題呢?
    謝謝

    • 這我就沒有碰過了耶! 這個專案剛剛看被Github拿掉了,看來LINE官方開始動作,請小心使用。

    • s60912frank

      我也被鎖了!!!
      機器人好不容易堅持了一個禮拜沒離線的說
      看來這次LINE決心封鎖非官方認證的機器人了

      • 我想應該是$$的問題吧
        一個官方帳號可以賺好幾十萬
        我們私架的去占用到他的資源檔他們財路…

        我認為原因還有一個啦
        就是像我說的,request太頻繁被認定是DDoS
        就看作者要不要處理了….

      • Alven

        我也是被鎖了
        也找了很多方法讓機器人存活超過一星期
        但是我看日本還是很多機器人活著…

    • 我到他官方的Google Groups去問
      https://goo.gl/87dbol

      就連作者也不太了解….. Orz

      • 非官方就是這麼神秘,大家還是玩玩有感覺繼續觀望就好,實戰的話我還是會選擇官方釋出版(如果有的話)

  • 您好
    想請教如何在 client.py 中增加「踢人指令(群組)」
    我想用 LINE API 製作 防翻機器人
    但是不知道如何寫程式碼
    拜託大大了

  • Jack Lin

    請問現在這package還能用嗎
    我用0.0.8的嘗試client = LineClient(“xx","xxx") 手機上寫不再支援目前嘗試登入的Line版本

    • 先前做法是需要0.0.8版來取得token,然後再用在最新版登入,不過自從他被官方鎖了後,我就沒再繼續follow囉

  • Jack Lin

    好哈哈哈 剛剛還試著用定期截圖部分區域 然後再用圖像識別來打造接收訊息的process 結果發現超級不ok哈哈哈哈
    好吧 我再想想我要的是什麼 尋找替代方案 大不了用pyautogui來發訊息….反正我是要放在一台不會用到的電腦上跑的XD

    • 要做到即時OCR實在不簡單,如果只是訊息系統不限定LINE的話還有其他解的。

  • Pingback: ()

  • AJ Maker

    你好可否加LINE 討論 VSVS0225 感謝

  • 魔斌諸葛

    請問如何將python程式包到web或android apk裡嗎,就是說用 textbox控制要傳送的訊息內容

  • Pingback: ()