Passed
Pull Request — main (#195)
by
unknown
01:27
created

pincer.middleware.guild.guild_status_middleware()   A

Complexity

Conditions 1

Size

Total Lines 17
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

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