newbot.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import copy
  2. import fastapi
  3. import fastapi.staticfiles as fastapiStaticfiles
  4. import linebot
  5. import linebot.models as linebotModels
  6. #uvicorn main:app --host 0.0.0.0 --port 443 --ssl-keyfile=/etc/letsencrypt/live/cal.ptt.cx/privkey.pem --ssl-certfile=/etc/letsencrypt/live/cal.ptt.cx/fullchain.pem
  7. #uvicorn main:app --host 0.0.0.0 --port 443 --ssl-keyfile=/etc/letsencrypt/live/ptt.cx/privkey.pem --ssl-certfile=/etc/letsencrypt/live/ptt.cx/chain.pem
  8. #uvicorn main:app --host 0.0.0.0 --port 443 --key-file=/etc/letsencrypt/live/ptt.cx/privkey.pem --certfile=/etc/letsencrypt/live/ptt.cx/cert.pem
  9. # --keyfile=./key.pem --certfile=./cert.pem
  10. # --ssl-cert-reqs 1
  11. #
  12. # --ssl-ca-certs=/etc/letsencrypt/live/ptt.cx/fullchain.crt
  13. app = fastapi.FastAPI()
  14. app.mount(
  15. '/static', fastapiStaticfiles.StaticFiles(directory='static'), name='static')
  16. from linebot import (
  17. LineBotApi, WebhookHandler
  18. )
  19. from linebot.exceptions import (
  20. InvalidSignatureError
  21. )
  22. from linebot.models import (
  23. MessageEvent, TextMessage,ImageSendMessage, TextSendMessage,FlexSendMessage, TemplateSendMessage,CarouselTemplate,ConfirmTemplate,PostbackAction,MessageAction,CarouselColumn,URIAction
  24. )
  25. import json
  26. import codecs
  27. line_bot_api = LineBotApi('FvP2AkKj3FSuTjY8Jhwn23DPIb38yDZBliLrDjRA8j+UOQPku+kH2Bz2coDFl4gruRAiLuHuBbtRpILXlN54zJ+bWF5IwU86FClG47VZxCcDcAkhwqCqjYi/Ju7dBzlg963d9CV1KiiBwoiqvV6J7AdB04t89/1O/w1cDnyilFU=')
  28. handler = WebhookHandler('58a73d69c3ad6416e0b465e64c30526a')
  29. #line_bot_api = LineBotApi('YOUR_CHANNEL_ACCESS_TOKEN')
  30. #handler = WebhookHandler('YOUR_CHANNEL_SECRET')
  31. @app.post('/callback')
  32. async def callback(request: fastapi.Request):
  33. signature = request.headers['X-Line-Signature']
  34. body = await request.body()
  35. handler.handle(body.decode('utf-8'), signature)
  36. return 'OK'
  37. @handler.add(linebotModels.MessageEvent, message=linebotModels.TextMessage)
  38. def message_text(event):
  39. if event.message.text == '叫':
  40. lineBotApi.reply_message(
  41. event.reply_token, linebotModels.AudioSendMessage(
  42. original_content_url=f'{baseUrl}/static/audio/noot_noot.mp3', duration=1000))
  43. #if __name__ == "__main__":
  44. # app.run(host='0.0.0.0', port=443,ssl_context=('/etc/letsencrypt/live/ptt.cx/fullchain.pem', '/etc/letsencrypt/live/ptt.cx/privkey.pem'))
  45. # app.run(host='0.0.0.0', port=14404,ssl_context=('/tmp/cert.pem','/tmp/chain.pem' ))