Passed
Pull Request — main (#163)
by
unknown
02:02
created

pincer.middleware.thread_members_update   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 23
dl 0
loc 57
rs 10
c 0
b 0
f 0

2 Functions

Rating   Name   Duplication   Size   Complexity  
A thread_members_update_middleware() 0 36 1
A export() 0 2 1
1
# Copyright Pincer 2021-Present
2
# Full MIT License can be found in `LICENSE` at the project root.
3
4
"""sent when anyone is added to or removed from a thread"""
5
from typing import List
6
7
from ..core.dispatch import GatewayDispatch
8
from ..objects import ThreadMember
9
from ..objects.events.thread import ThreadMembersUpdateEvent
10
from ..utils import Timestamp
11
from ..utils.conversion import construct_client_dict
12
13
14
async def thread_members_update_middleware(self, payload: GatewayDispatch):
15
    """|coro|
16
17
    Middleware for ``on_thread_members_update`` event.
18
19
    Parameters
20
    ----------
21
    self : :class:`Client`
22
        The current client/bot.
23
24
    payload : :class:`GatewayDispatch`
25
        The data received from the thread members update event.
26
27
28
    Returns
29
    -------
30
    Tuple[:class:`str`, List[:class:`~pincer.objects.events.thread.ThreadMembersUpdateEvent`]]
31
        ``on_thread_members_update`` and an ``ThreadMembersUpdateEvent``
32
    """
33
34
    added_members: List[ThreadMember] = [
35
        ThreadMember.from_dict(construct_client_dict(
36
            self,
37
            {
38
                "join_timestamp": Timestamp(added_member.pop("join_timestamp")),
39
                **added_member
40
            }
41
        ))
42
        for added_member in payload.data.pop("added_members")
43
    ]
44
45
    return "on_thread_members_update", [
46
        ThreadMembersUpdateEvent.from_dict(
47
            {
48
                "added_members": added_members,
49
                **payload.data
50
            }
51
        )
52
    ]
53
54
55
def export():
0 ignored issues
show
introduced by
Missing function or method docstring
Loading history...
56
    return thread_members_update_middleware
57