import re from typing import Optional def sub_clyde(username: Optional[str]) -> Optional[str]: """ Replace "e"/"E" in any "clyde" in `username` with a Cyrillic "е"/"E" and return the new string. Discord disallows "clyde" anywhere in the username for webhooks. It will return a 400. Return None only if `username` is None. """ def replace_e(match: re.Match) -> str: char = "е" if match[2] == "e" else "Е" return match[1] + char if username: return re.sub(r"(clyd)(e)", replace_e, username, flags=re.I) else: return username # Empty string or None