Example #1
0
    def gene(self):
        """
返回Content迭代器,如果为空则返回None
        """
        text = self.f.read()
        temp = ""
        for c in text:
            # 注意:用python的r模式读文件时根据系统的区别会用\n代替\n\r
            if c == "\n":
                temp += c
                # 将有效内容拿出
                t = ""
                if config.env == config.System.WIN:
                    if temp[-1:] == tool.newline():
                        t = temp[:-1]
                    else:
                        continue
                elif config.env == config.System.LINUX:
                    if temp[-1:] == tool.newline():
                        t = temp[:-1]
                    else:
                        continue
                else:
                    pass
                    # todo:报错,出现了不一样的换行符
                t = t.strip()  # 去除首尾空格
                signals = filter.FILTERS.filt(t)
                ty, num, name = detector.DETECTORS.detect(t)
                if ty == detector.TYPE.CHAPTER and \
                        filter.SIGNAL.REJECT_CHAP not in signals and \
                        filter.SIGNAL.REJECT_ALL not in signals and \
                        filter.SIGNAL.REJECT_CV not in signals:
                    # 章
                    yield contents.Chapter(int(num), name)
                elif ty == detector.TYPE.VOLUME and \
                        filter.SIGNAL.REJECT_VOL not in signals and \
                        filter.SIGNAL.REJECT_ALL not in signals and \
                        filter.SIGNAL.REJECT_CV not in signals:
                    # 卷
                    yield contents.Volume(int(num), name)
                elif ty == detector.TYPE.ENTER:
                    # 空行
                    yield contents.Enter()
                elif ty == detector.TYPE.TEXT:
                    # 段
                    yield contents.Text(name)
                else:
                    yield contents.Text(name)
                temp = ""
                continue
            else:
                temp += c
        yield None
Example #2
0
    def get_message(self):
        if (self._type == 'message'):
            message = contents.Text(self._username, self._chat_id,
                                    self._message_id, self._message)
            #
            message.update(self._body)

        if (self._type == 'photo'):
            message = contents.Photo(self._username, self._chat_id,
                                     self._message_id, self._file_id,
                                     self._message)

        if (self._type == 'document'):
            message = contents.Document(self._username, self._chat_id,
                                        self._message_id, self._file_id,
                                        self._message)

        # FEXME Замена сгенерированого id сообщения на старый id сообщения
        message.set_id(self._id)
        message.update(self._body)

        if (self._recipients_chat_id):
            for chat_and_message_id in self._recipients_chat_id:
                chat_id, message_id = chat_and_message_id

                message.add_recipient_chat_and_message_id(chat_id, message_id)

        # Накрутка ответов :D
        message.set_amount_responses(self._responses)

        return message
