main.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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 mysql.connector
  8. app = fastapi.FastAPI()
  9. # bot config
  10. line_bot_api = LineBotApi("SJT7VPT4RMQFLcS27jQBy3FcC24gtDrkcwJWZ5Xzqesr5T78LOKudHEJzt0k3b2S7n4KPwf27J7DVz2c8NQ4plSaaQylEeB1cYrfejaE/RPG/lCIQBYe4iBTzo26s4i2PcmT89837per/lTyvhVIKAdB04t89/1O/w1cDnyilFU=")
  11. handler = WebhookHandler("411ae3ef7e766739ed2c2c27b249d010")
  12. # callback event
  13. @app.post("/callback")
  14. async def callback(request: fastapi.Request):
  15. signature = request.headers['X-Line-Signature']
  16. body = await request.body()
  17. handler.handle(body.decode('utf-8'), signature)
  18. return 'OK'
  19. # follow event
  20. @handler.add(FollowEvent)
  21. def handle_follow(event):
  22. # get user id when follow
  23. user_id = event.source.user_id
  24. # db connect
  25. conn = mysql.connector.connect(
  26. host="db.ptt.cx",
  27. port=3306,
  28. user="choozmo",
  29. password="pAssw0rd",
  30. database='arkcard')
  31. cursor = conn.cursor()
  32. search_id = """SELECT * FROM users WHERE id = %s"""
  33. add_id = 'INSERT INTO users (id) VALUES (%s)'
  34. cursor.execute(search_id, (user_id,))
  35. values = cursor.fetchall()
  36. value = [user_id]
  37. print(values)
  38. for v in values:
  39. print("uaserid found")
  40. else:
  41. cursor.execute(add_id, value)
  42. conn.commit()
  43. conn.close()
  44. print("userid add")
  45. print("歡迎")
  46. print(event.source.user_id)
  47. line_bot_api.reply_message(
  48. event.reply_token,
  49. TextSendMessage(text='歡迎加入好友'))
  50. # message handler
  51. @handler.add(MessageEvent, message=TextMessage)
  52. def echo(event):
  53. if '我要發送' in event.message.text:
  54. line_bot_api.reply_message(
  55. event.reply_token,
  56. TextSendMessage(text="發送操作"))
  57. elif '我要接收' in event.message.text:
  58. line_bot_api.reply_message(
  59. event.reply_token,
  60. TextSendMessage(text=('接收操作')))
  61. else:
  62. line_bot_api.reply_message(
  63. event.reply_token,
  64. TextSendMessage(text="更多的服務內容,歡迎請上我們的官網!")
  65. )
  66. if __name__ == '__main__':
  67. uvicorn.run("main:app", host="0.0.0.0", port=8228, reload=True)