日誌2022-05-22 22:15
Line機器人懶人包總結 By.2022年版 (完)作者:OKHand
@app.route("/callback/notify", methods=['GET']) def callback_nofity(): #assert request.headers['referer'] == 'https://notify-bot.line.me/' code = request.args.get('code') state = request.args.get('state') # Get Access-Token client_id = os.environ['NOTIFY_CLIENT_ID'] access_token = get_token(code, client_id, client_secret, redirect_uri) google_sheet(access_token) send_message(access_token,text_message="你好") #發訊息 return '恭喜完成 LINE Notify 連動!請關閉此視窗。' |
@handler.add(MessageEvent, message=TextMessage) #監聽當有新訊息時 def handle_message(event): global Group_id , User_id if event.message.text == "個人訂閱" : url = create_auth_link(event) #回傳 url 給傳訊息的那 個人 or 群組 line_bot_api.reply_message(event.reply_token,TextSendMessage(text=url) ) #這邊是利用 event 內的 user_id 去跟 Line 拿到使用者的當前 Line 使用的名子 Ex: Zi-Yu(林子育) User_id = line_bot_api.get_profile(event.source.user_id).display_name Group_id = '' elif event.message.text == "群組訂閱" : url = create_auth_link(event) line_bot_api.reply_message(event.reply_token,TextSendMessage(text=url) ) #因為 event 內只會回傳個人訊息所以無法找到 Group 的名稱,所以只能改拿 Group 的 id Group_id = (event.source.group_id) #Group_id get! User_id = '' |
#利用notify發出訊息 #==============================================================================================# def send_message(access_token, text_message): url = 'https://notify-api.line.me/api/notify' headers = {"Authorization": "Bearer "+ access_token} data = {'message': text_message} data = urllib.parse.urlencode(data).encode() req = urllib.request.Request(url, data=data, headers=headers) page = urllib.request.urlopen(req).read() #==============================================================================================# main: send_message(access_token, text_message) |
from apscheduler.schedulers.blocking import BlockingScheduler from linebot import LineBotApi from linebot.models import TextSendMessage import urllib.request sched = BlockingScheduler() #利用notify發出訊息 def send_message(access_token, text_message): url = 'https://notify-api.line.me/api/notify' headers = {"Authorization": "Bearer "+ access_token} data = {'message': text_message} data = urllib.parse.urlencode(data).encode() req = urllib.request.Request(url, data=data, headers=headers) page = urllib.request.urlopen(req).read() #定時去搓url讓服務不中斷 @sched.scheduled_job('cron', day_of_week='mon-sun', minute='*/25') def scheduled_job(): url = "https://<Your Heroku App Name>.herokuapp.com/" conn = urllib.request.urlopen(url) for key, value in conn.getheaders(): print(key, value) print("戳一下") |
2022-08-02 22:31OKHand:是可以喔!不過他是架在GCP上是需要錢錢的所以沒用此方法
2022-11-09 22:21OKHand:感謝提供排程方法!!改天來玩玩[e19]