def onLoadConfig(self):
     CensorPlugin.onLoadConfig(self)
     try:
         self._mute = self.config.getboolean('urbanterror', 'mute')
     except:
         pass
     try:
         self._slap = self.config.getboolean('urbanterror', 'slap')
     except:
         pass
     try:
         self._muteduration1 = self.config.getfloat('urbanterror',
                                                    'muteduration1')
     except:
         pass
     try:
         self._muteduration2 = self.config.getfloat('urbanterror',
                                                    'muteduration2')
     except:
         pass
     try:
         self._muteduration3 = self.config.getfloat('urbanterror',
                                                    'muteduration3')
     except:
         pass
     try:
         self._warnafter = self.config.getint('urbanterror', 'warn_after')
     except:
         pass
 def onLoadConfig(self):
     CensorPlugin.onLoadConfig(self)
     try:
         self._mute = self.config.getboolean("urbanterror", "mute")
     except:
         pass
     try:
         self._slap = self.config.getboolean("urbanterror", "slap")
     except:
         pass
     try:
         self._muteduration1 = self.config.getfloat("urbanterror", "muteduration1")
     except:
         pass
     try:
         self._muteduration2 = self.config.getfloat("urbanterror", "muteduration2")
     except:
         pass
     try:
         self._muteduration3 = self.config.getfloat("urbanterror", "muteduration3")
     except:
         pass
     try:
         self._warnafter = self.config.getint("urbanterror", "warn_after")
     except:
         pass
Exemple #3
0
class CensorTestCase(B3TestCase):
    """
    Ease testcases that need an working B3 console and need to control the censor plugin config
    """
    def setUp(self):
        # Timer needs to be patched or the Censor plugin would schedule a 2nd check one minute after
        # penalizing a player.
        self.timer_patcher = patch('threading.Timer')
        self.timer_patcher.start()

        self.log = logging.getLogger('output')
        self.log.propagate = False

        B3TestCase.setUp(self)
        self.console.startup()
        self.log.propagate = True

        self.joe = FakeClient(self.console, name="Joe", exactName="Joe", guid="zaerezarezar", groupBits=1, team=b3.TEAM_UNKNOWN)

    def tearDown(self):
        B3TestCase.tearDown(self)
        self.timer_patcher.stop()

    def init_plugin(self, config_content):
        self.conf = XmlConfigParser()
        self.conf.setXml(config_content)
        self.p = CensorPlugin(self.console, self.conf)
        self.log.setLevel(logging.DEBUG)
        self.log.info("============================= Censor plugin: loading config ============================")
        self.p.onLoadConfig()
        self.log.info("============================= Censor plugin: starting  =================================")
        self.p.onStartup()
 def onLoadConfig(self):
     CensorPlugin.onLoadConfig(self)
     try:
         self._mute = self.config.getboolean('urbanterror', 'mute')
     except:
         pass
     try:
         self._slap = self.config.getboolean('urbanterror', 'slap')
     except:
         pass
     try:
         self._muteduration1 = self.config.getfloat('urbanterror', 'muteduration1')
     except:
         pass
     try:
         self._muteduration2 = self.config.getfloat('urbanterror', 'muteduration2')
     except:
         pass
     try:
         self._muteduration3 = self.config.getfloat('urbanterror', 'muteduration3')
     except:
         pass
     try:
         self._warnafter = self.config.getint('urbanterror', 'warn_after')
     except:
         pass
    def penalizeClient(self, penalty, client, data=""):
        # addition to mute players in Urban Terror
        if self._slap:
            self.console.write("slap %s" % client.cid)
        if not self._mute:
            CensorPlugin.penalizeClient(self, penalty, client, data="")
        else:
            if hasattr(client, "langMuted") and client.langMuted:
                self.debug("%s is already muted" % client.name)
            else:
                if not hasattr(client, "langWarnings"):
                    client.langWarnings = 1
                else:
                    client.langWarnings += 1
                if client.langWarnings == 1:
                    if self._muteduration1 != 0:
                        self.debug("Muting %s for %s minutes." % (client.name, self._muteduration1))
                        self.console.say(
                            self.getMessage(
                                "mute_announcement", {"playername": client.name, "duration": self._muteduration1}
                            )
                        )
                        self.console.write("mute %s" % client.cid)
                        client.langMuted = True
                        t = threading.Timer(self._muteduration1 * 60, self.unmutePlayer, (client,))
                        t.start()
                elif client.langWarnings == 2:
                    if self._muteduration2 != 0:
                        self.debug("Muting %s for %s minutes." % (client.name, self._muteduration2))
                        self.console.say(
                            self.getMessage(
                                "mute_announcement", {"playername": client.name, "duration": self._muteduration2}
                            )
                        )
                        self.console.write("mute %s" % client.cid)
                        client.langMuted = True
                        t = threading.Timer(self._muteduration2 * 60, self.unmutePlayer, (client,))
                        t.start()
                else:
                    self.debug("Muting %s for %s minutes." % (client.name, self._muteduration3))
                    self.console.say(
                        self.getMessage(
                            "mute_announcement", {"playername": client.name, "duration": self._muteduration3}
                        )
                    )
                    self.console.write("mute %s" % client.cid)
                    client.langMuted = True
                    t = threading.Timer(self._muteduration3 * 60, self.unmutePlayer, (client,))
                    t.start()

                if client.langWarnings > self._warnafter:
                    self._adminPlugin.penalizeClient(
                        penalty.type, client, penalty.reason, penalty.keyword, penalty.duration, None, data
                    )
