Not Fully Tested, but here is some starting
Code:
alias favchan dialog -m favchan favchan
dialog favchan {
  title "Channel Anchor for Bot"
  size -1 -1 245 95
  option dbu
  list 100, 5 15 150 81, sort
  edit "", 200, 160 40 80 10
  button "Delete Selected", 900, 160 15 80 10
  button "Add Channel", 901, 160 55 80 10
  button "Save and Close", 999, 160 75 80 15, cancel
}
on *:dialog:favchan:init:0:{
  loadbuf -o favchan 100 favchan.txt
}
on *:dialog:favchan:sclick:900:{ did -d favchan 100 $did(favchan,100).sel }
on *:dialog:favchan:sclick:901:{ did -a favchan 100 $did(favchan,200).text | did -r favchan 200 }
on *:dialog:favchan:sclick:999:{ savebuf -o favchan 100 favchan.txt }

on *:part:#:{ .timerfavchan 1 1 favchancheck $chan }
alias favchancheck {
  echo -s . $nick($$1,0)
  var %chancount = $nick($$1,0)
  if (%chancount <= 1) {
    var %checkchan = $read(favchan.txt,w,$+(*,$1,*))
    if (%checkchan == $null) { part $1 }
  }
}
on *:quit:{
  var %chanlistc = $comchan($me,0)
  var %i = 1
  while (%i <= %chanlistc) {
    var %chanlist = %chanlist $+ $chr(44) $+ $comchan($nick,%i)
    inc %i
  }
  .timerquitter 1 1 quitlist %chanlist
}
alias quitlist {
  var %chanlist = $$1
  var %count = $gettok(%chanlist,0,44)
  var %i = 1
  while (%i <= %count) {
    favchancheck $gettok(%chanlist,%i,44)
    inc %i
  }
}
; Added below to populate the listbox of the dialog the first time.
alias chanlist {
  var %listcount = $ini(mirc.ini,chanfolder,0) - 1
  var %i = 0
  while (%i <= %listcount) {
    var %x = n $+ %i
    did -a favchan 100 $gettok($readini(mirc.ini,chanfolder,%x),1,44)
    inc %i
  }
}