Мне нужно было бы протестировать код или тщательно его изучить, чтобы понять, в чём может быть проблема, а это выходит за рамки того, что я могу сделать бесплатно. Я почти уверен, что first_day относится именно к этому, но точно не знаю.
Мне кажется, что проблема в ограничениях уровня TL0.
Самая частая жалоба пользователей заключается в том, что ограничения для новых пользователей слишком жёсткие. Если вы не считаете, что ваши учащиеся — настоящие спамеры, то удержание их на уровне TL0, скорее всего, ошибка. Возможно, то, что вы пытаетесь решить, лучше реализовать с помощью бейджей и прав групп.