Passed
Pull Request — main (#195)
by
unknown
01:37 queued 12s
created

pincer.middleware.guild   A

Complexity

Total Complexity 17

Size/Duplication

Total Lines 393
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 17
eloc 109
dl 0
loc 393
rs 10
c 0
b 0
f 0

16 Functions

Rating   Name   Duplication   Size   Complexity  
A guild_create_middleware() 0 20 1
A guild_delete_middleware() 0 21 2
A guild_role_create_middleware() 0 19 1
A guild_role_delete_middleware() 0 19 1
A guild_emojis_update_middleware() 0 19 1
A guild_status_middleware() 0 17 1
A guild_integrations_update_middleware() 0 21 1
A guild_member_remove_middleware() 0 19 1
A guild_ban_add_middleware() 0 19 1
A guild_stickers_update_middleware() 0 19 1
A guild_member_update_middleware() 0 19 1
A guild_unban_middleware() 0 19 1
A guild_update_middleware() 0 29 1
A guild_member_chunk_middleware() 0 19 1
A export() 0 16 1
A guild_member_add_middleware() 0 18 1
1
# Copyright Pincer 2021-Present
2
# Full MIT License can be found in `LICENSE` at the project root.
3
4
"""Guild events"""
5
6
from __future__ import annotations
7
from pincer.middleware import guild_members_chunk
0 ignored issues
show
Bug introduced by
The name guild_members_chunk does not seem to exist in module pincer.middleware.
Loading history...
8
from ..core.dispatch import GatewayDispatch
9
from ..objects.events.guild import (
0 ignored issues
show
Unused Code introduced by
Unused GuildRoleUpdateEvent imported from objects.events.guild
Loading history...
10
    GuildBanAddEvent,
11
    GuildBanRemoveEvent,
12
    GuildEmojisUpdateEvent,
13
    GuildIntegrationsUpdateEvent,
14
    GuildMemberAddEvent,
15
    GuildMemberRemoveEvent,
16
    GuildMemberUpdateEvent,
17
    GuildMembersChunkEvent,
18
    GuildRoleCreateEvent,
19
    GuildRoleDeleteEvent,
20
    GuildRoleUpdateEvent,
21
    GuildStatusEvent,
22
    GuildStickersUpdateEvent,
23
)
24
from ..utils import Coro
25
from ..objects import Guild, Channel
26
from ..utils.conversion import construct_client_dict
27
from ..objects.guild import Guild, UnavailableGuild
0 ignored issues
show
Unused Code introduced by
The import Guild was already done on line 25. You should be able to
remove this line.
Loading history...
28
29
from typing import TYPE_CHECKING
0 ignored issues
show
introduced by
standard import "from typing import TYPE_CHECKING" should be placed before "from pincer.middleware import guild_members_chunk"
Loading history...
30
31
if TYPE_CHECKING:
32
    from typing import List, Tuple
33
    from ..core.dispatch import GatewayDispatch
0 ignored issues
show
Unused Code introduced by
The import GatewayDispatch was already done on line 8. You should be able to
remove this line.
Loading history...
34
35
36
async def guild_create_middleware(self, payload: GatewayDispatch):
37
    """|coro|
38
39
    Middleware for ``on_guild_create``,
40
        generate the guild class that was created
41
42
    Parameters
43
    ----------
44
    payload : :class:`GatewayDispatch`
45
        The data received from the guild create event
46
47
    Returns
48
    -------
49
    Tuple[:class:`str`, List[:class:`~pincer.objects.guild.Guild`]]
50
51
        ``on_guild_create`` and a ``Guild``
52
    """
53
    guild = Guild.from_dict(construct_client_dict(self, payload.data))
54
    self.guilds[guild.id] = guild
55
    return "on_guild_create", [guild]
56
57
58
async def guild_ban_add_middleware(self, payload: GatewayDispatch):
59
    """|coro|
60
61
    Middleware for ``on_guild_ban_add`` event.
62
63
    Parameters
64
    ----------
65
    payload : :class:`GatewayDispatch`
66
        The data received from the guild ban add event.
67
68
    Returns
69
    -------
70
    Tuple[:class:`str`, List[:class:`~pincer.objects.events.guild.GuildBaAddEvent`]]
71
        ``on_guild_ban_add_update`` and a ``GuildBanAddEvent``
72
    """
73
74
    return (
75
        "on_guild_ban_add",
76
        [GuildBanAddEvent.from_dict(construct_client_dict(self, payload.data))],
77
    )
78
79
80
async def guild_unban_middleware(self, payload: GatewayDispatch):
81
    """|coro|
82
83
    Middleware for ``on_guild_ban_remove`` event.
84
85
    Parameters
86
    ----------
87
    payload : :class:`GatewayDispatch`
88
        The data received from the guild ban remove event.
89
90
    Returns
91
    -------
92
    Tuple[:class:`str`, List[:class:`~pincer.objects.events.guild.GuildBanRemoveEvent`]]
93
        ``on_guild_ban_remove_update`` and a ``GuildBanRemoveEvent``
94
    """
95
96
    return (
97
        "on_guild_ban_remove",
98
        [GuildBanRemoveEvent.from_dict(construct_client_dict(self, payload.data))],
99
    )
100
101
102
async def guild_delete_middleware(self, payload: GatewayDispatch):
103
    """|coro|
104
105
    Middleware for ``on_guild_delete`` event.
106
107
    Parameters
108
    ----------
109
    payload : :class:`GatewayDispatch`
110
        The data received from the guild delete event.
111
112
    Returns
113
    -------
114
    Tuple[:class:`str`, List[:class:`~pincer.objects.guild.guild.UnavailableGuild`]]
115
        ``on_guild_delete`` and an ``UnavailableGuild``
116
    """
117
    guild = UnavailableGuild.from_dict(construct_client_dict(self, payload.data))
118
119
    if guild.id in self.guilds.key():
120
        self.guilds.pop(guild.id)
121
122
    return "on_guild_delete", [guild]
123
124
125
async def guild_emojis_update_middleware(self, payload: GatewayDispatch):
126
    """|coro|
127
128
    Middleware for ``on_guild_emojis_update`` event.
129
130
    Parameters
131
    ----------
132
    payload : :class:`GatewayDispatch`
133
        The data received from the guild emojis update event.
134
135
    Returns
136
    -------
137
    Tuple[:class:`str`, List[:class:`~pincer.objects.events.guild.GuildEmojisUpdateEvent`]]
138
        ``on_guild_emoji_update`` and a ``GuildEmojisUpdateEvent``
139
    """
140
141
    return (
142
        "on_guild_emojis_update",
143
        [GuildEmojisUpdateEvent.from_dict(construct_client_dict(self, payload.data))],
144
    )
145
146
147
async def guild_integrations_update_middleware(self, payload: GatewayDispatch):
148
    """|coro|
149
150
    Middleware for ``on_guild_integrations_update`` event.
151
152
    Parameters
153
    ----------
154
    payload : :class:`GatewayDispatch`
155
        The data received from the guild integrations update event.
156
157
    Returns
158
    -------
159
    Tuple[:class:`str`, List[:class:`~pincer.objects.events.guild.GuildIntegrationsUpdateEvent`]]
160
        ``on_guild_integration_update`` and a ``GuildIntegrationsUpdateEvent``
161
    """
162
163
    return (
164
        "on_guild_integrations_update",
165
        [
166
            GuildIntegrationsUpdateEvent.from_dict(
167
                construct_client_dict(self, payload.data)
168
            )
169
        ],
170
    )
171
172
173
async def guild_member_add_middleware(self, payload: GatewayDispatch):
174
    """|coro|
175
176
    Middleware for ``on_guild_member_add`` event.
177
178
    Parameters
179
    ----------
180
    payload : :class:`GatewayDispatch`
181
        The data received from the guild member add event.
182
183
    Returns
184
    -------
185
    Tuple[:class:`str`, List[:class:`~pincer.objects.events.guild.GuildMemberAddEvent`]]
186
        ``on_guild_member_add`` and a ``GuildMemberAddEvent``
187
    """
188
189
    return "on_guild_member_add", [
190
        GuildMemberAddEvent.from_dict(construct_client_dict(self, payload.data))
191
    ]
192
193
194
async def guild_member_remove_middleware(self, payload: GatewayDispatch):
195
    """|coro|
196
197
    Middleware for ``on_guild_member_remove`` event.
198
199
    Parameters
200
    ----------
201
    payload : :class:`GatewayDispatch`
202
        The data received from the guild member remove event.
203
204
    Returns
205
    -------
206
    Tuple[:class:`str`, List[:class:`~pincer.objects.events.guild.GuildMemberRemoveEvent`]]
207
        ``on_guild_member_remove`` and a ``GuildMemberRemoveEvent``
208
    """
209
210
    return (
211
        "on_guild_member_remove",
212
        [GuildMemberRemoveEvent.from_dict(construct_client_dict(self, payload.data))],
213
    )
214
215
216
async def guild_member_update_middleware(self, payload: GatewayDispatch):
217
    """|coro|
218
219
    Middleware for ``on_guild_member_update`` event.
220
221
    Parameters
222
    ----------
223
    payload : :class:`GatewayDispatch`
224
        The data received from the guild member update event.
225
226
    Returns
227
    -------
228
    Tuple[:class:`str`, List[:class:`~pincer.objects.events.guild.GuildMemberUpdateEvent`]]
229
        ``on_guild_member_update`` and a ``GuildMemberUpdateEvent``
230
    """
231
232
    return (
233
        "on_guild_member_update",
234
        [GuildMemberUpdateEvent.from_dict(construct_client_dict(self, payload.data))],
235
    )
236
237
238
async def guild_member_chunk_middleware(self, payload: GatewayDispatch):
239
    """|coro|
240
241
    Middleware for ``on_guild_member_chunk`` event.
242
243
    Parameters
244
    ----------
245
    payload : :class:`GatewayDispatch`
246
        The data received from the guild member chunk event.
247
248
    Returns
249
    -------
250
    Tuple[:class:`str`, List[:class:`~pincer.objects.events.guild.GuildMemberChunkEvent`]]
251
        ``on_guild_member_chunk`` and a ``GuildMemberChunkEvent``
252
    """
253
254
    return (
255
        "on_guild_member_chunk",
256
        [GuildMembersChunkEvent.from_dict(construct_client_dict(self, payload.data))],
257
    )
258
259
260
async def guild_role_create_middleware(self, payload: GatewayDispatch):
261
    """|coro|
262
263
    Middleware for ``on_guild_role_create`` event.
264
265
    Parameters
266
    ----------
267
    payload : :class:`GatewayDispatch`
268
        The data received from the guild role create event.
269
270
    Returns
271
    -------
272
    Tuple[:class:`str`, List[:class:`~pincer.objects.events.guild.GuildRoleCreateEvent`]]
273
        ``on_guild_role_create`` and a ``GuildRoleCreateEvent``
274
    """
275
276
    return (
277
        "on_guild_role_create",
278
        [GuildRoleCreateEvent.from_dict(construct_client_dict(self, payload.data))],
279
    )
280
281
282
async def guild_role_delete_middleware(self, payload: GatewayDispatch):
283
    """|coro|
284
285
    Middleware for ``on_guild_role_delete`` event.
286
287
    Parameters
288
    ----------
289
    payload : :class:`GatewayDispatch`
290
        The data received from the guild role delete event.
291
292
    Returns
293
    -------
294
    Tuple[:class:`str`, List[:class:`~pincer.objects.events.guild.GuildRoleDeleteEvent`]]
295
        ``on_guild_role_delete`` and a ``GuildRoleDeleteEvent``
296
    """
297
298
    return (
299
        "on_guild_role_delete",
300
        [GuildRoleDeleteEvent.from_dict(construct_client_dict(self, payload.data))],
301
    )
302
303
304
async def guild_update_middleware(self, payload: GatewayDispatch):
305
    """|coro|
306
307
    Middleware for ``on_guild_update`` event.
308
309
    Parameters
310
    ----------
311
    payload : :class:`GatewayDispatch`
312
        The data received from the guild update event.
313
314
    Returns
315
    -------
316
    Tuple[:class:`str`, List[:class:`~pincer.objects.guild.guild.Guild`]]
317
        ``on_guild_Update`` and an ``Guild``
318
    """
319
320
    channel_list = payload.data.pop("channels", [])
321
322
    channels: List[Channel] = [
323
        Channel.from_dict(construct_client_dict(self, channel))
324
        for channel in channel_list
325
    ]
326
327
    guild = Guild.from_dict(
328
        construct_client_dict(self, {"channels": channels, **payload.data})
329
    )
330
    self.guild[guild.id] = guild
331
332
    return "on_guild_update", [guild]
333
334
335
async def guild_stickers_update_middleware(self, payload: GatewayDispatch):
336
    """|coro|
337
338
    Middleware for ``on_guild_stickers_update`` event.
339
340
    Parameters
341
    ----------
342
    payload : :class:`GatewayDispatch`
343
        The data received from the guild stickers update event.
344
345
    Returns
346
    -------
347
    Tuple[:class:`str`, List[:class:`~pincer.objects.events.guild.GuildStickersUpdateEvent`]]
348
        ``on_guild_sticker_update`` and a ``GuildStickersUpdateEvent``
349
    """
350
351
    return (
352
        "on_guild_stickers_update",
353
        [GuildStickersUpdateEvent.from_dict(construct_client_dict(self, payload.data))],
354
    )
355
356
357
async def guild_status_middleware(self, payload: GatewayDispatch):
358
    """|coro|
359
360
    Middleware for ``on_guild_status`` event.
361
362
    Parameters
363
    ----------
364
    payload : :class:`GatewayDispatch`
365
        The data received from the guild status event.
366
367
    Return
368
    ------
369
    Tuple[:class:`str`, List[:class:`~pincer.objects.events.guild.GuildStatusEvent`]]
370
        ``on_guild_status`` and a ``GuildStatusEvent``
371
    """
372
    return "on_guild_status", [
373
        GuildStatusEvent.from_dict(construct_client_dict(self, payload.data))
374
    ]
375
376
377
def export() -> Coro:
0 ignored issues
show
introduced by
Missing function or method docstring
Loading history...
378
    return (
379
        guild_ban_add_middleware,
380
        guild_unban_middleware,
381
        guild_create_middleware,
382
        guild_delete_middleware,
383
        guild_emojis_update_middleware,
384
        guild_member_add_middleware,
385
        guild_integrations_update_middleware,
386
        guild_member_remove_middleware,
387
        guild_member_update_middleware,
388
        guild_members_chunk,
389
        guild_role_create_middleware,
390
        guild_update_middleware,
391
        guild_stickers_update_middleware,
392
        guild_status_middleware,
393
    )
394