Exemple #6
0
 def init_plugin(self, config_content):
     self.conf = XmlConfigParser()
     self.conf.setXml(config_content)
     self.p = CensorPlugin(self.console, self.conf)
     self.log.setLevel(logging.DEBUG)
     self.log.info(
         "============================= Censor plugin: loading config ============================"
     )
     self.p.onLoadConfig()
     self.log.info(
         "============================= Censor plugin: starting  ================================="
     )
     self.p.onStartup()
Exemple #7
0
 def setUpClass(cls):
     from b3.fake import fakeConsole
     cls.conf = XmlConfigParser()
     cls.conf.setXml(r"""
         <configuration plugin="censor">
             <settings name="settings">
                 <set name="max_level">40</set>
                 <!-- ignore bad words that have equal or less characters: -->
                 <set name="ignore_length">3</set>
             </settings>
             <badwords>
                 <penalty type="warning" reasonkeyword="default_reason"/>
                 <badword name="foo" lang="en">
                     <regexp>\bf[o0]{2}\b</regexp>
                 </badword>
             </badwords>
             <badnames>
                 <penalty type="warning" reasonkeyword="badname"/>
                 <badname name="c**t">
                     <word>c**t</word>
                 </badname>
             </badnames>
         </configuration>
     """)
     cls.p = CensorPlugin(fakeConsole, cls.conf)
     cls.p.onLoadConfig()
     cls.p.onStartup()
Exemple #8
0
 def init_plugin(self, config_content):
     self.conf = XmlConfigParser()
     self.conf.setXml(config_content)
     self.p = CensorPlugin(self.console, self.conf)
     self.log.setLevel(logging.DEBUG)
     self.log.info("============================= Censor plugin: loading config ============================")
     self.p.onLoadConfig()
     self.log.info("============================= Censor plugin: starting  =================================")
     self.p.onStartup()
Exemple #9
0
    def setUp(self):
        # Timer needs to be patched or the Censor plugin would schedule a 2nd check one minute after
        # penalizing a player.
        self.timer_patcher = patch('threading.Timer')
        self.timer_patcher.start()

        super(CensorTestCase, self).setUp()
        self.conf = XmlConfigParser()
        self.conf.setXml(r"""
            <configuration plugin="censor">
                <badwords>
                    <penalty type="warning" reasonkeyword="racist"/>
                </badwords>
                <badnames>
                    <penalty type="warning" reasonkeyword="badname"/>
                </badnames>
            </configuration>
        """)
        self.p = CensorPlugin(b3.console, self.conf)
        self.p.onLoadConfig()
