в телетоне, насколько я знаю, нужен отдельный метод вызвать чтобы сохранить сессию. и воoбще советую pyrogram.
@client.on(events.NewMessage)
тут по логике вещей должен быть фильтер что отправитель ты сам. По крайней мере в пайрограме такая логика, за телетон не знаю
структура какая-то странная. Я бы создал 2 обработчика команд: старт и стоп соответственно. они переключают флаг.
далее еще один обработчик, на сей раз исходящих сообщений. В нем, если флаг == тру - сохраняем. иначе - афкшим (ничего не даелаем)