main.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import uvicorn
  2. import fastapi
  3. from linebot import LineBotApi, WebhookHandler
  4. from linebot.models import (
  5. MessageEvent, TextMessage, TextSendMessage, FollowEvent,
  6. )
  7. import configparser
  8. app = fastapi.FastAPI()
  9. # bot config
  10. config = configparser.ConfigParser()
  11. config.read('config.ini')
  12. line_bot_api = LineBotApi(config.get('line-bot', 'channel_access_token'))
  13. handler = WebhookHandler(config.get('line-bot', 'channel_secret'))
  14. # callback event
  15. @app.post("/callback")
  16. async def callback(request: fastapi.Request):
  17. signature = request.headers['X-Line-Signature']
  18. body = await request.body()
  19. handler.handle(body.decode('utf-8'), signature)
  20. return 'OK'
  21. # follow event
  22. @handler.add(FollowEvent)
  23. def handle_follow(event):
  24. print(event.source.user_id)
  25. line_bot_api.reply_message(
  26. event.reply_token,
  27. TextSendMessage(text='歡迎加入好友'))
  28. # # test answer, echo handler
  29. # @handler.add(MessageEvent, message=TextMessage)
  30. # def echo(event):
  31. # if '誰' in event.message.text:
  32. # line_bot_api.reply_message(
  33. # event.reply_token,
  34. # TextSendMessage(text='我是您的專屬祕書'))
  35. # else:
  36. # line_bot_api.reply_message(
  37. # event.reply_token,
  38. # TextSendMessage(text=event.message.text)
  39. # )
  40. if __name__ == '__main__':
  41. uvicorn.run("main:app", host="127.0.0.1", port=5000, reload=True)