Exemple #10
0
class CensorTestCase(B3TestCase):
    """
    Ease testcases that need an working B3 console and need to control the censor plugin config
    """
    def setUp(self):
        # Timer needs to be patched or the Censor plugin would schedule a 2nd check one minute after
        # penalizing a player.
        self.timer_patcher = patch('threading.Timer')
        self.timer_patcher.start()

        self.log = logging.getLogger('output')
        self.log.propagate = False

        B3TestCase.setUp(self)
        self.console.startup()
        self.log.propagate = True

        self.joe = FakeClient(self.console,
                              name="Joe",
                              exactName="Joe",
                              guid="zaerezarezar",
                              groupBits=1,
                              team=b3.TEAM_UNKNOWN)

    def tearDown(self):
        B3TestCase.tearDown(self)
        self.timer_patcher.stop()

    def init_plugin(self, config_content):
        self.conf = XmlConfigParser()
        self.conf.setXml(config_content)
        self.p = CensorPlugin(self.console, self.conf)
        self.log.setLevel(logging.DEBUG)
        self.log.info(
            "============================= Censor plugin: loading config ============================"
        )
        self.p.onLoadConfig()
        self.log.info(
            "============================= Censor plugin: starting  ================================="
        )
        self.p.onStartup()
  def penalizeClient(self, penalty, client, data=''):
    # addition to mute players in Urban Terror
    if self._slap:
      self.console.write('slap %s' % client.cid)
    if not self._mute:
      CensorPlugin.penalizeClient(self, penalty, client, data='')
    else:
      if hasattr(client, 'langMuted') and client.langMuted:
        self.debug('%s is already muted'%client.name)
      else:
        if not hasattr(client, 'langWarnings'):
          client.langWarnings = 1
        else:
          client.langWarnings += 1
        if client.langWarnings == 1:
          if self._muteduration1 != 0:
            self.debug('Muting %s for %s minutes.' % (client.name, self._muteduration1))
            self.console.say('Muting %s for %s minutes.' % (client.name, self._muteduration1))
            self.console.write('mute %s' % client.cid)
            client.langMuted = True
            t = threading.Timer(self._muteduration1 * 60, self.unmutePlayer, (client,))
            t.start()
        elif client.langWarnings == 2:
          if self._muteduration2 != 0:
            self.debug('Muting %s for %s minutes.' % (client.name, self._muteduration2))
            self.console.say('Muting %s for %s minutes.' % (client.name, self._muteduration2))
            self.console.write('mute %s' % client.cid)  
            client.langMuted = True
            t = threading.Timer(self._muteduration2 * 60, self.unmutePlayer, (client,))
            t.start()
        else:
          self.debug('Muting %s for %s minutes.' % (client.name, self._muteduration3))
          self.console.say('Muting %s for %s minutes.' % (client.name, self._muteduration3))
          self.console.write('mute %s' % client.cid)
          client.langMuted = True
          t = threading.Timer(self._muteduration3 * 60, self.unmutePlayer, (client,))
          t.start()

        if client.langWarnings > self._warnafter:
          self._adminPlugin.penalizeClient(penalty.type, client, penalty.reason, penalty.keyword, penalty.duration, None, data)
Exemple #12
0
class CensorTestCase(B3TestCase):
    """base class for TestCase to apply to the Censor plugin"""

    def setUp(self):
        # Timer needs to be patched or the Censor plugin would schedule a 2nd check one minute after
        # penalizing a player.
        self.timer_patcher = patch('threading.Timer')
        self.timer_patcher.start()

        super(CensorTestCase, self).setUp()
        self.conf = XmlConfigParser()
        self.conf.setXml(r"""
            <configuration plugin="censor">
                <badwords>
                    <penalty type="warning" reasonkeyword="racist"/>
                </badwords>
                <badnames>
                    <penalty type="warning" reasonkeyword="badname"/>
                </badnames>
            </configuration>
        """)
        self.p = CensorPlugin(self.console, self.conf)
        self.p.onLoadConfig()

    def tearDown(self):
        self.timer_patcher.stop()

    def assert_name_penalized_count(self, name, count):
        self.p.penalizeClientBadname = Mock()

        mock_client = Mock()
        mock_client.connected = True
        mock_client.exactName = name

        self.p.checkBadName(mock_client)
        self.assertEquals(count, self.p.penalizeClientBadname.call_count, "name '%s' should have been penalized %s time" % (name, count))

    def assert_name_is_penalized(self, name):
        self.assert_name_penalized_count(name, 1)

    def assert_name_is_not_penalized(self, name):
        self.assert_name_penalized_count(name, 0)

    def assert_chat_is_penalized(self, text):
        self.p.penalizeClient = Mock()

        mock_client = Mock()
        mock_client.connected = True

        try:
            self.p.checkBadWord(text, mock_client)
            self.fail("text [%s] should have raised a VetoEvent" % text)
        except b3.events.VetoEvent, e:
            self.assertEquals(1, self.p.penalizeClient.call_count, "text [%s] should have been penalized" % text)
            return self.p.penalizeClient.call_args[0] if len(self.p.penalizeClient.call_args) else None
