Heroku+Flask+PostgreSQL(Heroku Postgres)로 갈랄 지방의 포켓몬의 타입이나 힘을 가르쳐 주는 LINE bot 만들었다

소개



타이틀대로입니다만, 갈랄 지방(소드·실드)에 등장하는 포켓몬의 정보를 가르쳐 주는 LINE bot 만들었으므로 간단하게 정리하고 싶습니다. 이하, 화면 이미지입니다.





파일 구성은 [GitHub]을 참조하십시오. (만약 좋으면 GitHub의 스타가 받을 수 있으면 격려가 됩니다.)

로컬 환경



pipenv를 사용하여 아래의 Pipfile에서 필요한 라이브러리를 설치. 왜 psycopg2를 성공적으로 설치할 수 없기 때문에 psycopg2-binary를 넣었습니다. (이 근처의 원인 모르겠습니다.)
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
flask = "==1.1.2"
line-bot-sdk = "==1.16.0"
sqlalchemy = "==1.3.17"
psycopg2-binary = "==2.8.5"

[requires]
python_version = "3.8"

LINE API 측 설정


  • (대체의 사람은 가지고 있다고 생각합니다만) 전제로서 LINE 어카운트가 필요하게 됩니다. 계정을 이미 가지고 계신 분은 [LINE Developers]에서 API 이용 등록을 해 주십시오.
  • 등록 후 새 채널을 만듭니다.
  • 채널을 추가한 후, [채널 기본 설정]->[LINE Official Account Manager]->[응답 설정 탭]에서, 応答メッセージ OFF Webhook ON로 설정합니다.
  • 채널 기본 설정에서 チャネルシークレット 및 Messaging API 설정에서 チャネルアクセストークン를 확인합니다. 이것은 나중에 Heroku 측에서 환경 변수를 설정할 때 필요합니다.

  • (이쪽은 Heroku에서의 작업 후에 필요)
    - Messaging API 설정에서 Webhook設定로 이동하고 Webhook URL에 https://{앱 이름}.herokuapp.com/callback을 입력합니다.

    Heroku측 설정



  • 「헤 ​​6」에 등록하십시오.
  • 필요한 명령을 brew로 설치합니다.
  • 아래 명령으로 로그인.
  • 다음 명령으로 환경 변수를 설정합니다.
  • $ brew install heroku
    $ brew install postgresql
    $ heroku login
    $ heroku config:set LINE_CHANNEL_ACCESS_TOKEN="***********" --app {アプリ名}
    $ heroku config:set LINE_CHANNEL_SECRET="***********" --app {アプリ名}
    

    PostgreSQL 준비


  • heroku에 로그인한 상태에서 빈 DB를 작성합니다.
  • 터미널에서 DB에 연결합니다.
  • DB 시간대 변경
  • Kaggle에서 좋은 느낌의 CSV 데이터를 다운로드합니다.
  • Kaggle이지만 꽤 포켓몬 데이터가 충실합니다. (역시 세계적인 콘텐츠)

  • 테이블을 만듭니다. (아래 SQL 문은 일례입니다.)
  • CSV 데이터를 DB에 복사합니다. 아래 with csv header는 CSV 헤더를 무시하고 캡처하기 때문입니다. 필요에 따라 바꾸어 주십시오.
  • $ heroku addons:create heroku-postgresql:hobby-dev -a {アプリ名}
    $ heroku pg:psql -a {アプリ名}
    
    # 接続開始、テーブルcreate
    app-name::DATABASE=> alter database {データベース名} set timezone = 'Asia/Tokyo';
    app-name::DATABASE=> create table pokemon_status(
    app-name::DATABASE=> id integer not null,
    ...
    ...
    app-name::DATABASE=> type2 text,
    app-name::DATABASE=> primary key (id));
    
    # ローカルのCSVをDBへコピー
    \copy pokemon_status from '{ファイル名}' with csv header;
    

    이런 느낌으로 등록되어 있을까 생각합니다.


    다양한 파일



    runtime.txt



    파이썬 버전을 나열합니다.
    python-3.8.1
    

    requirements.txt



    서버 측에서 필요한 라이브러리를 나열합니다.
    Flask==1.1.2
    line-bot-sdk==1.16.0
    psycopg2==2.8.5
    

    Procfile



    Heroku에서 필요한 파일로 프로그램 실행 방법을 설명합니다.
    web: python main.py
    

    main 파일은 조금 길어지므로 [GitHub]을 참조하십시오.

    결론



    PS5 재미! !

    추가 (2021/09/27)



     프로야구 데이터 시각화 사이트를 만들었습니다. 아직 퀄리티는 낮습니다만, 향후 조금씩 버전 업시켜 나갈 예정입니다. 야구를 좋아하는 분은 꼭 놀러와주세요 ⚾️

    좋은 웹페이지 즐겨찾기