Example #1
0
    def listen(self):
        """
            Function of listen events
        """

        club = f'club{self.group_id}'
        chat = None

        for event in self.longpoll.listen():
            if event.type == VkBotEventType.MESSAGE_NEW and event.from_chat \
                    and club in event.message.text:

                chat_id = event.chat_id
                user_id = event.message.from_id
                text = event.message.text

                if chat is None:
                    chat = Chat(self.vk, chat_id)
                else:
                    if not chat.id == chat_id:
                        chat = Chat(self.vk, chat_id)

                user = chat.get_info_user(user_id)
                clean_text = text[text.find(']') + 2: len(text)]

                if '!ban' in clean_text:
                    if user.is_admin:
                        banned_user_id = self.__get_clean_id(clean_text)
                        chat.get_info_user(banned_user_id).ban_user()
                    else:
                        user.send_message_to_user(
                            'У вас недостаточно прав для данной команды!')
                elif '!hackerrank_help' in clean_text:
                    chat.hackerrank_help()
                elif '!hackerrank' in clean_text:
                    lang = clean_text[len('!hackerrank') + 1: len(clean_text)]
                    chat.hackerrank(lang)
                elif '!help' == clean_text:
                    chat.help_user()
                elif '!help_admin' == clean_text:
                    if user.is_admin:
                        chat.help_admin()
                    else:
                        user.send_message_to_user(
                            'У вас недостаточно прав для данной команды!')
                elif '!nemezida' == clean_text:
                    chat.nemezida()
                elif '!warns' == clean_text:
                    user.get_count_warns()
                elif '!warn' in clean_text:
                    if user.is_admin:
                        warn_user_id = self.__get_clean_id(clean_text)
                        warn_user = chat.get_info_user(warn_user_id)
                        chat.warn_user(warn_user)
                    else:
                        user.send_message_to_user(
                            'У вас недостаточно прав для данной команды!')
                elif '!meetup' in clean_text:
                    # TODO: Check len of string for catch a exception
                    content = re.findall('".+?"', clean_text)
                    name = content[0][1:len(content[0]) - 1]
                    ref = content[1][1:len(content[1]) - 1]
                    chat.notice_meetup(name, ref)
                elif '!unwarn' in clean_text:
                    if user.is_admin:
                        unwarn_user_id = self.__get_clean_id(clean_text)
                        unwarn_user = chat.get_info_user(unwarn_user_id)
                        chat.unwarn_user(unwarn_user)
                    else:
                        user.send_message_to_user(
                            'У вас недостаточно прав для данной команды!')
                else:
                    chat.unknown_command()