Example #3
0
        def enter_text(message: telebot.types.Message,
                       message_wrapper: contents.Message):
            if (message.text == '[ ⚠️ Отмена ⚠️ ]'):
                if (Handler._session.is_user_moderator_by_chat_id(
                        message.chat.id)):
                    bot.send_message(message.chat.id,
                                     '⚠️ Ответ отменен ⚠️',
                                     reply_markup=Handler._moder_panel.menu())
                #
                elif (Handler._session.is_user_administrator_by_chat_id(
                        message.chat.id)):
                    bot.send_message(message.chat.id,
                                     '⚠️ Ответ отменен ⚠️',
                                     reply_markup=Handler._admin_panel.menu())
                else:
                    bot.send_message(message.chat.id,
                                     '⚠ Упс. что-то пошло не так',
                                     reply_markup=panels.clearn_menu())
            else:
                message_wrapper, admin_panel = Handler.make_body(
                    message, message_wrapper)
                # Получение ника отвечающего
                nickname = Handler._session.get_user_nickname_by_chat_id(
                    message.chat.id)
                #
                if (message.text):
                    answer = contents.Text(nickname, message.chat.id,
                                           message.message_id,
                                           message.text).get()

                if (message.photo):
                    answer = contents.Photo(nickname, message.chat.id,
                                            message.message_id,
                                            message.photo[-1].file_id,
                                            message.caption).get()

                if (message.document):
                    answer = contents.Document(nickname, message.chat.id,
                                               message.message_id,
                                               message.document.file_id,
                                               message.caption).get()
                # Обновление сообщения
                Handler._chat.update_message(message_wrapper)
                # Сохранение ответа в базе данных
                Handler._chat.append_message(answer)
                # Запись в таблицу answers уникального айди сообщения, айди модератора и пользователя
                # Можно использовать для анализа ответов модераторов
                Handler._chat.bind_answer(message.chat.id,
                                          message_wrapper.chat_id, answer.id)
                # Отправка ответа пользователю
                if (message.text):
                    bot.send_message(
                        message_wrapper.chat_id,
                        'От: <b>%s</b>\n\n%s' % (nickname, message.text),
                        reply_to_message_id=message_wrapper.message_id,
                        parse_mode='HTML')

                if (message.photo):
                    caption = '\n\n' + message.caption if (
                        message.caption) else ''
                    bot.send_photo(message_wrapper.chat_id,
                                   message.photo[-1].file_id,
                                   caption='От: <b>%s</b>%s' %
                                   (nickname, caption),
                                   parse_mode='HTML')

                if (message.document):
                    caption = '\n\n' + message.caption if (
                        message.caption) else ''
                    bot.send_document(message_wrapper.chat_id,
                                      message.document.file_id,
                                      caption='От: <b>%s</b>%s' %
                                      (nickname, caption),
                                      parse_mode='HTML')

                # Сообщение изменяется только в тех, кто его получил
                for recipient in message_wrapper.get_recipients().items():
                    chat_id, message_id = recipient
                    if (message_wrapper.message):
                        bot.edit_message_text(chat_id=chat_id,
                                              message_id=message_id,
                                              text=message_wrapper.body,
                                              parse_mode='HTML',
                                              reply_markup=admin_panel)
                    else:
                        bot.edit_message_caption(chat_id=chat_id,
                                                 message_id=message_id,
                                                 caption=message_wrapper.body,
                                                 parse_mode='HTML',
                                                 reply_markup=admin_panel)

                if (Handler._session.is_user_moderator_by_chat_id(
                        message.chat.id)):
                    bot.send_message(message.chat.id,
                                     '☑️ Ответ отправлен ☑️',
                                     reply_markup=Handler._moder_panel.menu())

                #
                elif (Handler._session.is_user_administrator_by_chat_id(
                        message.chat.id)):
                    bot.send_message(message.chat.id,
                                     '☑️ Ответ отправлен ☑️',
                                     reply_markup=Handler._admin_panel.menu())

                else:
                    bot.send_message(message.chat.id,
                                     '⚠ Упс. что-то пошло не так',
                                     reply_markup=panels.clearn_menu())
Example #4
0
        def send_mail(message: telebot.types.Message,
                      message_wrapper: contents.Message):
            if (message.text == '[ ⚠️ Отмена ⚠️ ]'):
                if (Handler._session.is_user_moderator_by_chat_id(
                        message.chat.id)):
                    bot.send_message(message.chat.id,
                                     '⚠️ Ответ отменен ⚠️',
                                     reply_markup=Handler._moder_panel.menu())
                #
                elif (Handler._session.is_user_administrator_by_chat_id(
                        message.chat.id)):
                    bot.send_message(message.chat.id,
                                     '⚠️ Ответ отменен ⚠️',
                                     reply_markup=Handler._admin_panel.menu())

                else:
                    bot.send_message(message.chat.id,
                                     '⚠ Упс. что-то пошло не так',
                                     reply_markup=panels.clearn_menu())

            else:
                # Получение ника отвечающего
                nickname = Handler._session.get_user_nickname_by_chat_id(
                    message.chat.id)
                #
                if (message.text):
                    answer = contents.Text(nickname, message.chat.id,
                                           message.message_id,
                                           message.text).get()

                if (message.photo):
                    answer = contents.Photo(nickname, message.chat.id,
                                            message.message_id,
                                            message.photo[-1].file_id,
                                            message.caption).get()

                if (message.document):
                    answer = contents.Document(nickname, message.chat.id,
                                               message.message_id,
                                               message.document.file_id,
                                               message.caption).get()
                # Сохранение ответа в базе данных
                Handler._chat.append_message(answer)
                # Запись в таблицу answers уникального айди сообщения, айди модератора и пользователя
                # Можно использовать для анализа ответов модераторов
                Handler._chat.bind_answer(message.chat.id,
                                          message_wrapper.chat_id, answer.id)
                # Отправка сообщения его автору
                if (message.text):
                    bot.send_message(
                        message_wrapper.chat_id,
                        'От: <b>%s</b>\n\n%s' % (nickname, message.text),
                        reply_to_message_id=message_wrapper.message_id,
                        parse_mode='HTML')

                if (message.photo):
                    caption = '\n\n' + message.caption if (
                        message.caption) else ''
                    bot.send_photo(message_wrapper.chat_id,
                                   message.photo[-1].file_id,
                                   caption='От: <b>%s</b>%s' %
                                   (nickname, caption),
                                   parse_mode='HTML')

                if (message.document):
                    caption = '\n\n' + message.caption if (
                        message.caption) else ''
                    bot.send_document(message_wrapper.chat_id,
                                      message.document.file_id,
                                      caption='От: <b>%s</b>%s' %
                                      (nickname, caption),
                                      parse_mode='HTML')

                if (Handler._session.is_user_moderator_by_chat_id(
                        message.chat.id)):
                    bot.send_message(
                        message.chat.id,
                        '☑️ Сообщение пользователю %s отправлено ☑️' %
                        message_wrapper.username,
                        reply_markup=Handler._moder_panel.menu())
                #
                elif (Handler._session.is_user_administrator_by_chat_id(
                        message.chat.id)):
                    bot.send_message(
                        message.chat.id,
                        '☑️ Сообщение пользователю %s отправлено ☑️' %
                        message_wrapper.username,
                        reply_markup=Handler._admin_panel.menu())
                else:
                    bot.send_message(
                        message.chat.id,
                        '☑️ Сообщение пользователю %s отправлено ☑️' %
                        message_wrapper.username,
                        reply_markup=panels.clearn_menu())
