Although I haven't really tried this, it looks like it should work as-is. I would add a check to ensure that a $2 and $3 is there when triggering the command. Possibly something like this
writeini users.ini $$2 level $$3
Just a simple way to do it. The $$'s ensure that the command will on trigger if the $2/$3 are present. However, there are other ways to check for such things and also return an error possibly if desired.
Example:
if ($1 == !add) && ($nick isop #) && (!$2) || (!$3) { writeini users.ini $2 level $3 }
else { notice $nick ERROR: Wrong Syntax. Correct syntax: !Add <nick> <level> }
The ! in front of the $ checks if that parameter exists in the trigger. If the $2 or $3 doesn't exist (The || means or)
Just some tips. Don't take it as me implying you're a noob by detailing my examples. I don't mean it in any fashion as that.
Good job overall. :)