From 59a61e64fd6f0d1a948fc55c76ca708ee90d6ee1 Mon Sep 17 00:00:00 2001 From: Bulat Kurbanov Date: Wed, 2 Mar 2022 20:49:16 +0300 Subject: [PATCH] Fix book formating --- src/bots/factory/bots/approved/format.ts | 18 +++++++++++++++--- src/bots/factory/bots/approved/index.ts | 12 ++++++------ .../bots/approved/services/book_library.ts | 2 +- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/bots/factory/bots/approved/format.ts b/src/bots/factory/bots/approved/format.ts index 08defb1..81d2b46 100644 --- a/src/bots/factory/bots/approved/format.ts +++ b/src/bots/factory/bots/approved/format.ts @@ -1,4 +1,4 @@ -import { AuthorBook, TranslatorBook, Book, Author, Sequence } from './services/book_library'; +import { AuthorBook, TranslatorBook, Book, Author, Sequence, BookAuthor } from './services/book_library'; type AllBookTypes = Book | AuthorBook | TranslatorBook; @@ -14,7 +14,7 @@ function isTranslatorBook(item: AllBookTypes): item is TranslatorBook { } -export function formatBook(book: AllBookTypes): string { +export function formatBook(book: AllBookTypes, short: boolean = false): string { let response: string[] = []; response.push(`📖 ${book.title} | ${book.lang}`); @@ -25,7 +25,15 @@ export function formatBook(book: AllBookTypes): string { if (isTranslatorBook(book) && book.authors.length > 0) { response.push('Авторы:') - book.authors.forEach(author => response.push(`͏👤 ${author.last_name} ${author.first_name} ${author.middle_name}`)); + + const pushAuthor = (author: BookAuthor) => response.push(`͏👤 ${author.last_name} ${author.first_name} ${author.middle_name}`); + + if (short && book.authors.length >= 5) { + book.authors.slice(0, 5).forEach(pushAuthor); + response.push(" и другие."); + } else { + book.authors.forEach(pushAuthor); + } } if (isAuthorBook(book) && book.translators.length > 0) { @@ -38,6 +46,10 @@ export function formatBook(book: AllBookTypes): string { return response.join('\n'); } +export function formatBookShort(book: AllBookTypes): string { + return formatBook(book, true); +} + export function formatAuthor(author: Author): string { let response = []; diff --git a/src/bots/factory/bots/approved/index.ts b/src/bots/factory/bots/approved/index.ts index 9ae98cf..840eb3b 100644 --- a/src/bots/factory/bots/approved/index.ts +++ b/src/bots/factory/bots/approved/index.ts @@ -3,7 +3,7 @@ import * as Sentry from '@sentry/node'; import { Context, Telegraf, Markup } from 'telegraf'; import moment from 'moment'; -import { BotState } from '@/bots/manager'; +import { BotState } from '@/bots/manager/types'; import env from '@/config'; @@ -14,7 +14,7 @@ import * as CallbackData from "./callback_data"; import * as BookLibrary from "./services/book_library"; import UsersCounter from '@/analytics/users_counter'; import { createOrUpdateUserSettings, getUserSettings } from './services/user_settings'; -import { formatBook, formatAuthor, formatSequence, formatTranslator } from './format'; +import { formatBook, formatBookShort, formatAuthor, formatSequence, formatTranslator } from './format'; import { getCallbackArgs, getPaginatedMessage, getPrefixWithQueryCreator, getSearchArgs, registerLanguageSettingsCallback, registerPaginationCommand, registerRandomItemCallback } from './utils'; import { getRandomKeyboard, getTextPaginationData, getUpdateLogKeyboard, getUserAllowedLangsKeyboard } from './keyboard'; import { sendFile } from './hooks/downloading'; @@ -70,7 +70,7 @@ export async function createApprovedBot(token: string, state: BotState): Promise bot.command(["help", `help@${me.username}`], async (ctx: Context) => ctx.reply(Messages.HELP_MESSAGE)); registerPaginationCommand( - bot, CallbackData.SEARCH_BOOK_PREFIX, getSearchArgs, null, BookLibrary.searchByBookName, formatBook, undefined, Messages.BOOKS_NOT_FOUND + bot, CallbackData.SEARCH_BOOK_PREFIX, getSearchArgs, null, BookLibrary.searchByBookName, formatBookShort, undefined, Messages.BOOKS_NOT_FOUND ); registerPaginationCommand( bot, CallbackData.SEARCH_TRANSLATORS_PREFIX, getSearchArgs, null, BookLibrary.searchTranslators, formatTranslator, @@ -85,15 +85,15 @@ export async function createApprovedBot(token: string, state: BotState): Promise registerPaginationCommand( bot, CallbackData.AUTHOR_BOOKS_PREFIX, getCallbackArgs, getPrefixWithQueryCreator(CallbackData.AUTHOR_BOOKS_PREFIX), - BookLibrary.getAuthorBooks, formatBook, undefined, Messages.BOOKS_NOT_FOUND, + BookLibrary.getAuthorBooks, formatBookShort, undefined, Messages.BOOKS_NOT_FOUND, ); registerPaginationCommand( bot, CallbackData.TRANSLATOR_BOOKS_PREFIX, getCallbackArgs, getPrefixWithQueryCreator(CallbackData.TRANSLATOR_BOOKS_PREFIX), - BookLibrary.getTranslatorBooks, formatBook, undefined, Messages.BOOKS_NOT_FOUND, + BookLibrary.getTranslatorBooks, formatBookShort, undefined, Messages.BOOKS_NOT_FOUND, ); registerPaginationCommand( bot, CallbackData.SEQUENCE_BOOKS_PREFIX, getCallbackArgs, getPrefixWithQueryCreator(CallbackData.SEQUENCE_BOOKS_PREFIX), - BookLibrary.getSequenceBooks, formatBook, undefined, Messages.BOOKS_NOT_FOUND, + BookLibrary.getSequenceBooks, formatBookShort, undefined, Messages.BOOKS_NOT_FOUND, ); bot.command(["random", `random@${me.username}`], async (ctx: Context) => { diff --git a/src/bots/factory/bots/approved/services/book_library.ts b/src/bots/factory/bots/approved/services/book_library.ts index 1f4c593..b0adeed 100644 --- a/src/bots/factory/bots/approved/services/book_library.ts +++ b/src/bots/factory/bots/approved/services/book_library.ts @@ -16,7 +16,7 @@ export interface Page { } -interface BookAuthor { +export interface BookAuthor { id: number; first_name: string; last_name: string;