Add modules/strip_color.py
This commit is contained in:
parent
c87728a87d
commit
43740d40f4
3 changed files with 25 additions and 3 deletions
10
modules/strip_color.py
Normal file
10
modules/strip_color.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
from src import ModuleManager, Utils
|
||||
|
||||
@Utils.export("serverset", {"setting": "strip-color",
|
||||
"help": "Set whether I strip colors from my messages on this server",
|
||||
"validate": Utils.bool_or_none})
|
||||
class Module(ModuleManager.BaseModule):
|
||||
@Utils.hook("preprocess.send")
|
||||
def preprocess(self, event):
|
||||
if event["server"].get_setting("strip-color", False):
|
||||
return Utils.strip_font(event["line"])
|
|
@ -250,12 +250,16 @@ class Server(object):
|
|||
return self.until_read_timeout == 0
|
||||
|
||||
def send(self, data):
|
||||
encoded = data.split("\n")[0].strip("\r").encode("utf8")
|
||||
returned = self.events.on("preprocess.send").call_for_result(
|
||||
server=self, line=data)
|
||||
line = returned or data
|
||||
|
||||
encoded = line.split("\n")[0].strip("\r").encode("utf8")
|
||||
if len(encoded) > 450:
|
||||
encoded = encoded[:450]
|
||||
self.buffered_lines.append(encoded + b"\r\n")
|
||||
if self.bot.args.verbose:
|
||||
self.bot.log.info(">%s | %s", [str(self), encoded.decode("utf8")])
|
||||
|
||||
self.bot.log.debug(">%s | %s", [str(self), encoded.decode("utf8")])
|
||||
def _send(self):
|
||||
if not len(self.write_buffer):
|
||||
self.write_buffer = self.buffered_lines.pop(0)
|
||||
|
|
|
@ -155,6 +155,7 @@ COLOR_LIGHTBLUE, COLOR_PINK, COLOR_GREY, COLOR_LIGHTGREY = (12, 13,
|
|||
FONT_BOLD, FONT_ITALIC, FONT_UNDERLINE, FONT_INVERT = ("\x02", "\x1D",
|
||||
"\x1F", "\x16")
|
||||
FONT_COLOR, FONT_RESET = "\x03", "\x0F"
|
||||
REGEX_COLOR = re.compile("%s\d\d(?:,\d\d)?" % FONT_COLOR)
|
||||
|
||||
def color(s, foreground, background=None):
|
||||
foreground = str(foreground).zfill(2)
|
||||
|
@ -169,6 +170,13 @@ def bold(s):
|
|||
def underline(s):
|
||||
return "%s%s%s" % (FONT_UNDERLINE, s, FONT_UNDERLINE)
|
||||
|
||||
def strip_font(s):
|
||||
s = s.replace(FONT_BOLD, "")
|
||||
s = s.replace(FONT_ITALIC, "")
|
||||
s = REGEX_COLOR.sub("", s)
|
||||
s = s.replace(FONT_COLOR, "")
|
||||
return s
|
||||
|
||||
TIME_SECOND = 1
|
||||
TIME_MINUTE = TIME_SECOND*60
|
||||
TIME_HOUR = TIME_MINUTE*60
|
||||
|
|
Loading…
Reference in a new issue