Here is something I made for someone a a few weeks ago. It uses user levels, therefore isn't good for alot of nicks. However, considering you were trying to use variables, I doubt you have many nicks you want to copy.
Code:
#parot off
on +99:TEXT:*:#:/msg # $1-
#parot end

dialog parot {
  title "Parot Bot Control Pannel"
  size -1 -1 248 288
  option pixels notheme
  box "Users to be Mocked:", 1, 12 7 219 181
  list 99, 25 25 197 151, vsbar size sort
  button "Add", 3, 41 198 65 25
  button "Delete", 4, 133 198 65 25, disable
  check "Disable Parot Bot", 5, 6 265 113 17
  button "OK", 6, 171 254 65 25, ok
}

on *:dialog:parot:init:0:{ _init.users.parot }

alias -l _init.users.parot {
  did -r parot 99
  var %i = 1 | while ($ulist(*,99,%i)) { did -a parot 99 $v1 | inc %i }
  ; ^^ adds all levels to the list
  if ($group(#parot) == off) { did -c parot 5 } 
}

on *:dialog:parot:sclick:99:{
  if $did($did).sel { did -e parot 4 }
  else did -b parot 4
}
on *:dialog:parot:sclick:3:{
  var %b = 99
  : vars for level and listbox id
  did -a $dname %b $$input(Add user to list,equ,Add user.)
  ; get input to add to listbox
  auser 99 $!
  ; adds the same input to the address list
  _init.users.parot
}

on *:dialog:parot:sclick:4:{
  ; Fires for sclick on the ID's 322, 305 & 310 (The "delete" buttons)
  var %b = 99
  while $did(%b,1).sel {
    ruser 99 $did(%b,1).seltext
    did -d $dname %b $did(%b,1).sel
  }
  _init.users.parot
}

on *:dialog:parot:sclick:5:{ 
  if ($did(5).state == 1) { .disable #parot } | else { .enable #parot }
}

menu status,channel {
  Parot Bot:dialog -mo parot parot
}