mIRC 聊天机器人不承认命令

Posted

技术标签:

【中文标题】mIRC 聊天机器人不承认命令【英文标题】:mIRC chat bot doesn't acknowledge commands 【发布时间】:2017-01-01 03:31:04 【问题描述】:

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

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

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

addWorms 和 giveWorms 都是我编写的别名,它们可以正常运行。我遇到的主要问题是当有人键入“!啁啾”时让机器人做任何事情。 (应该注意,代码中前面的其他不相关的文本事件可以使用相同的语法正常工作。)

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

【问题讨论】:

你有TEXT:!*:#:吗?这可能是由于其他包含匹配项的 TEXT 事件造成的。尝试在新的 mIRC 远​​程文件上添加发布的代码,如果这可以解决此问题,则意味着上面的代码会干扰 TEXT 事件的捕获(错误或另一个 TEXT 事件包含匹配模式)。此外,/ 对远程代码毫无用处,它仅用于识别控制台 mIRC 窗口的文本与命令。 完美!谢谢你。我有一个命令: (cont.) ...有一个命令可以在任何人键入任何内容时计数:on :TEXT::#: /* do stuff */ 有吗两者兼得的方法? 是的,我会尽快发布答案。 我已经发布了完整的答案。 【参考方案1】:

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

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

    其他事件已被捕获 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 窗口的文本与命令。

【讨论】:

以上是关于mIRC 聊天机器人不承认命令的主要内容,如果未能解决你的问题,请参考以下文章

如何让我的不和谐机器人只在聊天中工作?

试图为不和谐制作一个聊天机器人,但它不起作用

Twitch IRC 聊天机器人成功连接但未检测到命令

使用不和谐 JDA 清除聊天

简单的聊天机器人项目[关闭]

用 TensorFlow 做个聊天机器人