2017-01-01 66 views
0

下面是我爲我不斷增長的與鳥有關的聊天機器人寫的一些代碼。mIRC聊天機器人不承認命令

如果我使用mIRC CONSOLSE,我可以執行別名塊(例如// fchirp [user]),但由於某些原因,bot不承認有人從主聊天窗口鍵入「!chirp」 。它甚至不執行on-text-event中的第一個// echo語句。

最奇怪的部分是:此代碼之前工作過,我一直在使用它。除了用於調試的echo聲明之外,我沒有改變這裏顯示的任何部分。

addWorms和GiveWorms都是我自己編寫和正確運行的別名。我遇到的主要問題是當某人輸入「!chirp」時,讓bot做任何事情。 (應當指出的是,其他無關的文本事件之前在代碼的工作只是有相同的語法罰款。)

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:*:#:{​​/ * do stuff * /} 有沒有辦法有兩個? – 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. 

您可以合併您文本事件處理這兩種行爲,但如果他們不相關的邏輯,我就會把他們分開了另一個遠程文件。

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

    ; Another code over here.. 

    ; Count some stuff in here.. 
} 

備註:/是別名/彈出/遠程代碼無用,並且其僅僅是用於識別文本VS爲控制檯的mIRC窗口的命令。