Example #5
0
    def text_handler(message: telebot.types.Message):
        # Если небыло команды /start но пользователь написал сразу сообщение автоматически 'запускает' бота
        if (not Handler._session.has_user_by_chat_id(message.chat.id)):
            Handler.start_handler(message)

        elif (Handler._session.is_user_blocked_by_chat_id(message.chat.id)):
            bot.send_message(message.chat.id, '‼️ Вы заблокированы ‼️')

        elif (message.text == '[ ♠️ Добавить модератора ♠️ ]'):
            if (Handler._session.is_user_administrator_by_chat_id(
                    message.chat.id)):
                requests = Handler._session.export_requests()
                markup, body = Handler._admin_panel.adition_moderators(
                    requests)
                bot.send_message(message.chat.id, body, reply_markup=markup)
            else:
                markup = panels.clearn_menu()
                bot.send_message(
                    message.chat.id,
                    '⚠ У вас нет прав на осуществление данной команды',
                    reply_markup=markup)

        elif (message.text == '[ 💎 Все управляющие 💎 ]'):
            if (Handler._session.is_user_administrator_by_chat_id(
                    message.chat.id)):
                managers = Handler._session.export_managers()
                markup, body = Handler._admin_panel.managers(managers)
                bot.send_message(message.chat.id, body, reply_markup=markup)
            else:
                markup = panels.clearn_menu()
                bot.send_message(
                    message.chat.id,
                    '⚠ У вас нет прав на осуществление данной команды',
                    reply_markup=markup)

        elif (message.text == '[ 🔕 Черный список 🔕 ]'):
            if (Handler._session.is_user_administrator_by_chat_id(
                    message.chat.id)
                    or Handler._session.is_user_moderator_by_chat_id(
                        message.chat.id)):
                blocked_users = Handler._session.export_blocked_users()
                markup, body = Handler._admin_panel.blacklist(blocked_users)
                bot.send_message(message.chat.id, body, reply_markup=markup)
            else:
                markup = panels.clearn_menu()
                bot.send_message(
                    message.chat.id,
                    '⚠ У вас нет прав на осуществление данной команды',
                    reply_markup=markup)

        elif (message.text == '[ ⚙️ Состояние чата ⚙️ ]'):
            if (Handler._session.is_user_administrator_by_chat_id(
                    message.chat.id)
                    or Handler._session.is_user_moderator_by_chat_id(
                        message.chat.id)):
                text = ''
                if (Handler._session.is_admin_chat_work):
                    text += '\n✅ Модераторский чат включен'
                else:
                    text += '\n🛑 Модераторский чат выключен'

                if (Handler._session.is_users_chat_work):
                    text += '\n✅ Пользовательский чат включен'
                else:
                    text += '\n🛑 Пользовательский чат выключен'

                bot.send_message(message.chat.id, text)
            else:
                markup = panels.clearn_menu()
                bot.send_message(
                    message.chat.id,
                    '⚠ У вас нет прав на осуществление данной команды',
                    reply_markup=markup)

        elif (message.text in ('[ 🛑 Откл. пользовательский чат 🛑 ]',
                               '[ ✅ Вкл. пользовательский  чат ✅ ]',
                               '[ 🛑 Откл. модераторский чат 🛑 ]',
                               '[ ✅ Вкл. модераторский чат ✅ ]')):

            if (Handler._session.is_user_administrator_by_chat_id(
                    message.chat.id)):
                if (message.text == '[ 🛑 Откл. пользовательский чат 🛑 ]'):
                    Handler._session.disable_users_chat()

                if (message.text == '[ ✅ Вкл. пользовательский  чат ✅ ]'):
                    Handler._session.enable_users_chat()

                if (message.text == '[ 🛑 Откл. модераторский чат 🛑 ]'):
                    Handler._session.disable_admin_chat()

                if (message.text == '[ ✅ Вкл. модераторский чат ✅ ]'):
                    Handler._session.enable_admin_chat()

                # Разсылка измененны
                for manager in Handler._session.export_managers():

                    if (Handler._session.is_user_moderator_by_chat_id(
                            manager.chat_id)):
                        if (message.text ==
                                '[ 🛑 Откл. пользовательский чат 🛑 ]'):
                            text = '🛑 Пользовательский чат выключен'

                        elif (message.text ==
                              '[ ✅ Вкл. пользовательский  чат ✅ ]'):
                            text = '✅ Пользовательский чат включен'

                        elif (message.text == '[ 🛑 Откл. модераторский чат 🛑 ]'
                              ):
                            text = '🛑 Модераторский чат выключен'

                        elif (message.text == '[ ✅ Вкл. модераторский чат ✅ ]'
                              ):
                            text = '✅ Модераторский чат включен'

                        else:
                            text = '⚠ Непредвиденая комманда'

                        bot.send_message(manager.chat_id, text)

                    #
                    elif (Handler._session.is_user_administrator_by_chat_id(
                            manager.chat_id)):
                        if (message.text ==
                                '[ 🛑 Откл. пользовательский чат 🛑 ]'):
                            text = '🛑 Пользовательский чат выключен'

                        elif (message.text ==
                              '[ ✅ Вкл. пользовательский  чат ✅ ]'):
                            text = '✅ Пользовательский чат включен'

                        elif (message.text == '[ 🛑 Откл. модераторский чат 🛑 ]'
                              ):
                            text = '🛑 Модераторский чат выключен'

                        elif (message.text == '[ ✅ Вкл. модераторский чат ✅ ]'
                              ):
                            text = '✅ Модераторский чат включен'

                        else:
                            text = '⚠ Непредвиденая комманда'

                        bot.send_message(
                            manager.chat_id,
                            text,
                            reply_markup=Handler._admin_panel.menu())

                    else:
                        bot.send_message(manager.chat_id,
                                         '⚠ Вы решены свохи прав',
                                         reply_markup=panels.clearn_menu())
            else:
                bot.send_message(
                    message.chat.id,
                    '⚠ У вас нет прав на осуществление данной команды',
                    reply_markup=panels.clearn_menu())

        elif (Handler._session.is_user_manager_by_chat_id(message.chat.id)):
            if (Handler._session.is_admin_chat_work):
                #
                nickname = Handler._session.get_user_nickname_by_chat_id(
                    message.chat.id)
                #
                if (message.text):
                    message_wrapper = contents.Text(nickname, message.chat.id,
                                                    message.message_id,
                                                    message.text).get()

                if (message.photo):
                    message_wrapper = contents.Photo(nickname, message.chat.id,
                                                     message.message_id,
                                                     message.photo[-1].file_id,
                                                     message.caption).get()

                if (message.document):
                    message_wrapper = contents.Document(
                        nickname, message.chat.id, message.message_id,
                        message.document.file_id, message.caption).get()

                Handler._chat.append_message(message_wrapper)

                # Рассылка пользовательского сообщения управляющим
                for visitor in Handler._session.export_visitors():
                    Handler.process_manager_message(visitor.chat_id,
                                                    message_wrapper)
            else:
                bot.send_message(message.chat.id,
                                 '⚠️ Администраторский чат отключен!')

        elif (Handler._session.is_user_visitor_by_chat_id(message.chat.id)):
            if (Handler._session.is_users_chat_work):
                #
                if (message.text):
                    message_wrapper = contents.Text(message.chat.first_name,
                                                    message.chat.id,
                                                    message.message_id,
                                                    message.text)

                if (message.photo):
                    message_wrapper = contents.Photo(message.chat.first_name,
                                                     message.chat.id,
                                                     message.message_id,
                                                     message.photo[-1].file_id,
                                                     message.caption)

                if (message.document):
                    message_wrapper = contents.Document(
                        message.chat.first_name, message.chat.id,
                        message.message_id, message.document.file_id,
                        message.caption)

                # Рассылка пользовательского сообщения управляющим
                for manager in Handler._session.export_managers():
                    Handler.process_user_message(manager.chat_id,
                                                 message_wrapper)

                Handler._chat.append_message(message_wrapper)

            else:
                bot.send_message(message.chat.id, '⚠️ Чат отключен!')
        else:
            bot.send_message(message.chat.id, '⚠️ Непредвиденая комманда')