Exemple #13
0
class CensorTestCase(B3TestCase):
    """base class for TestCase to apply to the Censor plugin"""

    def setUp(self):
        # Timer needs to be patched or the Censor plugin would schedule a 2nd check one minute after
        # penalizing a player.
        self.timer_patcher = patch('threading.Timer')
        self.timer_patcher.start()

        super(CensorTestCase, self).setUp()
        self.conf = XmlConfigParser()
        self.conf.setXml(r"""
            <configuration plugin="censor">
                <badwords>
                    <penalty type="warning" reasonkeyword="racist"/>
                </badwords>
                <badnames>
                    <penalty type="warning" reasonkeyword="badname"/>
                </badnames>
            </configuration>
        """)
        self.p = CensorPlugin(b3.console, self.conf)
        self.p.onLoadConfig()

    def tearDown(self):
        self.timer_patcher.stop()

    def assert_name_penalized_count(self, name, count):
        self.p.penalizeClientBadname = Mock()

        mock_client = Mock()
        mock_client.connected = True
        mock_client.exactName = name

        self.p.checkBadName(mock_client)
        self.assertEquals(count, self.p.penalizeClientBadname.call_count, "name '%s' should have been penalized %s time" % (name, count))

    def assert_name_is_penalized(self, name):
        self.assert_name_penalized_count(name, 1)

    def assert_name_is_not_penalized(self, name):
        self.assert_name_penalized_count(name, 0)

    def assert_chat_is_penalized(self, text):
        self.p.penalizeClient = Mock()

        mock_client = Mock()
        mock_client.connected = True

        try:
            self.p.checkBadWord(text, mock_client)
            self.fail("text [%s] should have raised a VetoEvent" % text)
        except b3.events.VetoEvent, e:
            self.assertEquals(1, self.p.penalizeClient.call_count, "text [%s] should have been penalized" % text)
            return self.p.penalizeClient.call_args[0] if len(self.p.penalizeClient.call_args) else None
Exemple #14
0
    def setUp(self):
        # Timer needs to be patched or the Censor plugin would schedule a 2nd check one minute after
        # penalizing a player.
        self.timer_patcher = patch('threading.Timer')
        self.timer_patcher.start()

        super(CensorTestCase, self).setUp()
        self.conf = XmlConfigParser()
        self.conf.setXml(r"""
            <configuration plugin="censor">
                <badwords>
                    <penalty type="warning" reasonkeyword="racist"/>
                </badwords>
                <badnames>
                    <penalty type="warning" reasonkeyword="badname"/>
                </badnames>
            </configuration>
        """)
        self.p = CensorPlugin(self.console, self.conf)
        self.p.onLoadConfig()
