+nicklist(){
+ local nickfile="${chatfile%/channel}/nicks"
+ case $1 in
+ enter)
+ trap 'nicklist leave' INT QUIT
+ sed -i -E "/^${SESSION_KEY%%-*} /d" "$nickfile"
+ printf '%s %i %s\n' "${SESSION_KEY%%-*}" "$$" "$nickname" >>"$nickfile"
+ ;;
+ leave)
+ sed -i -E "/^${SESSION_KEY%%-*} $$ /d" "$nickfile"
+ ;;
+ esac
+
+ nicklist='NICKNAMES: '
+ while read -r s p nick; do
+ [ -d "/proc/$p" ] && nicklist="${nicklist}/$nick/" \
+ || sed -i -E "/^$s $p /d" "$nickfile"
+ done <"$nickfile"
+ if ! tail -n20 "$chatfile" |tac |grep -m1 '^NICKNAMES: ' |grep -qxF "$nicklist"; then
+ printf '%s\n' "$nicklist" >>"$chatfile"
+ fi
+}
+