2017-09-11 11 views
1

저는 현재 내 첫 불화 봇을 코딩하고 있습니다. 그는 이미 youtube 음악을 재생할 수 있습니다! : D 하지만 난 문제로 실행하고 _가 더 도움이되지 않습니다, 또는 내가 너무 장님 보인다 (ツ) _/¯ 음, 여기에 문제가 :discord.js bot가 답장합니다. - 이런 일이 일어나지 않도록하십시오.

if (message.content.includes("Good Job") || 
    message.content.includes("good job")) { 
    message.channel.sendMessage("Good Job everyone :smirk:"); 
    } 

보시다시피, 만약 누군가가 "좋은 직장"을 입력하면 (이것은 단지 예일 뿐이다) 봇은 "좋은 직장 모두 : smirk :)"라고 대답하지만 스팸이 시작된다 : 봇은 자신의 메시지를 읽고 답장을 보낸다 어떻게 수 나는 자신을 응답하도록 봇을 방지 :/ 내가 얻을 수있는 모든 도움을 주셔서 감사합니다

+0

체크? 봇이 메시지를 보내지 않으면 답장을 보내지 마십시오. – Craicerjack

+0

사용자 또는 사용자 ID 확인 ... – Salketer

+0

* if * 문에서 두 버전의 메시지를 모두 확인하는 대신 확인하기 전에 항상 메시지를 소문자/대문자로 변환하십시오. 당신을위한 팁! –

답변

4

를 사용하여 이것을에 메시지 이벤트에!

추가 정보를
if (message.author.bot) return; 

: https://anidiotsguide.gitbooks.io/discord-js-bot-guide/coding-guides/a-basic-command-handler.html

+0

나는 또한 이것에 대해서 언급하고자한다. 메시지 수신 핸들러는 봇이 새로운 메시지를 볼 때마다 호출된다. (그리고 그 메시지는 봇 자체의 메시지를 포함합니다!) 귀하의 계정에도 똑같이 적용됩니다! 자신의 서버에서 @everyone을 핑 (ping) 해보면 자신의 메시지가 있더라도 노란색 강조 표시 줄이 나타납니다. – WQYeo

+0

그 생각을하지 못했습니다! 나는 보통 메시지 블록 내부의 모든 코드를 감싸는 코드 블럭 (보낸 사람이 봇이 아닌 경우)을 가지고 있으며, 모든 것이 내부로 들어가 필터링되어야한다. –

2

봇 자신에게 응답 이유는 때문에 당신은 어디다 :

경우 (message.content.includes ("좋은 직업") || message.content.includes ("좋은 일")) 텍스트 의 조각이 단어 "좋은 직업"또는 "좋은 일"을 포함하는 경우

그것은 기본적으로 채팅을 확인하고 있습니다. 귀하의 로봇이 전송할 때 :

message.channel.sendMessage ("Good Job everyone : smirk :"); 해당 메시지 기본적으로 다시하고 다시하고 다시 코드를 실행, 단어"좋은 직업" 포함되어 있기 때문에 대답으로

, 그것은 루프를 만듭니다.

물론이 방법을 고치는 가장 쉬운 방법은 좋은 직업 인이라는 단어를 포함하지 않도록 변경하는 것입니다. 그러나 모든 명령에 대해 발생하지 않는 것이 더 나은 해결책입니다 너는 만들지도 몰라. 요르문간드 @로서

메시지 이벤트에 따라 포함했다 :

경우 (message.author.bot) 반환하는 단계;

발생하지 않도록하십시오. 기본적으로 메시지 작성자가 봇인지 확인하고 메시지 작성자가 해당 메시지를 무시합니다. 메시지를 보낸 사람을 볼 수

+0

귀하의 질문에 귀하가 사용하는 언어로 태그를 추가하십시오. – jhenderson2099