@verb #3797:"chan_send" this none this rxdo #833 @program #3797:"chan_send" this none this $perm_utils:can_hack() || raise(E_PERM) {id, comm, text} = args "First, pre-transmission processing, channel history updates, etc.:" {members, history, atime, @options} = this:get_chan(id) if ("/dev/null" in options) return endif sig = string_hash(text) if (valid(comm)) if (!comm in members) return endif locations = {} for c in (members) locations = {@locations, c:where()} endfor loc = locations[comm in members] "Echo supression, part 1" for h in (history) {which, where, what} = h if (which != comm && where == loc && what == sig) "Already heard this message" return endif endfor else loc = #-1 endif history = {{comm, loc, sig}, @history[1..min($, this.echo_hist_max)]} this:set_chan(id, {members, history, time(), @options}) "Begin to transmit" done = {loc} for i in [1..length(members)] "Echo supression, part 2" l = locations[i] c = members[i] if (!(l in done)) done = {@done, l} c:do_announce(text) endif $command_utils:suspend_if_needed() endfor .