본문 바로가기
IT/JAVASCRIPT

[JAVASCRIPT] 오늘 뭐먹을지 자동 응답 해주는 소스 구현

by 쫄보에서고수까지 2021. 12. 22.
반응형

카카오톡 메신저봇 랜덤포인트 자바스크립트 소스

 

카카오톡 메신저봇 랜덤포인트 자바스크립트 소스

카카오톡 메신저봇을 켠 상태에서 유저를 등록하고 대화를 하다보면 랜덤으로 포인트 쌓이는 스크립트 소스를 공개 합니다. 카카오톡에서 받은 메세지를 통해 실행되는 함수는 이부분에서 시

code-zzolbo.tistory.com

 

에서 사용한 랜덤 난수 발생을 활용하여 다른 응답을 받을 수 있도록 구현하기 위함.

 

Math.random() 함수를 사용하게 되면  0.xxxxxxxxx 와 같이 랜덤으로 난수를 발생시켜주는데,

Math.random() * 10 을 하게되면 x.xxxxxxxx 와 같이 1의 자리 숫자가 같이 나오게 됩니다.

Math.random() * 10 -> parseInt(Math.random() * 10) 로 표현하시게 되면 integer 타입으로 

정수만 표기되기 때문에 x 1의자리 숫자가 랜덤으로 나오는 것 처럼 사용할 수 있습니다.

10 : 0~9 랜덤 , 100 : 0~99 랜덤, 1000 : 0~999 ..............

결론적으로 N개의 랜덤숫자를 뽑아낼 수 있습니다.

 

음식 10가지 준비.

// index :   0      1     2     3     4        5       6     7      8       9          
const f = ["사과","딸기","포도","배","스파게티","탕수육","짜장","카레","미트볼","라면"];

0부터 9번째까지 의 음식을 준비하고 

f의 n번째 데이터

f[parseInt(Math.random()*10)] 을 찍어보면

랜덤 음식 결과

랜덤으로 음식을 정해주는 걸 볼 수 있습니다.

점심 골라주는 응답.

!뭐먹지 라는 메시지를 보내게 되면 자동응답봇에서는 받은 메시지를 msg 받게 되고,

if(msg == "!뭐먹지") 로 비교하게 됩니다 f[parseInt.Math.random()*10] 으로 reply 해주면 되겠습니다.

 

여기서 문제점은 음식을 추가해야하는 상황도 있고 , 빼야할 수도 있는데 빼고,추가할때마다 10을 11 또는 9 이런식으로 바꿔야 하는가?

아닙니다,

배열로 가져왔기 때문에 f.length 를 이용하면 되겠습니다.

f.length 를 사용하시게 되면 총 음식이 10개로 10 이라는 숫자를 얻게 되는데, index는 0~9까지 임으로 

f.length - 1 로 사용하시면 됩니다.

최종 핵심 소스
최종 결과

 

더 나아가서 음식을 티어 로 바꿔서 "아이언" , "통나무" , "브론즈" , "실버" , "골드" , "다이아"  등 으로 설정하고

메시지는 !나는 이라고 보내는 것도 아이디어 중 하나이고, 

업비트 코인 리스트를 넣어서 뭐살지 랜덤으로 응답 받는 것도 사용해 볼 수 있다.

반응형
LIST

댓글