Exemple #1
0
    def show(self, tg_id: int):
        msg = self.name
        user_context = mem.UserContext(tg_id)
        user_context.update_context('story_id', str(self.id))

        buttons = [
            [('Посмотреть главы', tools.make_call_back(SHOW_CHAPTERS_PREFIX))],
            [
                ('Переименовать', tools.make_call_back(RENAME_PREFIX)),
                ('Загрузить реакции',
                 tools.make_call_back(UPLOAD_REACTIONS_PREFIX)),
            ],
            [
                (f'Задержка {self.base_timeout}c',
                 tools.make_call_back(SET_BASE_TIMEOUT)),
                (f'Скорость набора {self.k_timeout} знак/мин',
                 tools.make_call_back(SET_K_TIMEOUT)),
            ],
            [('Удалить', tools.make_call_back(RM_PREFIX, {'is_sure': False}))],
            [('Все истории', tools.make_call_back(tg_user.SHOW_STORIES_PREFIX))
             ],
        ]
        if self.is_reactions:
            buttons[1].append(
                ('Реакции', tools.make_call_back(DOWNLOAD_REACTIONS_PREFIX)))
        tools.send_menu_msg(tg_id, msg, buttons)
Exemple #2
0
 def make_sure_rm(self, tg_id: int):
     msg = 'Вы уверены, что хотите удалить это сообщение ?'
     buttons = [
         [('Да', tools.make_call_back(RM_PREFIX, {'is_sure': True}))],
         [('Нет', tools.make_call_back(SHOW_PREFIX))],
     ]
     tools.send_menu_msg(tg_id, msg, buttons)
Exemple #3
0
    def show_chapters(self, tg_id: int):
        msg = 'Главы истории {}.'.format(self.name)
        buttons = []
        for _chapter in self.chapters:
            buttons.append([
                (_chapter.get('name'),
                 tools.make_call_back(chapter.SHOW_PREFIX,
                                      {'chapter_id': _chapter.get('id')})),
            ])
            settings_row = []
            if int(_chapter.get('number')) != 0:
                settings_row.append(
                    ('Up',
                     tools.make_call_back(chapter.UP_PREFIX, {
                         'chapter_id': _chapter.get('id'),
                     })))
            if int(_chapter.get('number')) != len(self.chapters) - 1:
                settings_row.append(
                    ('Down',
                     tools.make_call_back(chapter.DOWN_PREFIX, {
                         'chapter_id': _chapter.get('id'),
                     })))
            buttons.append(settings_row)
        buttons.extend([
            [('Новая глава', tools.make_call_back(chapter.MAKE_PREFIX))],
            [('Назад', tools.make_call_back(SHOW_PREFIX))],
        ])

        tools.send_menu_msg(tg_id, msg, buttons, 3)
Exemple #4
0
 def get_reactions_file(self, tg_id: int):
     msg = ('Загрузите .csv первая строка название реакции,'
            'столбцами варианты, реакция "std" присваивается автоматически')
     tools.send_menu_msg(tg_id, msg, exit_menu=True)
     user_context = mem.UserContext(tg_id)
     user_context.set_status('wait_line')
     user_context.set_params({'call_to': UPLOAD_REACTIONS_PREFIX})
Exemple #5
0
 def make_sure_rm(self, tg_id: int):
     msg = 'Вы уверены, что хотите удалить историю: "{}"'.format(self.name)
     buttons = [
         [('Да', tools.make_call_back(RM_PREFIX, {'is_sure': True}))],
         [('Нет', tools.make_call_back(SHOW_PREFIX))],
     ]
     tools.send_menu_msg(tg_id, msg, buttons)
    def show(self, tg_id: int):
        msg = f'id: {self.id}\n{self.name}'
        user_context = mem.UserContext(tg_id)
        user_context.update_context('chapter_id', str(self.id))

        if self.start_message:
            buttons = [[('Все сообщения', None,
                         '{app_url}chapter/{chapter_uid}'.format(
                             app_url=APP_URL,
                             chapter_uid=hashlib.sha224(
                                 bytes(f'{self.id}{tg_id}',
                                       'utf-8')).hexdigest(),
                         ))]]
        else:
            buttons = [[('Написать первое сообщение',
                         tools.make_call_back(message.MAKE_PREFIX, {
                             'is_start_chapter_msg': True,
                         }))]]

        buttons.extend([
            [
                ('Переименовать', tools.make_call_back(RENAME_PREFIX)),
                ('Удалить', tools.make_call_back(RM_PREFIX,
                                                 {'is_sure': False})),
            ],
            [
                ('Все главы',
                 tools.make_call_back(story.SHOW_CHAPTERS_PREFIX)),
            ],
        ])
        tools.send_menu_msg(tg_id, msg, buttons)
