2017-01-01 33 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窗口的命令。