mIRC chat bot不承认命令

时间:2017-01-01 03:31:05

标签: irc twitch chatbot mirc

以下是我为不断增长的与鸟类相关的聊天机器人编写的一些代码。

如果我使用mIRC consolse,我可以执行别名块(例如// fchirp [user]),但由于某种原因,机器人不会确认有人在主聊天窗口输入“!chirp”。它甚至不会在on-text-event中执行第一个// echo语句。

最奇怪的部分是:此代码之前有效,我一直在使用它。除了用于调试的// echo语句之外,我没有更改此处显示的任何部分。

addWorms和giveWorms都是我写的别名,并且可以自己正常运行。我遇到的主要问题是当有人输入“!chirp”时,让机器人做任何事情。 (应该注意的是,代码中较早的其他无关的on-text-events在语法相同的情况下工作正常。)

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
}

1 个答案:

答案 0 :(得分:0)

事件捕获可能会受到两个主要原因的干扰。

  1. 错误
    您在同一远程文件上的代码上方有一个错误。例如缺少括号或语法错误。

  2. 已捕获其他事件
    mIRC不会处理已经在同一文件上与另一个模式匹配的事件。

  3. <强> 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窗口的文本与命令。