+ ucmdr [expr {$nv ? "I will join $chan when I'm restarted " : \
+ "I won't join $chan when I'm restarted "}] {}
+}
+
+def_chancmd userinvite {
+ set nv [string tolower [ta_word]]
+ switch -exact $nv {
+ pub { set txt "!invite will work for $chan, but it won't work by /msg" }
+ here { set txt "!invite and /msg invite will work, but only for users who are already on $chan." }
+ all { set txt "Any user will be able to invite themselves or anyone else to $chan." }
+ none { set txt "I will not invite anyone to $chan." }
+ default {
+ error "channel userinvite must be `pub', `here', `all' or `none'
+ }
+ }
+ chandb_set $chan userinvite $nv
+ ucmdr $txt {}
+}
+
+def_chancmd topic {
+ set what [ta_word]
+ switch -exact $what {
+ leave {
+ ta_nomore
+ chandb_set $chan topicset {}
+ ucmdr "I won't ever change the topic of $chan." {}
+ }
+ set {
+ set t [string trim $text]
+ if {![string length $t]} {
+ error "you must specific the topic to set"
+ }
+ chandb_set $chan topicset $t
+ ucmdr "Whenever I'm alone on $chan, I'll set the topic to $t." {}
+ }
+ see - tell {
+ ta_listop {
+ set ta_listop_ev [chandb_get $chan topic$what]
+ } {
+ if {"$ta_listop_ev" != "*"} {
+ if {![ischan $ta_listop_ev]} {
+ error "bad channel \`$ta_listop_ev' in topic $what"
+ }
+ set ta_listop_ev [irctolower $ta_listop_ev]
+ }
+ }
+ chandb_set $chan topic$what $ta_listop_ev
+ ucmdr "Topic $what list for $chan: $ta_listop_ev" {}
+ }
+ default {
+ error "unknown channel topic subcommand - see help channel"
+ }
+ }
+}
+
+def_chancmd mode {
+ set mode [ta_word]
+ if {"$mode" != "*" && ![regexp {^(([-+][imnpst]+)+)$} $mode mode]} {
+ error {channel mode must be * or match ([-+][imnpst]+)+}
+ }
+ chandb_set $chan mode $mode
+ if {"$mode" == "*"} {
+ ucmdr "I won't ever change the mode of $chan." {}
+ } else {
+ ucmdr "Whenever I'm alone on $chan, I'll set the mode to $mode." {}
+ }