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

thread_members_update_middleware()   A

Complexity

Conditions 1

Size

Total Lines 27
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 13
dl 0
loc 27
rs 9.75
c 0
b 0
f 0
cc 1
nop 2
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
    """
16
    Middleware for ``on_thread_member_update``,
17
        creates a object for the thread member that is updated
18
19
    :param self:
20
        The current client.
21
22
    :param payload:
23
        The data received from the thread member update event.
24
    """
25
    added_members: List[ThreadMember] = [
26
        ThreadMember.from_dict(construct_client_dict(
27
            self,
28
            {
29
                "join_timestamp": Timestamp(added_member.pop("join_timestamp")),
30
                **added_member
31
            }
32
        ))
33
        for added_member in payload.data.pop("added_members")
34
    ]
35
36
    return "on_thread_members_update", [
37
        ThreadMembersUpdateEvent.from_dict(
38
            {
39
                "added_members": added_members,
40
                **payload.data
41
            }
42
        )
43
    ]
44
45
46
def export():
0 ignored issues
show
introduced by
Missing function or method docstring
Loading history...
47
    return thread_members_update_middleware
48