Skip to content

Commit

Permalink
bot: large message fix
Browse files Browse the repository at this point in the history
  • Loading branch information
bit0r1n committed Sep 5, 2024
1 parent 056b3a5 commit 167950f
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 8 deletions.
Binary file modified bot/bun.lockb
Binary file not shown.
16 changes: 10 additions & 6 deletions bot/src/commands/hears/daySchedule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
'❤️‍🔥 <a href="https://bitor.in/donate">ПОДДЕРЖАТЬ МАТЕРИАЛЬНО!!</a>'
].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'
+ '❤️‍🔥 <a href="https://bitor.in/donate">ПОДДЕРЖАТЬ МАТЕРИАЛЬНО!!</a>')

await ctx.reply(content, { parse_mode: 'HTML', disable_web_page_preview: true })
}
}
}
17 changes: 15 additions & 2 deletions bot/src/keeper/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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) => {
Expand Down Expand Up @@ -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 => {
Expand Down

0 comments on commit 167950f

Please sign in to comment.