Fix book formating

This commit is contained in:
2022-03-02 20:49:16 +03:00
parent 1edc63614f
commit 59a61e64fd
3 changed files with 22 additions and 10 deletions

View File

@@ -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 = [];

View File

@@ -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) => {

View File

@@ -16,7 +16,7 @@ export interface Page<T> {
}
interface BookAuthor {
export interface BookAuthor {
id: number;
first_name: string;
last_name: string;