def test_manual_creation(self):
        message = ComplexMessage(['Hello, ', RefAttach('user_id_here', '@world')])

        self.assertEqual(message.get_text(), 'Hello, @world')
        self.assertEqual(message.get_attachments(), [{
            'loci': [[7, 6]],
            'type': 'mentions',
            'user_ids': ['user_id_here']
        }])
    def test_manual_creation(self) -> None:
        message = ComplexMessage(
            ["Hello, ", RefAttach("user_id_here", "@world")])

        self.assertEqual(message.get_text(), "Hello, @world")
        self.assertEqual(
            message.get_attachments(),
            [{
                "loci": [[7, 6]],
                "type": "mentions",
                "user_ids": ["user_id_here"]
            }],
        )
 def test_complex_message(self):
     message = ComplexMessage(['Hello, ', RefAttach('user_id_here', '@world')])
     text, attachments = smart_split_complex_message(message)
     self.assertEqual(text, 'Hello, @world')
     self.assertEqual(attachments, [{
         'loci': [[7, 6]],
         'type': 'mentions',
         'user_ids': ['user_id_here']
     }])
 def on_fields_loaded(self):
     if self.text is None:
         self.text = ""
     from lowerpines.message import ComplexMessage, RefAttach
     self.complex_text = ComplexMessage('')
     doing_mentions = False
     for attachment in self.attachments:
         if attachment['type'] == 'mentions':
             doing_mentions = True
             prev_index = 0
             for i in range(len(self.text)):
                 for loci, user_id in zip(attachment['loci'],
                                          attachment['user_ids']):
                     if loci[0] == i:
                         self.complex_text += self.text[prev_index:loci[0]] + \
                                                 RefAttach(user_id, self.text[loci[0]:loci[0] + loci[1]])
                         prev_index = loci[0] + loci[1]
             self.complex_text = self.complex_text + self.text[prev_index:]
     if not doing_mentions:
         self.complex_text = ComplexMessage(self.text)
Exemple #5
0
def system_messages(bot: Bot, message: Message) -> bool:
    """
    Process system messages:
    * Nickname changes
    * Added users
    * Removed users
    """
    if not message.system:
        return False

    remove_match = REMOVE_RE.match(message.text)
    add_match = ADD_RE.match(message.text)
    change_name_match = CHANGE_RE.match(message.text)

    # Grab an arrow time in UTC
    timestamp = arrow.get(message.created_at)

    if remove_match:
        bot.post(ComplexMessage([EmojiAttach(4, 36)]))
        return True

    if add_match:
        bot.post(ComplexMessage([EmojiAttach(2, 44)]))

        # Log the new member
        new_member = add_match.group('addee')
        nickname_entry(bot, new_member, timestamp)

        return True

    if change_name_match:
        bot.post(ComplexMessage([EmojiAttach(1, 81)]))

        # Log the name change
        new_name = change_name_match.group('new_name')
        nickname_entry(bot, new_name, timestamp)

        return True

    return False
 def test_complex_message(self) -> None:
     message = ComplexMessage(
         ["Hello, ", RefAttach("user_id_here", "@world")])
     text, attachments = smart_split_complex_message(message)
     self.assertEqual(text, "Hello, @world")
     self.assertEqual(
         attachments,
         [{
             "loci": [[7, 6]],
             "type": "mentions",
             "user_ids": ["user_id_here"]
         }],
     )
Exemple #7
0
    def on_fields_loaded(self) -> None:
        if self.text is None:
            self.text = ""
        from lowerpines.message import ComplexMessage, RefAttach  # noqa: F811

        self.complex_text = ComplexMessage("")
        doing_mentions = False
        for attachment in self.attachments:
            if attachment["type"] == "mentions":
                doing_mentions = True
                prev_index = 0
                for i in range(len(self.text)):
                    for loci, user_id in zip(attachment["loci"],
                                             attachment["user_ids"]):
                        if loci[0] == i:
                            self.complex_text += self.text[
                                prev_index:loci[0]] + RefAttach(
                                    user_id,
                                    self.text[loci[0]:loci[0] + loci[1]])
                            prev_index = loci[0] + loci[1]
                self.complex_text = self.complex_text + self.text[prev_index:]
        if not doing_mentions:
            self.complex_text = ComplexMessage(self.text)
Exemple #8
0
    get_insult,
    get_tasted_brews,
    get_new_arrivals,
)

logger = logging.getLogger(__name__)

CLARK_USER_ID = '6499167'
SHAINA_USER_ID = '6830949'

SAUCERBOT_MESSAGE_LIST: List[Union[ComplexMessage, str]] = [
    "Shut up, ",
    "Go away, ",
    "Go find your own name, ",
    "Stop being an asshole, ",
    ComplexMessage('https://media.giphy.com/media/IxmzjBNRGKy8U/giphy.gif'),
    'random',
]


@registry.handler()
def user_named_saucerbot(bot: Bot, message: Message, force_random: bool = False) -> bool:
    """
    Chastise people who make their name saucerbot
    """
    if message.name != 'saucerbot':
        return False

    # Send something dumb
    user_attach = RefAttach(message.user_id, f'@{message.name}')
 def test_reverse_add(self) -> None:
     message = "test " + ComplexMessage("reverse adding")
     self.assertEqual(message.get_text(), "test reverse adding")
    def test_forward_add(self) -> None:
        message = ComplexMessage("test") + " normal adding"
        self.assertEqual(message.get_text(), "test normal adding")

        message = ComplexMessage("test") + ComplexMessage(" normal adding")
        self.assertEqual(message.get_text(), "test normal adding")
 def test_forward_add(self) -> None:
     message = RefAttach("user_id", "@test") + ComplexMessage(", whats up?")
     self.assertEqual(message.get_text(), "@test, whats up?")