"""
Repeats the last word of the last message in the conversation, and use it in
an annoying “C’est toi le” sentence.

Installation
------------

You only have to load the plugin:

.. code-block:: none

    /load stoi

.. glossary::

    /stoi
        **Usage:** ``/stoi``

"""
from poezio.plugin import BasePlugin
from poezio import tabs
import string
from poezio import xhtml
import random

char_we_dont_want = string.punctuation + ' ’„“”…«»'


class Plugin(BasePlugin):
    def init(self) -> None:
        for tab_type in (tabs.MucTab, tabs.PrivateTab, tabs.DynamicConversationTab, tabs.StaticConversationTab):
            self.api.add_tab_command(
                tab_type,
                'stoi',
                handler=self.stoi,
                help="Repeats the last word of the last "
                "message in the conversation, and "
                "use it in an annoying “C’est toi "
                "le” sentence.",
                short='C’est toi le stoi.')

    def stoi(self, args: str) -> None:
        messages = self.api.get_conversation_messages()
        if not messages:
            # Do nothing if the conversation doesn’t contain any message
            return
        last_message = messages[-1]
        txt = xhtml.clean_text(last_message.txt)
        for char in char_we_dont_want:
            txt = txt.replace(char, ' ')
        if txt.strip():
            last_word = txt.split()[-1]
        else:
            last_word = "vide"
        intro = "C'est toi " if random.getrandbits(1) else "Stoi "
        if last_word[0] in 'aeiouAEIOUÀàÉéÈè':
            msg = intro + ('l’%s' % last_word)
        else:
            msg = intro + ('le %s' % last_word)
        self.api.send_message(msg)
