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;
|
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[] = [];
|
let response: string[] = [];
|
||||||
|
|
||||||
response.push(`📖 ${book.title} | ${book.lang}`);
|
response.push(`📖 ${book.title} | ${book.lang}`);
|
||||||
@@ -25,7 +25,15 @@ export function formatBook(book: AllBookTypes): string {
|
|||||||
|
|
||||||
if (isTranslatorBook(book) && book.authors.length > 0) {
|
if (isTranslatorBook(book) && book.authors.length > 0) {
|
||||||
response.push('Авторы:')
|
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) {
|
if (isAuthorBook(book) && book.translators.length > 0) {
|
||||||
@@ -38,6 +46,10 @@ export function formatBook(book: AllBookTypes): string {
|
|||||||
return response.join('\n');
|
return response.join('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function formatBookShort(book: AllBookTypes): string {
|
||||||
|
return formatBook(book, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export function formatAuthor(author: Author): string {
|
export function formatAuthor(author: Author): string {
|
||||||
let response = [];
|
let response = [];
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import * as Sentry from '@sentry/node';
|
|||||||
import { Context, Telegraf, Markup } from 'telegraf';
|
import { Context, Telegraf, Markup } from 'telegraf';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
|
|
||||||
import { BotState } from '@/bots/manager';
|
import { BotState } from '@/bots/manager/types';
|
||||||
|
|
||||||
import env from '@/config';
|
import env from '@/config';
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ import * as CallbackData from "./callback_data";
|
|||||||
import * as BookLibrary from "./services/book_library";
|
import * as BookLibrary from "./services/book_library";
|
||||||
import UsersCounter from '@/analytics/users_counter';
|
import UsersCounter from '@/analytics/users_counter';
|
||||||
import { createOrUpdateUserSettings, getUserSettings } from './services/user_settings';
|
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 { getCallbackArgs, getPaginatedMessage, getPrefixWithQueryCreator, getSearchArgs, registerLanguageSettingsCallback, registerPaginationCommand, registerRandomItemCallback } from './utils';
|
||||||
import { getRandomKeyboard, getTextPaginationData, getUpdateLogKeyboard, getUserAllowedLangsKeyboard } from './keyboard';
|
import { getRandomKeyboard, getTextPaginationData, getUpdateLogKeyboard, getUserAllowedLangsKeyboard } from './keyboard';
|
||||||
import { sendFile } from './hooks/downloading';
|
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));
|
bot.command(["help", `help@${me.username}`], async (ctx: Context) => ctx.reply(Messages.HELP_MESSAGE));
|
||||||
|
|
||||||
registerPaginationCommand(
|
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(
|
registerPaginationCommand(
|
||||||
bot, CallbackData.SEARCH_TRANSLATORS_PREFIX, getSearchArgs, null, BookLibrary.searchTranslators, formatTranslator,
|
bot, CallbackData.SEARCH_TRANSLATORS_PREFIX, getSearchArgs, null, BookLibrary.searchTranslators, formatTranslator,
|
||||||
@@ -85,15 +85,15 @@ export async function createApprovedBot(token: string, state: BotState): Promise
|
|||||||
|
|
||||||
registerPaginationCommand(
|
registerPaginationCommand(
|
||||||
bot, CallbackData.AUTHOR_BOOKS_PREFIX, getCallbackArgs, getPrefixWithQueryCreator(CallbackData.AUTHOR_BOOKS_PREFIX),
|
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(
|
registerPaginationCommand(
|
||||||
bot, CallbackData.TRANSLATOR_BOOKS_PREFIX, getCallbackArgs, getPrefixWithQueryCreator(CallbackData.TRANSLATOR_BOOKS_PREFIX),
|
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(
|
registerPaginationCommand(
|
||||||
bot, CallbackData.SEQUENCE_BOOKS_PREFIX, getCallbackArgs, getPrefixWithQueryCreator(CallbackData.SEQUENCE_BOOKS_PREFIX),
|
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) => {
|
bot.command(["random", `random@${me.username}`], async (ctx: Context) => {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export interface Page<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
interface BookAuthor {
|
export interface BookAuthor {
|
||||||
id: number;
|
id: number;
|
||||||
first_name: string;
|
first_name: string;
|
||||||
last_name: string;
|
last_name: string;
|
||||||
|
|||||||
Reference in New Issue
Block a user