"""Antwort-Verzoegerung: Lesezeit der eingehenden Nachricht plus
Denkzeit skaliert an der eigenen Antwortlaenge.

Das eigentliche Tipp-Tempo regelt die Firmware; hier geht es um die
Zeit, bevor der erste Buchstabe faellt.
"""
import random


def _gauss(mu, sigma, lo, hi):
    return min(max(random.gauss(mu, sigma), lo), hi)


def reading_seconds(incoming):
    """~200–400 Zeichen/Minute Lesetempo (0.15–0.3 s/Zeichen)."""
    per_char = _gauss(0.2, 0.05, 0.15, 0.3)
    return min(max(len(incoming or '') * per_char, 1.5), 20.0)


def thinking_seconds(reply):
    """Denkzeit pro Wort der eigenen Antwort (0.4–1.0 s/Wort)."""
    words = max(len((reply or '').split()), 1)
    per_word = _gauss(0.65, 0.15, 0.4, 1.0)
    return min(words * per_word, 15.0)


def reply_delay_seconds(incoming, reply):
    """Gesamtverzoegerung vor dem Tippen (Lesen + Denken)."""
    return reading_seconds(incoming) + thinking_seconds(reply)
