mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-06-07 12:18:59 +00:00
Rework Member.edit to not use kwargs for better typing
This commit is contained in:
parent
53ef89c29f
commit
a372aadb2d
@ -29,11 +29,12 @@ import inspect
|
|||||||
import itertools
|
import itertools
|
||||||
import sys
|
import sys
|
||||||
from operator import attrgetter
|
from operator import attrgetter
|
||||||
from typing import List, Literal, Optional, TYPE_CHECKING, Union, overload
|
from typing import Any, Dict, List, Literal, Optional, TYPE_CHECKING, Union, overload
|
||||||
|
|
||||||
import discord.abc
|
import discord.abc
|
||||||
|
|
||||||
from . import utils
|
from . import utils
|
||||||
|
from .utils import MISSING
|
||||||
from .user import BaseUser, User
|
from .user import BaseUser, User
|
||||||
from .activity import create_activity
|
from .activity import create_activity
|
||||||
from .permissions import Permissions
|
from .permissions import Permissions
|
||||||
@ -559,25 +560,17 @@ class Member(discord.abc.Messageable, _BaseUser):
|
|||||||
"""
|
"""
|
||||||
await self.guild.kick(self, reason=reason)
|
await self.guild.kick(self, reason=reason)
|
||||||
|
|
||||||
@overload
|
|
||||||
async def edit(
|
async def edit(
|
||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
reason: Optional[str] = ...,
|
nick: Optional[str] = MISSING,
|
||||||
nick: Optional[str] = None,
|
mute: bool = MISSING,
|
||||||
mute: bool = ...,
|
deafen: bool = MISSING,
|
||||||
deafen: bool = ...,
|
suppress: bool = MISSING,
|
||||||
suppress: bool = ...,
|
roles: List[discord.abc.Snowflake] = MISSING,
|
||||||
roles: Optional[List[discord.abc.Snowflake]] = ...,
|
voice_channel: Optional[VocalGuildChannel] = MISSING,
|
||||||
voice_channel: Optional[VocalGuildChannel] = ...,
|
reason: Optional[str] = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
...
|
|
||||||
|
|
||||||
@overload
|
|
||||||
async def edit(self) -> None:
|
|
||||||
...
|
|
||||||
|
|
||||||
async def edit(self, *, reason=None, **fields):
|
|
||||||
"""|coro|
|
"""|coro|
|
||||||
|
|
||||||
Edits the member's data.
|
Edits the member's data.
|
||||||
@ -616,7 +609,7 @@ class Member(discord.abc.Messageable, _BaseUser):
|
|||||||
|
|
||||||
.. versionadded:: 1.7
|
.. versionadded:: 1.7
|
||||||
|
|
||||||
roles: Optional[List[:class:`Role`]]
|
roles: List[:class:`Role`]
|
||||||
The member's new list of roles. This *replaces* the roles.
|
The member's new list of roles. This *replaces* the roles.
|
||||||
voice_channel: Optional[:class:`VoiceChannel`]
|
voice_channel: Optional[:class:`VoiceChannel`]
|
||||||
The voice channel to move the member to.
|
The voice channel to move the member to.
|
||||||
@ -634,30 +627,22 @@ class Member(discord.abc.Messageable, _BaseUser):
|
|||||||
http = self._state.http
|
http = self._state.http
|
||||||
guild_id = self.guild.id
|
guild_id = self.guild.id
|
||||||
me = self._state.self_id == self.id
|
me = self._state.self_id == self.id
|
||||||
payload = {}
|
payload: Dict[str, Any] = {}
|
||||||
|
|
||||||
try:
|
if nick is not MISSING:
|
||||||
nick = fields['nick']
|
|
||||||
except KeyError:
|
|
||||||
# nick not present so...
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
nick = nick or ''
|
nick = nick or ''
|
||||||
if me:
|
if me:
|
||||||
await http.change_my_nickname(guild_id, nick, reason=reason)
|
await http.change_my_nickname(guild_id, nick, reason=reason)
|
||||||
else:
|
else:
|
||||||
payload['nick'] = nick
|
payload['nick'] = nick
|
||||||
|
|
||||||
deafen = fields.get('deafen')
|
if deafen is not MISSING:
|
||||||
if deafen is not None:
|
|
||||||
payload['deaf'] = deafen
|
payload['deaf'] = deafen
|
||||||
|
|
||||||
mute = fields.get('mute')
|
if mute is not MISSING:
|
||||||
if mute is not None:
|
|
||||||
payload['mute'] = mute
|
payload['mute'] = mute
|
||||||
|
|
||||||
suppress = fields.get('suppress')
|
if suppress is not MISSING:
|
||||||
if suppress is not None:
|
|
||||||
voice_state_payload = {
|
voice_state_payload = {
|
||||||
'channel_id': self.voice.channel.id,
|
'channel_id': self.voice.channel.id,
|
||||||
'suppress': suppress,
|
'suppress': suppress,
|
||||||
@ -673,24 +658,15 @@ class Member(discord.abc.Messageable, _BaseUser):
|
|||||||
voice_state_payload['request_to_speak_timestamp'] = datetime.datetime.utcnow().isoformat()
|
voice_state_payload['request_to_speak_timestamp'] = datetime.datetime.utcnow().isoformat()
|
||||||
await http.edit_voice_state(guild_id, self.id, voice_state_payload)
|
await http.edit_voice_state(guild_id, self.id, voice_state_payload)
|
||||||
|
|
||||||
try:
|
if voice_channel is not MISSING:
|
||||||
vc = fields['voice_channel']
|
payload['channel_id'] = voice_channel and voice_channel.id
|
||||||
except KeyError:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
payload['channel_id'] = vc and vc.id
|
|
||||||
|
|
||||||
try:
|
if roles is not MISSING:
|
||||||
roles = fields['roles']
|
|
||||||
except KeyError:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
payload['roles'] = tuple(r.id for r in roles)
|
payload['roles'] = tuple(r.id for r in roles)
|
||||||
|
|
||||||
if payload:
|
if payload:
|
||||||
await http.edit_member(guild_id, self.id, reason=reason, **payload)
|
await http.edit_member(guild_id, self.id, reason=reason, **payload)
|
||||||
|
|
||||||
# TODO: wait for WS event for modify-in-place behaviour
|
|
||||||
|
|
||||||
async def request_to_speak(self):
|
async def request_to_speak(self):
|
||||||
"""|coro|
|
"""|coro|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user