def game_1(ch,event,message,bump,flag):
line_bot_api.reply_message(event.reply_token, TextSendMessage("Conum"))####1
line_bot_api.push_message(ID, TextSendMessage(text="範圍:" + a + "~" + b))####2
我要在linebot 裡寫一個 數字炸彈的遊戲 (電腦猜一個,我猜一個)
但是當執行完####1時,他會直接回到主程式繼續聆聽新的訊息過來(不會執行####2),並不會在我的遊戲函式裡繼續等待新的訊息,有函示可以在我的game_1裡停留,讀取到新的訊息後在繼續跑完所有程式嗎?(像message = input()這種)
line bot新手 請多多包涵 謝謝
reply_message 一使用,linebot就會自己結束這一次任務,等待使用者輸入下一個訊息
試試改個邏輯,讓push_message先,最後再reply_message
或許能達到你要的效果?
line_bot_api.push_message(ID, TextSendMessage("Conum"))
line_bot_api.reply_message(event.reply_token, TextSendMessage(text="範圍:" + a + "~" + b))
Push是主動發送訊息給使用者,要代入userId
reply是用使用者訊息裡的token,在限時內回覆,只能用一次
line_bot_api.push_message(ID, TextSendMessage(text="範圍:" + a + "~" + b))####2
你這行裡的ID是從哪裡取的?
push使用時必須知道發送對向的id,這個必須在user發送訊息時自己儲存
參考
裡面的source裡有userId
"source": {
"type": "user",
"userId": "U4af4980629..."
},
最後,push發送是計費的,免費版的一個月可以發幾百則,用完後push就不會有反應了
(但免費版也不用擔心被收錢,就是不再發訊息到webhook而已)
這個自己玩一下可以,給別人玩一話應該一下就爆量了
用個資料庫存reply_token、userID和送過來的message和時間不就好了...
另外這個用不到push,應該reply就能做了。
簡單的說,你的 game_1 流程應該是:
從你的描述看,你的整個流程是錯了,建議好好理一理,至少畫個流程圖...
你可以一次回最多5個訊息,用同一個Reply Token
https://developers.line.biz/en/docs/messaging-api/sending-messages/#reply-messages