Exemple #15
0
class Censor_functional_tests(unittest.TestCase):

    def setUp(self):
        # create a FakeConsole parser
        self.parser_conf = XmlConfigParser()
        self.parser_conf.loadFromString(r"""<configuration/>""")
        self.console = FakeConsole(self.parser_conf)
        self.console.startup()

        self.joe = FakeClient(self.console, name="Joe", exactName="Joe", guid="zaerezarezar", groupBits=1, team=b3.TEAM_UNKNOWN)

    def init_plugin(self, config_content):
        self.conf = XmlConfigParser()
        self.conf.setXml(config_content)
        self.p = CensorPlugin(self.console, self.conf)
        self.p.onLoadConfig()
        self.p.onStartup()


    def test_conf(self, timer_patch):
        self.init_plugin(r"""
            <configuration plugin="censor">
                <settings name="settings">
                    <set name="max_level">40</set>
                    <!-- ignore bad words that have equal or less characters: -->
                    <set name="ignore_length">3</set>
                </settings>
                <badwords>
                    <penalty type="warning" reasonkeyword="default_reason"/>
                    <badword name="foo" lang="en">
                        <regexp>\bf[o0]{2}\b</regexp>
                    </badword>
                </badwords>
                <badnames>
                    <penalty type="warning" reasonkeyword="badname"/>
                    <badname name="c**t">
                        <word>c**t</word>
                    </badname>
                </badnames>
            </configuration>
        """)
        self.assertEqual(1, len(self.p._badWords))


    def test_joe_says_badword(self, timer_patch):
        self.init_plugin(r"""
            <configuration plugin="censor">
                <settings name="settings">
                    <set name="max_level">40</set>
                    <!-- ignore bad words that have equal or less characters: -->
                    <set name="ignore_length">3</set>
                </settings>
                <badwords>
                    <penalty type="warning" reasonkeyword="default_reason"/>
                    <badword name="foo" lang="en">
                        <regexp>\bf[o0]{2}\b</regexp>
                    </badword>
                </badwords>
                <badnames>
                    <penalty type="warning" reasonkeyword="badname"/>
                    <badname name="c**t">
                        <word>c**t</word>
                    </badname>
                </badnames>
            </configuration>
        """)
        self.joe.warn = Mock()
        self.joe.connects(0)
        self.joe.says("qsfdl f0o!")
        self.assertEqual(1, self.joe.warn.call_count)


    def test_cunt_connects(self, timer_patch):
        self.init_plugin(r"""
            <configuration plugin="censor">
                <settings name="settings">
                    <set name="max_level">40</set>
                    <!-- ignore bad words that have equal or less characters: -->
                    <set name="ignore_length">3</set>
                </settings>
                <badwords>
                    <penalty type="warning" reasonkeyword="default_reason"/>
                    <badword name="foo" lang="en">
                        <regexp>\bf[o0]{2}\b</regexp>
                    </badword>
                </badwords>
                <badnames>
                    <penalty type="warning" reasonkeyword="badname"/>
                    <badname name="c**t">
                        <word>c**t</word>
                    </badname>
                </badnames>
            </configuration>
        """)
        self.joe.name = self.joe.exactName = "c**t"
        self.joe.warn = Mock()
        self.joe.connects(0)
        self.assertEqual(1, self.joe.warn.call_count)


    def test_2_letters_badword_when_ignore_length_is_2(self, timer_patch):
        self.init_plugin(r"""
            <configuration plugin="censor">
                <settings name="settings">
                    <set name="max_level">40</set>
                    <!-- ignore bad words that have equal or less characters: -->
                    <set name="ignore_length">2</set>
                </settings>
                <badwords>
                    <penalty type="warning" reasonkeyword="default_reason"/>
                    <badword name="TG" lang="fr">
                        <regexp>\bTG\b</regexp>
                    </badword>
                </badwords>
                <badnames>
                    <penalty type="warning" reasonkeyword="badname"/>
                </badnames>
            </configuration>
        """)

        self.joe.warn = Mock()
        self.joe.warn.reset_mock()
        self.joe.connects(0)
        self.joe.says("tg")
        self.assertEqual(0, self.joe.warn.call_count)


    def test_2_letters_badword_when_ignore_length_is_1(self, timer_patch):
        self.init_plugin(r"""
            <configuration plugin="censor">
                <settings name="settings">
                    <set name="max_level">40</set>
                    <!-- ignore bad words that have equal or less characters: -->
                    <set name="ignore_length">1</set>
                </settings>
                <badwords>
                    <penalty type="warning" reasonkeyword="default_reason"/>
                    <badword name="TG" lang="fr">
                        <regexp>\bTG\b</regexp>
                    </badword>
                </badwords>
                <badnames>
                    <penalty type="warning" reasonkeyword="badname"/>
                </badnames>
            </configuration>
        """)

        self.joe.warn = Mock()
        self.joe.warn.reset_mock()
        self.joe.connects(0)
        self.joe.says("tg")
        self.assertEqual(1, self.joe.warn.call_count)
