2017-01-01 13 views
0

Ниже приведен код, который я написал для моего постоянно растущего связанного с птицами чата.mIRC chat bot не подтверждает команды

Если я использую утешение mIRC, я могу выполнить блоки псевдонимов (например, // fchirp [user]), но по какой-то причине бот не признает, что кто-то печатает «! Chirp» из основного окна чата , Он даже не выполняет первый // оператор echo в on-text-событии.

Самая странная часть: этот код работал раньше, и я регулярно его использовал. Я не изменил какую-либо часть того, что показано здесь, кроме операторов // echo, которые я использую для отладки.

addWorms and 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, которое содержит совпадение. Попробуйте добавить опубликованный код в новый удаленный файл mIRC, если это решит эту проблему, это означает, что есть код выше, который мешает захвату события TEXT (ошибка или другое событие TEXT содержит шаблон соответствия). Кроме того, '/' бесполезен для удаленного кода, и он предназначен только для идентификации текстовых команд vs для окна консоли mIRC. –

+0

Отлично! Спасибо. У меня есть команда: – MrJerkBird

+0

(продолжение) ... есть команда, которая подсчитывает, когда кто-нибудь вводит что-либо: on *: Текст: *: #: {/ * 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. 

можно объединить TEXT события обрабатывать оба действия, хотя, если они не связаны логики, я бы разделил их на другой удаленный файл.

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

    ; Another code over here.. 

    ; Count some stuff in here.. 
} 

Примечание:/ бесполезен на псевдоним/всплывающего окна/удаленного кода, и это только для определения текста против команд для консоли окна Mirc.