Exemple #7
0
 def get_line(self, tg_id: int, text: str, prefix: str):
     buttons = [
         [('Назад', tools.make_call_back(SHOW_PREFIX))],
     ]
     tools.send_menu_msg(tg_id, text, buttons)
     user_context = mem.UserContext(tg_id)
     user_context.set_status('wait_line')
     user_context.set_params({'call_to': prefix})
Exemple #8
0
def get_name_for_new_story(tg_id: int):
    msg = 'Напишите название своей истории'
    tools.send_menu_msg(tg_id, msg, exit_menu=True)
    user_context = mem.UserContext(tg_id)
    user_context.set_status('wait_line')
    user_context.set_params({
        'call_to': MAKE_PREFIX,
    })
Exemple #9
0
 def get_new_btn(self, tg_id: int):
     text = 'Ответ:'
     buttons = [
         [('Назад', tools.make_call_back(SHOW_PREFIX))],
     ]
     tools.send_menu_msg(tg_id, text, buttons)
     user_context = mem.UserContext(tg_id)
     user_context.set_status('wait_line')
     user_context.set_params({'call_to': ADD_BUTTON_PREFIX})
Exemple #10
0
 def get_new_msg(self, tg_id: int):
     text = 'Новое сообщение:'
     buttons = [
         [('Назад', tools.make_call_back(SHOW_PREFIX))],
     ]
     tools.send_menu_msg(tg_id, text, buttons)
     user_context = mem.UserContext(tg_id)
     user_context.set_status('wait_line')
     user_context.set_params({'call_to': EDIT_PREFIX})
def get_new_btn(tg_id: int, is_start_chapter_msg: bool = False):
    text = 'Ответ:'
    buttons = [
            [('Назад', tools.make_call_back(SHOW_PREFIX))],
        ]
    tools.send_menu_msg(tg_id, text, buttons)
    user_context = mem.UserContext(tg_id)
    user_context.set_status('wait_line')
    user_context.set_params({'call_to': MAKE_PREFIX})
Exemple #12
0
 def get_direct_link(self, tg_id: int):
     text = 'ID сообщения:'
     buttons = [
         [('Назад', tools.make_call_back(SHOW_PREFIX))],
     ]
     tools.send_menu_msg(tg_id, text, buttons)
     user_context = mem.UserContext(tg_id)
     user_context.set_status('wait_line')
     user_context.set_params({'call_to': ADD_DIRECT_LINK_PREFIX})
Exemple #13
0
 def get_timeout(self, tg_id: int):
     text = 'Новая задержка:'
     buttons = [
         [('Назад', tools.make_call_back(SHOW_PREFIX))],
     ]
     tools.send_menu_msg(tg_id, text, buttons)
     user_context = mem.UserContext(tg_id)
     user_context.set_status('wait_line')
     user_context.set_params({'call_to': EDIT_TIMEOUT_PREFIX})
 def show_stories(self):
     msg = 'Ваши истории.'
     buttons = []
     for _story in self.stories:
         buttons.append([(_story.name,
                          tools.make_call_back(story.SHOW_PREFIX,
                                               {'story_id': _story.id}))])
     buttons.append([('Создать историю',
                      tools.make_call_back(story.MAKE_PREFIX))])
     print(msg, buttons)
     tools.send_menu_msg(self.telegram_id, msg, buttons)
Exemple #15
0
 def make_sure_rm_btn(self, tg_id: int, btn_id: int):
     btn = list(btn for btn in self.buttons if btn.get('id') == btn_id)[0]
     msg = 'Вы уверены, что хотите удалить ответ "{}"'.format(
         btn.get('text'))
     buttons = [
         [('Да',
           tools.make_call_back(RM_BUTTON_PREFIX, {
               'btn_id': btn_id,
               'is_sure': True
           }))],
         [('Нет', tools.make_call_back(SHOW_PREFIX))],
     ]
     tools.send_menu_msg(tg_id, msg, buttons)
