파싱은 됐으니 봇아 작동해라..

LONGNEW·2021년 8월 5일
0

Rather-Bot

목록 보기
2/5

파싱 까지는 뭐 그럭저럭 괜찮았다.

내가 원하는 기능들은 정각에 모든 웹사이트의 값을 가지고 와서 이를 이전 값과 비교해서 업데이트 된 값들이 있는지 확인하고.
변경된 것이 있다면 디코에 메시지를 날리는 거였다.

그래서 변경한 코드에선.
공지를 가져오는 것을 나누지 않고 어떤 입력값이 들어오면 반복문을 통해서 4번 웹 사이트의 값을 가져 오게 했다.

변경 값

이걸 저장해야 하니까 텍스트 문서를 하나 만들어서 이 안에 값을 저장하도록 하였다.
파이썬에서 파일을 열려면 open("파일 이름")해서 파일을ㅇ 열 수 있다.
여기에 기본적인 입력을 받는 커맨드 read(), readline() 등을 이용해서 내부의 값을 가져온다.

이후에는 값을 저장해야 하니까 일단 가져온 값을 update 하도록 하고 이 값과 이전 값을 비교한다.
temp와 같은 배열을 두고 나중에 저장을 할 수 있도록 하는 것이 좋다.

시간....

근데 시간을 인식하게 하는 것을 어떻게 하는 지 모르겠다. 뭐 스케쥴. tasks 와 같은 모듈을 사용하는 사람이 많은데 이건 결국 작동된 시점에서 몇 분이니까 원하는 바와는 달랐다.

기본적으로 디스코드는 사용자의 입력에 반응하여 작동을 한다. 다들 명령어를 위주로 만들지 자체적으로 움직이는 경우가 없었다.
결국, 포기하고 그냥 sleep()을 이용하였다.

호스팅

친구가 자기 컴퓨터로 하루종일 돌리면 되지 않나 했지만, 다들 귀찮지 않겠나 싶어 클라우드 서비스를 찾았다.
HEROKU
SoftVanilla's 깔끔한 설명

HEROKU를 이용하는 방식이다.
좀 많이 무식했지만 생각을 했어야 하는게 클라우드다.

내 컴퓨터가 아니기 때문에 data.txt의 위치와 같은 부분이 다르다.

코드를 작성할 때 어떤 위치에서 꺼내서 사용하는 것들이 있다면 이 부분을 유의 해야 한다.

맨 처음에는 위의 설명을 따라 HEROKU git을 사용하려 했는데 계속 Procfile을 감지 하지 못했다.
차라리 Git에 연동을 해서 하게 했고, Automatic Deploy를 작동하게 해서 깃에 파일을 업데이트 했을 때 자동적으로 빌드를 하도록 하였다.
이 경우 Procfile에 실행할 파이썬 파일을 작성하니 잘 실행이 되었다.

다음 문제 셀레니움 크롬 드라이버....
일단 HEROKU에서만 계속 실행하면 에러가 발생해도 모른다.
cmd에서
heroku login
한 후에
heroku run bash -a [본인의 봇 이름]
을 통해 cmd에서 자신의 봇을 실행시켜서 확인 할 수 있다. "[]"물론 안의 대괄호는 없어도 된다.

이 떄 계속 크롬 드라이버가 없다는 내용이 발생했고 한 2시간 뻘짓 하다가 검색을 통해 HEROKU 자체에 크롬 드라이버를 깔아야 한다는 것을 알았다.
HEROKU에서 Selenium 설치
PATH 설정
그리고 이것까지 한다면 아주 깔끔하게 작동이 된다.

나중에는 UI와 같이 시각적으로 좀 이쁘게 보이게 만들어 봐야 겠다.

수정...

while 문으로 작동을 시켰더니 봇이 계속 죽는다.

discort.ext 모듈을 이용해서 사용했다.
명령어를 통해서 한 번 작동을 시키면 주기적으로 백그라운드에서 작동을 하도록 했다.
로그인 시에 이 때 부터 하도록 하려 했는데 그 경우 얘가 어느 채널에 어떤 정보를 줘야 하는지 몰라서 불가능 한 것 같다.

일단 트리거가 되는 명령어를 제작한 후에 인자로 주는 ctx(?) 아무 변수를 만들어서

얘가 가지고 있는 채널에다가 정보를 가져다 주자.

명령어 제작
백그라운드 작업

tasks의 loop를 이용해서 원하는 시간에 맞게 작동을 시킬수 있다.

0개의 댓글