Better way to write code for mIRC remote.ini

By puddleduck326 on Jun 13, 2014

I have a auto reply bot that that works rather well with heaps and heaps of elseif commands (300 odd lines), but I would just like to tidy it up / make it work better if anyone could advise?

 elseif (*how are you* iswm $1-) || (*how are you? iswm $1-) || (*how are you ? iswm $1-) {
                if ((%general) || ($($+(%,general.,$nick),2))) { return }
                set -u10 %general On
                set -u1800 %general. $+ $nick On
                var %r $rand(1,3)
          .timerme 1 $r(3,12) msg $chan Im good thanks. | return
  }

  elseif ((*hello*testbot* iswm $1-) || (*hi testbot* iswm $1-) || (*hey*testbot* iswm $1-)) {
                if ((%general) || ($($+(%,general.,$nick),2))) { return }
                set -u10 %general On
                set -u1800 %general. $+ $nick On
          .timerme 1 $r(3,12) msg $chan Hello $nick $+ , how are you? | return
  }

Comments

Sign in to comment.
Meta   -  Jun 14, 2014

Based on your excerpt, it looks to me like you'll cut about 2/3rds of your script by removing all of the:

if ((%general) || ($($+(%,general.,$nick),2))) { return }
                set -u10 %general On
                set -u1800 %general. $+ $nick On

And checking that neither of the vars are set at the top of the script, and putting everything within that block instead:

(Also, I'm assuming you're using * as the matchtext for the event rather than trying to match every possible trigger, so if you want those vars to only be set if someone enters something that triggers a response by the bot, you can just add an else after all the text match conditions that unsets them)

on *:TEXT:*:#whatever:{
  if !%general && !%general. [ $+ [ $nick ] ] {
    set -u10 %general On
    set -u1800 %general. $+ $nick On

    ; TEXT MATCH CONDITIONS AND RESPONSES HERE

    else unset %general %general. $+ $nick
  }
}

Note - There's no need to return, either.

By the way, depending on how you use timers, you may want to be wary of some issues mentioned this... This becomes especially important if your bot relays some part of the triggering text in its responses...

Also, this is not too important but in the following condition:

(*how are you* iswm $1-) || (*how are you? iswm $1-) || (*how are you ? iswm $1-)

Only the first would ever be met, so you could omit the other two... Additionally, ? would actually be considered a wildcard character here for a single (non-null) character... so something like *how are you? iswm $1- would be true for how are youa, how are you!, etc.

I'm also trying to think of with a better method for storing the responses and possible triggers, so I'll let you know when I come up with something.

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.