diff --git a/bot/bun.lockb b/bot/bun.lockb index 5e92a01..95e1269 100755 Binary files a/bot/bun.lockb and b/bot/bun.lockb differ diff --git a/bot/src/commands/hears/daySchedule.ts b/bot/src/commands/hears/daySchedule.ts index adc3f8d..dd57059 100644 --- a/bot/src/commands/hears/daySchedule.ts +++ b/bot/src/commands/hears/daySchedule.ts @@ -32,11 +32,15 @@ export class DayScheduleCommand extends AbstractHearsCommand { await ctx.reply(`🤩 На ${ctx.message.text.toLowerCase()} нет занятий`) return } - await ctx.reply([ - `Расписание ${ctx.user.group!.display} на ${ctx.message.text.toLowerCase()}`, - lessonsToMessage(lessons), - null, - '❤️‍🔥 ПОДДЕРЖАТЬ МАТЕРИАЛЬНО!!' - ].join('\n'), { parse_mode: 'HTML', disable_web_page_preview: true }) + + const messagesContent = lessonsToMessage(lessons) + for (let i = 0; i < messagesContent.length; i++) { + let content = '' + if (i === 0) content = `Расписание ${ctx.user.group!.display} на ${ctx.message.text.toLowerCase()}\n` + content += (messagesContent + '\n\n' + + '❤️‍🔥 ПОДДЕРЖАТЬ МАТЕРИАЛЬНО!!') + + await ctx.reply(content, { parse_mode: 'HTML', disable_web_page_preview: true }) + } } } \ No newline at end of file diff --git a/bot/src/keeper/helpers.ts b/bot/src/keeper/helpers.ts index c4498b7..c5c8f70 100644 --- a/bot/src/keeper/helpers.ts +++ b/bot/src/keeper/helpers.ts @@ -83,7 +83,7 @@ export const lessonToMessage = (lesson: Lesson | LessonGroups, groups?: Group[]) return items.join(' | ') } -export const lessonsToMessage = (lessons: Lesson[], groups?: Group[]): string => { +export const lessonsToMessage = (lessons: Lesson[], groups?: Group[]): string[] => { const daysLessons = lessons .sort((a, b) => a.date.getTime() - b.date.getTime()) .reduce((acc, lesson) => { @@ -126,7 +126,20 @@ export const lessonsToMessage = (lessons: Lesson[], groups?: Group[]): string => return lines.join('\n') }) - return days.join('\n\n') + let messages: string[] = [] + + for (const dayString of days) { + let lastMessage = messages.at(-1) || '' + + const newMessageContent = lastMessage + '\n\n' + dayString + if (newMessageContent.length > 3840) { + messages.push(dayString) + } else { + messages[messages.length - 1] = newMessageContent.trim() + } + } + + return messages } export const weekToHuman = (weekStart: Date, from = getWeekStart(), incrementDay = false): string => {