aboutsummaryrefslogtreecommitdiffstats
path: root/bot/rules/newlines.py
blob: a6a1a52d02e1eb112db69838a4f9f29f0730e1d9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
"""Detects total newlines exceeding the set limit sent by a single user."""

from typing import Dict, Iterable, List, Optional, Tuple

from discord import Member, Message


async def apply(
    last_message: Message,
    recent_messages: List[Message],
    config: Dict[str, int]
) -> Optional[Tuple[str, Iterable[Member], Iterable[Message]]]:

    relevant_messages = tuple(
        msg
        for msg in recent_messages
        if msg.author == last_message.author
    )

    total_recent_newlines = sum(msg.content.count('\n') for msg in relevant_messages)

    if total_recent_newlines > config['max']:
        return (
            f"sent {total_recent_newlines} newlines in {config['interval']}s",
            (last_message.author,),
            relevant_messages
        )
    return None