mirror of
https://github.com/flibusta-apps/book_bot.git
synced 2025-12-06 15:35:35 +01:00
Fix book formating
This commit is contained in:
@@ -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 = [];
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
@@ -16,7 +16,7 @@ export interface Page<T> {
|
||||
}
|
||||
|
||||
|
||||
interface BookAuthor {
|
||||
export interface BookAuthor {
|
||||
id: number;
|
||||
first_name: string;
|
||||
last_name: string;
|
||||
|
||||
Reference in New Issue
Block a user