Exemple #1
0
    def _hype_stats_command(self, session: InboundMessageSession):
        stats_filename = self._config.get('hype_stats_filename')

        if not stats_filename or \
                stats_filename and not os.path.exists(stats_filename):
            session.reply('{} This command is currently unavailable!'.format(
                gen_roar()))
            return

        try:
            with open(stats_filename) as file:
                doc = json.load(file)

            text_1 = '[{duration}] Lines/sec {averages_str} ' \
                '· Hints/sec {hint_averages_str}'.format(
                    duration=doc['stats']['duration'],
                    averages_str=doc['stats']['averages_str'],
                    hint_averages_str=doc['stats']['hint_averages_str'],
            )
            text_2 = 'Chat {chat_graph} · Hint {hint_graph}'.format(
                chat_graph=doc['stats']['chat_graph'],
                hint_graph=doc['stats']['hint_graph'],
            )
        except (ValueError, KeyError, IndexError):
            _logger.exception('Error formatting stats')
        else:
            session.say(text_1)
            session.say(text_2)
Exemple #2
0
    def _spell_chatot_command(self, session: InboundMessageSession):
        limiter_key = ('chatot', session.message['channel'])
        if not self._spam_limiter.is_ok(limiter_key):
            return

        text = session.match.group(1).strip() or 'I LIKE CHATOT'
        text = text[:len(self.CHATOT_TEMPLATE)]

        buf = io.StringIO()
        text_index = 0

        for index, letter in enumerate(self.CHATOT_TEMPLATE):
            if index % 2 == 0:
                buf.write(letter)
            elif text_index < len(text) and letter.strip():
                if text[text_index].strip():
                    buf.write(text[text_index])
                else:
                    buf.write(letter)
                text_index += 1
            else:
                buf.write(letter)

        formatted_text = buf.getvalue()

        session.say(formatted_text, multiline=True)
        self._spam_limiter.update(limiter_key)
Exemple #3
0
 def _try_say_or_reply_too_long(cls, formatted_text, session: InboundMessageSession):
     if cls.is_too_long(formatted_text):
         session.reply(cls.TOO_LONG_TEXT_TEMPLATE.format(gen_roar()))
         return False
     else:
         session.say(formatted_text)
         return True
Exemple #4
0
 def _try_say_or_reply_too_long(cls, formatted_text,
                                session: InboundMessageSession):
     if cls.is_too_long(formatted_text):
         session.reply(cls.TOO_LONG_TEXT_TEMPLATE.format(gen_roar()))
         return False
     else:
         session.say(formatted_text)
         return True
Exemple #5
0
 def _wow_command(self, session: InboundMessageSession):
     if self._tellnext_generator:
         platform_name = session.get_platform_name()
         max_len = 500 if platform_name == 'discord' else 400
         session.say('> {}'.format(
             self._censor_text(
                 session, self._tellnext_generator.get_paragraph(max_len))),
                     multiline=True)
     else:
         session.reply('{} Feature not available!'.format(gen_roar()))
Exemple #6
0
    def _xd_rand_command(self, session: InboundMessageSession):
        if (
            _random.random() < 0.1
            or session.message["username"] == "wow_deku_onehand"
            and session.message["text"].strip() == "xD MingLee"
        ):

            def rep_func(match):
                return "!" if _random.random() < 0.6 else "1"

            session.say("{} xD MingLee".format(re.sub("!", rep_func, gen_roar().lower())))
Exemple #7
0
    def _xd_rand_command(self, session: InboundMessageSession):
        if _random.random() < 0.1 or \
                session.message['username'] == 'wow_deku_onehand' and \
                session.message['text'].strip() == 'xD MingLee':

            def rep_func(match):
                return '!' if _random.random() < 0.6 else '1'

            session.say('{} xD MingLee'.format(
                re.sub('!', rep_func,
                       gen_roar().lower())))
Exemple #8
0
    def _greeting_command(self, session: InboundMessageSession):
        is_set = session.match.group(1)
        text = session.match.group(3).strip()

        if is_set:
            self._database.set_greeting(
                session.message['channel'], session.message['user_id']
                or session.message['username'], text)
            session.reply('{} Greeting saved'.format(gen_roar()))
        else:
            greeting = self._database.get_greeting(session.message['channel'])

            if greeting:
                formatted_text = '{} {}'.format(gen_roar(), greeting)
            else:
                formatted_text = '{}'.format(gen_roar())

            session.say(formatted_text, multiline=True)
Exemple #9
0
    def _try_say_or_reply_too_long(self, formatted_text,
                                   session: InboundMessageSession):
        platform_name = session.get_platform_name()

        if platform_name == 'twitch' and self._bot.twitch_char_limit:
            max_length = 500
            max_byte_length = 1800
        elif platform_name == 'discord':
            max_length = 2000
            max_byte_length = max_length * 4
        else:
            max_length = 400
            max_byte_length = 400

        if len(formatted_text) > max_length or self.is_too_long(
                formatted_text, max_byte_length):
            session.reply(self.TOO_LONG_TEXT_TEMPLATE.format(gen_roar()))
            return False
        else:
            session.say(formatted_text)
            return True
Exemple #10
0
    def _hype_stats_command(self, session: InboundMessageSession):
        stats_filename = self._config.get("hype_stats_filename")

        if not stats_filename or stats_filename and not os.path.exists(stats_filename):
            session.reply("{} This command is currently unavailable!".format(gen_roar()))
            return

        try:
            with open(stats_filename) as file:
                doc = json.load(file)

            text_1 = "[{duration}] Lines/sec {averages_str} " "· Hints/sec {hint_averages_str}".format(
                duration=doc["stats"]["duration"],
                averages_str=doc["stats"]["averages_str"],
                hint_averages_str=doc["stats"]["hint_averages_str"],
            )
            text_2 = "Chat {chat_graph} · Hint {hint_graph}".format(
                chat_graph=doc["stats"]["chat_graph"], hint_graph=doc["stats"]["hint_graph"]
            )
        except (ValueError, KeyError, IndexError):
            _logger.exception("Error formatting stats")
        else:
            session.say(text_1)
            session.say(text_2)
Exemple #11
0
 def _klappa_command(self, session: InboundMessageSession):
     session.say('{}'.format(_random.choice(('Kappa //', gen_roar()))))
Exemple #12
0
 def _klappa_command(self, session: InboundMessageSession):
     session.say("{}".format(_random.choice(("Kappa //", gen_roar()))))
Exemple #13
0
 def _huffle_command(self, session: InboundMessageSession):
     session.say(random.choice(['卅(◕‿◕)卅', '卅( ◕‿◕)卅つ✂ (◕‿◕ )卅']))
Exemple #14
0
 def _roar_command(self, session: InboundMessageSession):
     session.say('{} {} {}'.format(gen_roar(), gen_roar(),
                                   gen_roar().upper()))
Exemple #15
0
 def _roar_command(self, session: InboundMessageSession):
     session.say("{} {} {}".format(gen_roar(), gen_roar(), gen_roar().upper()))
Exemple #16
0
 def _wow_command(self, session: InboundMessageSession):
     if self._tellnext_generator:
         session.say('> {}'.format(
             self._tellnext_generator.get_paragraph()))
     else:
         session.reply('{} Feature not available!'.format(gen_roar()))
Exemple #17
0
 def _wow_command(self, session: InboundMessageSession):
     if self._tellnext_generator:
         session.say("> {}".format(self._tellnext_generator.get_paragraph()))
     else:
         session.reply("{} Feature not available!".format(gen_roar()))