Exemple #16
0
 def init_plugin(self, config_content):
     self.conf = XmlConfigParser()
     self.conf.setXml(config_content)
     self.p = CensorPlugin(self.console, self.conf)
     self.p.onLoadConfig()
     self.p.onStartup()
    def penalizeClient(self, penalty, client, data=''):
        # addition to mute players in Urban Terror
        if self._slap:
            self.console.write('slap %s' % client.cid)
        if not self._mute:
            CensorPlugin.penalizeClient(self, penalty, client, data='')
        else:
            if hasattr(client, 'langMuted') and client.langMuted:
                self.debug('%s is already muted' % client.name)
            else:
                if not hasattr(client, 'langWarnings'):
                    client.langWarnings = 1
                else:
                    client.langWarnings += 1
                if client.langWarnings == 1:
                    if self._muteduration1 != 0:
                        self.debug('Muting %s for %s minutes.' %
                                   (client.name, self._muteduration1))
                        self.console.say(
                            self.getMessage(
                                'mute_announcement', {
                                    'playername': client.name,
                                    'duration': self._muteduration1
                                }))
                        self.console.write('mute %s' % client.cid)
                        client.langMuted = True
                        t = threading.Timer(self._muteduration1 * 60,
                                            self.unmutePlayer, (client, ))
                        t.start()
                elif client.langWarnings == 2:
                    if self._muteduration2 != 0:
                        self.debug('Muting %s for %s minutes.' %
                                   (client.name, self._muteduration2))
                        self.console.say(
                            self.getMessage(
                                'mute_announcement', {
                                    'playername': client.name,
                                    'duration': self._muteduration2
                                }))
                        self.console.write('mute %s' % client.cid)
                        client.langMuted = True
                        t = threading.Timer(self._muteduration2 * 60,
                                            self.unmutePlayer, (client, ))
                        t.start()
                else:
                    self.debug('Muting %s for %s minutes.' %
                               (client.name, self._muteduration3))
                    self.console.say(
                        self.getMessage(
                            'mute_announcement', {
                                'playername': client.name,
                                'duration': self._muteduration3
                            }))
                    self.console.write('mute %s' % client.cid)
                    client.langMuted = True
                    t = threading.Timer(self._muteduration3 * 60,
                                        self.unmutePlayer, (client, ))
                    t.start()

                if client.langWarnings > self._warnafter:
                    self._adminPlugin.penalizeClient(penalty.type, client,
                                                     penalty.reason,
                                                     penalty.keyword,
                                                     penalty.duration, None,
                                                     data)
 def __init__(self, console, config):
   if console.gameName[:5] != 'iourt':
     console.critical('Censorurt plugin is for Urban Terror only')
   else:
     CensorPlugin.__init__(self, console, config)
def index():

    b3log_file = StringIO()

    config_log_content = ""
    config_content = None
    chat_text = ""
    chat_consequences = ""
    playername_text = ""
    playername_consequences = ""

    if request.method == "POST":

        # create a B3 bot
        b3bot_conf = XmlConfigParser()
        b3bot_conf.loadFromString("<configuration/>")
        b3bot = FakeConsole(b3bot_conf)
        b3bot.screen = b3log_file

        # create a Censor plugin instance
        censor_conf = XmlConfigParser()
        censor_plugin = CensorPlugin(b3bot, censor_conf)

        # create a player Joe to test the chat messages
        joe = FakeClient(console=b3bot, name="Joe", guid="000joe000")

        # monkey patch the Censor plugin penalizeClient method to log its actions
        # and remove a dependy over the admin plugin
        censor_plugin.penalizeClient = penalizeClient
        censor_plugin.penalizeClientBadname = penalizeClientBadname

        # add our log handler to collect B3 log messages
        b3log.handlers = []
        b3log_handler = logging.StreamHandler(b3log_file)
        b3log.addHandler(b3log_handler)
        b3log.setLevel(logging.DEBUG)

        b3bot.log.disabled = False

        # read form data
        config_content = request.form["config_content"]
        chat_text = request.form["chat"]
        playername_text = request.form["playername"]

        if config_content is not None:
            # we got a config to test
            b3log_file.truncate(0)
            b3log.info("--------- loading Censor plugin config ----------")
            try:
                censor_conf.loadFromString(config_content)
            except ConfigFileNotValid, err:
                b3log.error("bad config file format : %r" % err)
                b3log_file.seek(0)
                config_log_content = b3log_file.read()
            except Exception, err:
                b3log.error("Unexpected error : %r" % err)
                b3log_file.seek(0)
                config_log_content = b3log_file.read()
            else:
                censor_plugin.onLoadConfig()
                b3log.info("--------- Censor plugin config loaded ----------")
                b3log_file.seek(0)
                config_log_content = b3log_file.read()

                if chat_text:
                    # we got some chat to check for badwords
                    b3log_file.truncate(0)
                    try:
                        censor_plugin.checkBadWord(text=chat_text, client=joe)
                    except VetoEvent:
                        pass
                    b3log_file.seek(0)
                    chat_consequences = b3log_file.read()

                if playername_text:
                    # we got some player name to check for badnames
                    b3log_file.truncate(0)
                    try:
                        joe.name = playername_text
                        with patch.object(threading, "Timer"):  # prevent the Censor plugin to check again every minute
                            censor_plugin.checkBadName(client=joe)
                    except VetoEvent:
                        pass
                    b3log_file.seek(0)
                    playername_consequences = b3log_file.read()