1. All aliases begin with word "alias" should be put in the remote section, not in aliases.
2. Alias can be put anywhere in the remote. Putting alias beside an event doesnt mean that alias will work for that event. Alias works when you call it in the event regardless where you put the alias in the remote.
Code:
; all lines begin with ";" is a comment.
; alias to substract user point.
alias -l substract.pts {
  yourcode here
}

; when user leaves the channel
on !*:part:#:{
  ; tell bot to turn off timerpoints.
  $+(.timerpoints.,#,.,$nick) off

  ; and then call substract.pts alias to substract their point
  substract.pts $+(#,.,$nick)
}

what you do is:
Code:
; when user leaves channel, tell bot to turn off timer.
on !*:part:#:$+(.timerpoints.,#,.,$nick) off

; this is an alias 
alias -l add.pts {
  ; tell bot to add point and write it to ini file
  writeini -n Points.ini $1 Points $calc($readini(Points.ini,$1,Points) + 1)

  ; then call substract.pts alias to do whatever substract.pts want to do in its alias.
  subtract.pts $+(#,.,$nick)
}

; you dont have substract.pts alias in remote, but you calling it in add.pts alias.
; this will result unknown command in your status window