透過Python Line Chatbot 被邀請入群說出謝謝 - Group chats
透過Line ChatBot實現進入群組後自動說感謝的功能。
Line chatbot 系列 - group chats,
透過Line ChatBot實現被邀請入群組可以自動說謝謝的功能。
目標
當機器人被邀請至群組時,
自動的說出感謝的台詞。
抱怨一下
其實原本是想做標記入群新人的功能,不過看了一下API,似乎是沒有開放標記,
之後又發現其實根本沒有開放有沒有人進入群組的API,
因此就只能達成被邀請入群時說感謝的話,
以及離開時紀錄一下log,
變成挺沒用的一篇文章。
無聊可以看一下下面的帖子:
- 不開放群組的 User Events
https://github.com/line/line-bot-sdk-python/issues/21
前置條件
有辦法順利使用Line chatbot達成複誦我傳送過去的訊息。
如果沒辦法的話-請參考透過Python架設Line Chatbot
架完後要使用基本的推播/回覆功能-請參考透過Python使用Line Chatbot-應用篇。
文件區
本人實作的 Line Chatbot 程式碼都會放在 Github:Xiaosean - Line_chatbot_tutorial
看一下API文件
https://developers.line.me/en/reference/messaging-api/#join-event
https://pypi.org/project/line-bot-sdk/#source
下方這連結有很多功能的實作(官方的源碼)。
https://github.com/line/line-bot-sdk-python/blob/a3c1947ec00bf78028b57b1e6854a9dca78e6de7/examples/flask-kitchensink/app.py
設定
首先我們要使用群組功能的話,
需要到下面頁面做開啟。
https://developers.line.me/console
點擊完你的 Chatbot 後,會到下面這頁面,
之後往下拉, 到 Messaging settings 的位置,
這邊有兩個功能需要啟用:
- Use webhooks
- Allow bot to join group chats
都設定好後,可至下面這網址確認。
https://admin-official.line.me/
如果成功的話會如下圖。
那我們在下面只貼出簡單的做展示,程式碼使用方式的請至[]
我們主要使用的功能為
- JoinEvent
下方為回傳的範例內容
可以看出我們可以知道我們是加入哪個群組的Id,雖然也沒什麼用就是了。
“replyToken”: “nHuyWiB7yP5Zw52FIkcQobQuGDXCTA”, “type”: “join”, “timestamp”: 1462629479859, “source”: { “type”: “group”, “groupId”: “Ca56f94637cc4347f90a25382909b24b9” }
- LeaveEvent
當機器人被踢出群組後,可透過這個Event紀錄住被哪個群組踢出。
import json
from flask import Flask, request, abort
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, JoinEvent, LeaveEvent, TextMessage, TextSendMessage
)
app = Flask(__name__)
line_bot_api = LineBotApi('YOUR_CHANNEL_ACCESS_TOKEN')
handler = WebhookHandler('YOUR_CHANNEL_SECRET')
@app.route("/callback", methods=['POST'])
def callback():
# get X-Line-Signature header value
signature = request.headers['X-Line-Signature']
# get request body as text
body = request.get_data(as_text=True)
app.logger.info("Request body: " + body)
print(body)
# handle webhook body
try:
handler.handle(body, signature)
except InvalidSignatureError:
abort(400)
return 'OK'
@handler.add(JoinEvent)
def handle_join(event):
newcoming_text = "謝謝邀請我這個機器來至此群組!!我會盡力為大家服務的~"
line_bot_api.reply_message(
event.reply_token,
TextMessage(text=newcoming_text)
)
print("JoinEvent =", JoinEvent)
@handler.add(LeaveEvent)
def handle_leave(event):
print("leave Event =", event)
print("我被踢掉了QQ 相關資訊", event.source)
@app.route('/')
def homepage():
return 'Hello, World!'
if __name__ == "__main__":
app.run()
參考連結
若有問題
歡迎在下方留言處留言或是寄e-mail,
若使用 FB 私訊我的話會因為沒加好友,很容易會被評遮忽略。