2017-01-01 5 views
0

다음은 조류 관련 채팅 봇에 대해 작성한 일부 코드입니다.mIRC chat bot은 명령을 인식하지 않습니다.

mIRC consolse를 사용하면 별칭 블록 (예 : // fchirp [user])을 실행할 수 있지만 어떤 이유로 봇이 기본 채팅 창에서 "! chirp"를 입력했음을 인정하지 않습니다 . on-text-event에서 첫 번째 // echo 문도 실행하지 않습니다.

가장 이상한 부분은 다음과 같습니다.이 코드는 이전에 작동했으며 정기적으로 사용했습니다. 디버깅을 위해 사용하는 // echo 문과는 별도로 여기에 표시된 부분을 변경하지 않았습니다.

addWorms 및 giveWorms는 모두 독자적으로 작성하고 올바르게 작동하는 별칭입니다. 내가 겪고있는 주된 문제는 누군가가 "chirp"라고 타이핑 할 때 로봇이 무엇이든 할 수있게하는 것입니다. (그것은 주목해야한다 이전과 동일한 구문을 잘 코드 작업에서 다른 관련이없는에서 텍스트-이벤트.)

alias fchirp { 
    /writeini chirp.ini $1 First $adate 
    /writeini chirp.ini $1 Last $adate 
    /writeini chirp.ini $1 Count 1 

    msg $chan /w $1 Welcome to the Nest! Thanks for checking in! :D 
    addWorms $1 
    msg $chan /w $1 Type !worms to see how many you have! 

    //echo -a first chirp 
} 

alias chirp { 
    var %a $readini(chirp.ini, $1, Count) 
    var %count $calc(%a + 1) 

    if ($readini(worms.ini, $1, Breed) == $null) { 
    addWorms $1 
    //echo -a addWorms done 
    } 

    if ($readini(chirp.ini, $1, Last) === $adate) { msg $chan /w $nick You've already checked in today! BabyRage | halt } 

    /writeini chirp.ini $1 Last $adate 
    /writeini chirp.ini $1 Count %count 

    //echo -a last/count updated 

    if ($calc($readini(chirp.ini, $1, Count) % 5) == 0) { 
    giveWorms $1 10 
    msg $chan /w $1 Welcome back! Lucky day! 
    } 
    else { 
    giveWorms $1 5 
    msg $chan /w $1 Welcome back! Here's your worms! Don't forget to !hunt ! ^_^ 
    } 
    //echo -a giveWorms 
} 

on *:TEXT:!chirp:#: { 

    //echo -a acknowledged 

    if ($readini(chirp.ini, $nick, First) != $null) { 
    //echo -a true 
    chirp $nick 
    } 
    else { 
    //echo -a false 
    fchirp $nick 
    } 

    msg $chan /w $nick Don't forget to !hunt for worms! :D 
} 
+0

'TEXT :! * : # :'이 있습니까? 그것은 아마도 일치를 포함하는 다른 TEXT 이벤트 때문입니다 .. 새로운 mIRC 원격 파일에 게시 된 코드를 추가하여이 문제를 해결할 수 있다면 TEXT 이벤트 포착을 방해하는 코드가 있음을 의미합니다 (오류 또는 다른 TEXT 이벤트에 일치 패턴이 있음). 또한,'/'는 원격 코드에서 쓸모가 없으며 단지 콘솔 mIRC 윈도우에 대한 텍스트 대 명령을 식별하기위한 것입니다. –

+0

완벽! 고맙습니다. 나는 명령을 가지고있다 : – MrJerkBird

+0

(계속) ... 아무도 아무 것도 타이프하지 않을 때 카운트하는 명령이있다 : on : : TEXT : * : # : {/ * 물건 * /} 둘 다 가지고 있니? – MrJerkBird

답변

0

이벤트을 끄는 것은 두 가지 이유에 의해 방해가 될 수 있습니다.

  1. 오류가 동일한 원격 파일에 코드 위의 오류가 있습니다. 예 : 괄호 또는 구문 오류가 누락되었습니다.

  2. 다른 이벤트가 이미
    mIRC를 이미 같은 파일의 다른 패턴과 일치 된 이벤트를 처리하지 않습니다 캡처.

example.ini

ON *:TEXT:* dog *: echo -ag This will be called if we wrote the word dog in a sentence. 
ON *:TEXT:*:#: echo -ag This will be called 
ON *:TEXT:*test*: echo -ag This will never be called. Even if we wrote the word test in sentence. 

가 관련 논리가 아닌 경우, 내가 다른 원격 파일을 분리 것입니다하지만 당신은, 모두 액션을 처리하기 위해 TEXT 이벤트을 병합 할 수 있습니다.

on *:TEXT:*:#: { 
    if ($1- == !chirp) { 
     ; In here put your code. 
    } 

    ; Another code over here.. 

    ; Count some stuff in here.. 
} 

비고 :/ 별칭/팝업/원격 코드에 쓸모없는, 그리고 그냥 콘솔 mIRC를 창 명령 대 텍스트를 식별하기위한 것입니다.

관련 문제