Exemple #16
0
 def get_text_btn(self, tg_id: int, btn_id: int):
     btn = list(btn for btn in self.buttons if btn.get('id') == btn_id)[0]
     text = f'Текущий ответ: {btn["text"]}\n\n Новый ответ:'
     buttons = [
         [('Назад', tools.make_call_back(SHOW_PREFIX))],
     ]
     tools.send_menu_msg(tg_id, text, buttons)
     user_context = mem.UserContext(tg_id)
     user_context.set_status('wait_line')
     user_context.set_params({
         'call_to': EDIT_BUTTON_PREFIX,
         'btn_id': btn_id
     })
Exemple #17
0
 def get_reactions(self, tg_id: int):
     reactions_resp = json.loads(
         requests.post(
             DB_URL.format(item='story', cmd='get-reactions-list'),
             json={
                 'story_id': self.id,
                 'tg_id': tg_id,
             },
         ).text)
     lines = []
     for react in reactions_resp['reactions']:
         lines.append(f'{react["name"]}:')
         lines.append('{}\n'.format(', '.join(react['messages'])))
     tools.send_menu_msg(tg_id, '\n'.join(lines), exit_menu=True)
     self.show(tg_id)
Exemple #18
0
 def rm(self, tg_id: int):
     req_data = {
         'msg_id': self.id,
         'tg_id': tg_id,
     }
     rm_msg_resp = json.loads(
         requests.post(
             DB_URL.format(item='message', cmd='rm'),
             json=req_data,
         ).text)
     if rm_msg_resp.get('error'):
         msg = rm_msg_resp.get('error')
         tools.send_menu_msg(tg_id, msg)
     else:
         chapter.Chapter(self.story_id, self.chapter_id).show(tg_id)
 def replace(self, new_num: int, tg_id: int):
     up_chapter_resp = json.loads(
         requests.post(
             DB_URL.format(item='chapter', cmd='replace'),
             json={
                 'story_id': self.story_id,
                 'tg_id': tg_id,
                 'chapter_id': self.id,
                 'new_num': new_num,
             },
         ).text)
     if up_chapter_resp.get('error'):
         msg = up_chapter_resp.get('error')
         tools.send_menu_msg(tg_id, msg)
     else:
         story.Story(self.story_id).show_chapters(tg_id)
Exemple #20
0
 def set_k_timeout(self, tg_id: int, k_timeout: int):
     edited_story_resp = json.loads(
         requests.post(
             DB_URL.format(item='story', cmd='edit'),
             json={
                 'story_id': self.id,
                 'tg_id': tg_id,
                 'k_timeout': k_timeout,
             },
         ).text)
     if edited_story_resp.get('error'):
         msg = edited_story_resp.get('error')
         tools.send_menu_msg(tg_id, msg)
     else:
         self.k_timeout = edited_story_resp.get('k_timeout')
         self.show(tg_id)
Exemple #21
0
 def add_button(self, tg_id: int, text: str):
     new_btn_msg_resp = json.loads(
         requests.post(
             DB_URL.format(item='message', cmd='add_button'),
             json={
                 'msg_id': self.id,
                 'tg_id': tg_id,
                 'text': text,
             },
         ).text)
     if new_btn_msg_resp.get('error'):
         msg = new_btn_msg_resp.get('error')
         tools.send_menu_msg(tg_id, msg)
     else:
         self.buttons.append(new_btn_msg_resp['buttons'][-1])
         self.show(tg_id)
Exemple #22
0
 def rename(self, tg_id: int, new_name: str):
     renamed_story_resp = json.loads(
         requests.post(
             DB_URL.format(item='story', cmd='rename'),
             json={
                 'story_id': self.id,
                 'tg_id': tg_id,
                 'new_name': new_name,
             },
         ).text)
     if renamed_story_resp.get('error'):
         msg = renamed_story_resp.get('error')
         tools.send_menu_msg(tg_id, msg)
     else:
         self.name = new_name
         self.show(tg_id)
Exemple #23
0
 def add_direct_link(self, tg_id: int, to_msg_id: str):
     edit_msg_resp = json.loads(
         requests.post(
             DB_URL.format(item='message', cmd='edit'),
             json={
                 'msg_id': self.id,
                 'tg_id': tg_id,
                 'next_message_id': int(to_msg_id),
             },
         ).text)
     if edit_msg_resp.get('error'):
         msg = edit_msg_resp.get('error')
         tools.send_menu_msg(tg_id, msg)
     else:
         self.link = int(to_msg_id)
         self.show(tg_id)
Exemple #24
0
 def move_btn(self, tg_id: int, move: int, btn_id: int):
     edit_btn_msg_resp = json.loads(
         requests.post(
             DB_URL.format(item='message', cmd='edit_button'),
             json={
                 'msg_id': self.id,
                 'tg_id': tg_id,
                 'button_id': btn_id,
                 'move': move,
             },
         ).text)
     if edit_btn_msg_resp.get('error'):
         msg = edit_btn_msg_resp.get('error')
         tools.send_menu_msg(tg_id, msg)
     else:
         self.buttons = edit_btn_msg_resp.get('buttons')
         self.show(tg_id)
 def edit(self, tg_id: int, text: str):
     edit_msg_resp = json.loads(
         requests.post(
             DB_URL.format(item='message', cmd='edit'),
             json={
                 'msg_id': self.id,
                 'chapter_id': self.chapter_id,
                 'tg_id': tg_id,
                 'message': text,
             },
         ).text
     )
     if edit_msg_resp.get('error'):
         msg = edit_msg_resp.get('error')
         tools.send_menu_msg(tg_id, msg)
     else:
         self.message = text
         self.show(tg_id)
 def show(self, tg_id: int):
     text = self.message
     user_context = mem.UserContext(tg_id)
     user_context.rm_status()
     user_context.update_context('message_id', str(self.id))
     buttons = []
     for btn in self.buttons:
         buttons.append([(btn['text'], tools.make_call_back(ADD_BUTTON_PREFIX))])
     buttons.extend([
         [
             ('Добавить ответ', tools.make_call_back(ADD_BUTTON_PREFIX)),
         ],
         [
             ('Редактировать', tools.make_call_back(EDIT_PREFIX)),
             ('К главе', tools.make_call_back(chapter.SHOW_PREFIX))
         ],
     ])
     tools.send_menu_msg(tg_id, text, buttons)
Exemple #27
0
    def rm(self, tg_id: int):
        result = json.loads(
            requests.post(
                DB_URL.format(item='story', cmd='rm'),
                json={
                    'story_id': self.id,
                    'tg_id': tg_id,
                },
            ).text)
        if result.get('result') == 'ok':
            msg = 'Успешно.'
        else:
            msg = result.get('error')

        buttons = [
            [('Мои истории', tools.make_call_back(tg_user.SHOW_STORIES_PREFIX))
             ],
        ]
        tools.send_menu_msg(tg_id, msg, buttons)
Exemple #28
0
    def edit_referal_block(self, tg_id: int, num_referals: int):
        req_data = {
            'msg_id': self.id,
            'chapter_id': self.chapter_id,
            'referal_block': num_referals,
            'tg_id': tg_id,
        }
        edit_msg_resp = json.loads(
            requests.post(
                DB_URL.format(item='message', cmd='edit'),
                json=req_data,
            ).text)

        if edit_msg_resp.get('error'):
            msg = edit_msg_resp.get('error')
            tools.send_menu_msg(tg_id, msg)
        else:
            self.referal_block = edit_msg_resp['referal_block']
            self.show(tg_id)
    def rm(self, tg_id: int):
        result = json.loads(
            requests.post(
                DB_URL.format(item='chapter', cmd='rm'),
                json={
                    'story_id': self.story_id,
                    'tg_id': tg_id,
                    'chapter_id': self.id
                },
            ).text)
        if result.get('result') == 'ok':
            msg = 'Успешно.'
        else:
            msg = result.get('error')

        buttons = [
            [('Все главы', tools.make_call_back(story.SHOW_CHAPTERS_PREFIX))],
        ]
        tools.send_menu_msg(tg_id, msg, buttons)
Exemple #30
0
    def edit_timeout(self, tg_id: int, timeout: int):
        req_data = {
            'msg_id': self.id,
            'chapter_id': self.chapter_id,
            'timeout': timeout,
            'content_type': self.content_type,
            'tg_id': tg_id,
        }
        edit_msg_resp = json.loads(
            requests.post(
                DB_URL.format(item='message', cmd='edit'),
                json=req_data,
            ).text)

        if edit_msg_resp.get('error'):
            msg = edit_msg_resp.get('error')
            tools.send_menu_msg(tg_id, msg)
        else:
            self.timeout = edit_msg_resp['timeout']
            self.show(tg_id)