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)
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)
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)
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})
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)
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})
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, })
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})
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})
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})
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)
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)
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 })
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)