$log_queue.push qmsg
end
-def restart_logger(newlogger = false)
+def halt_logger
if $log_thread && $log_thread.alive?
$log_queue << nil
$log_thread.join
$log_thread = nil
end
+end
+
+END { halt_logger }
+
+def restart_logger(newlogger = false)
+ halt_logger
$logger = newlogger if newlogger
# Array of channels names where the bot should be quiet
# '*' means all channels
#
- @quiet = []
+ @quiet = Set.new
@client[:welcome] = proc {|data|
m = WelcomeMessage.new(self, server, data[:source], data[:target], data[:message])
}
@client[:join] = proc {|data|
m = JoinMessage.new(self, server, data[:source], data[:channel], data[:message])
+ sendq("MODE #{data[:channel]}", nil, 0) if m.address?
@plugins.irc_delegate("join", m)
sendq("WHO #{data[:channel]}", data[:channel], 2) if m.address?
}
return @quiet.include?('*') || @quiet.include?(channel.downcase)
end
- def set_quiet(channel)
+ def set_quiet(channel = nil)
if channel
ch = channel.downcase.dup
- @quiet << ch unless @quiet.include?(ch)
+ @quiet << ch
else
@quiet.clear
@quiet << '*'
end
end
- def reset_quiet(channel)
+ def reset_quiet(channel = nil)
if channel
@quiet.delete channel.downcase
else
end
multi_line = original_message.to_s.gsub(/[\r\n]+/, "\n")
+
+ # if target is a channel with +c or +C modes, strip colours
+ if where.kind_of?(Channel) and where.mode.any?('c', 'C')
+ multi_line.replace(BasicUserMessage.stripcolour(multi_line).gsub(AttributeRx,''))
+ end
+
messages = Array.new
case opts[:newlines]
when :join