建立Cusdis Telegram Bot以取得留言通知
目前在GitHub可以找到三種Telegram Bot:
https://github.com/djyde/cusdis-telegram-bot
官方的Cusdis Telegram Bot,下指令沒反應,無法使用。https://github.com/WingLim/cusdis-telegram-bot
These features are based on saving approve link with token to a redis server.
We will automatically delete the approve link which is saved in redis to protect your privacy.- Approve comment in bot
- Append comment in bot
根據敘述的功能來執行:
- Approve comment in bot:因為Approve連結被刪除無法開啟,在Telegram點Approve按鈕會顯示讀取中,但是沒有反應。
- Append comment in bot:對該篇通知直接用Telegram回覆,輸入訊息以批准並回覆留言。
因為第一點不確定要怎麼做才行,放棄使用。
最後我選擇第三種機器人來加入Webhook。
先建立Telegram Bot取得Token和Chat ID,方法請參考〈Telegram.Bot.申請及Channel使用方式〉。
將以下Cusdis Telegram Bot Python程式碼的Token和Chat ID改成剛拿到的數值。
from napkin import response, request import requests import json TELEGRAM_BOT_TOKEN = 'xxxxxx' //輸入機器人的Token TELEGRAM_CHAT_ID = 'xxxxx' //輸入機器人的Chat ID def format_message(data): """data example: { "type": "new_comment", "data": { "by_nickname": "xxx", "by_email": "xxx", "content": "xxx", "page_id": "xxx", "page_title": "xxx", // page title, maybe NULL "project_title": "haha", // project title "approve_link": "" // use this link to approve this comment without login } } """ data_type = data['type'].replace('_', ' ').capitalize() message_tmpl = """_{data_type} on *{page_title}* on website *{project_title}*:_ ``` {content} ``` by: *{by_nickname}* """ return message_tmpl.format(data_type=data_type, **data['data']) def send_to_telegram(data=None): data = data or json.loads(request.data) url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" message = format_message(data) reply_markup = { 'inline_keyboard': [[{'text': 'Approve', 'url': data['data'].get('approve_link')}]] } resp = requests.post( url, data={ 'chat_id': TELEGRAM_CHAT_ID, 'text': message, 'parse_mode': 'MarkdownV2', 'reply_markup': json.dumps(reply_markup) } ) return resp.json(), resp.status_code resp, status_code = send_to_telegram() response.status_code = status_code response.body = resp response.headers = { 'Content-Type': 'application/json' }
到Napkin雲端平台,建立一個新的Function,輸入名稱並選擇Python環境。
將程式碼複製貼上,點一下Deploy按鈕,將上面網址貼到Cusdis管理後台的Webhook欄位。
建立的機器人只能自用,無法給其他人用。收到通知後顯示如下:
點一下Approve按鈕,顯示是否要開啟連結(和Email通知的連結相同)以批准和回覆留言。
參考文章: