Skip to content

Commit

Permalink
Allow the passing of kwargs to Client.get_player to be used in the …
Browse files Browse the repository at this point in the history
…`Player` construction.

If no custom cls is provided this will have zero effect on the `Player`. Useful for passing custom attributes to custom `Player` sub-classes.
  • Loading branch information
EvieePy committed Feb 15, 2020
1 parent 17e3db4 commit 65039af
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 6 deletions.
2 changes: 1 addition & 1 deletion wavelink/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
__author__ = 'EvieePy'
__license__ = 'MIT'
__copyright__ = 'Copyright 2019-2020 (c) PythonistaGuild'
__version__ = '0.5.0'
__version__ = '0.5.01'

from .client import Client
from .errors import *
Expand Down
11 changes: 7 additions & 4 deletions wavelink/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,12 +185,15 @@ def get_node_by_shard(self, shard_id: int) -> Optional[Node]:

return sorted(nodes, key=lambda n: len(n.players))[0]

def get_player(self, guild_id: int, *, cls=None, node_id=None) -> Player:
def get_player(self, guild_id: int, *, cls=None, node_id=None, **kwargs) -> Player:
"""Retrieve a player for the given guild ID. If None, a player will be created and returned.
.. versionchanged:: 0.3.0
cls is now a keyword only argument.
.. versionadded:: 0.5.01
Added support for passing kwarg parameters to the cls.
Parameters
------------
guild_id: int
Expand Down Expand Up @@ -239,7 +242,7 @@ def get_player(self, guild_id: int, *, cls=None, node_id=None) -> Player:
if not node:
raise InvalidIDProvided(f'A Node with the identifier <{node_id}> does not exist.')

player = cls(self.bot, guild_id, node)
player = cls(self.bot, guild_id, node, **kwargs)
node.players[guild_id] = player

return player
Expand All @@ -259,7 +262,7 @@ def get_player(self, guild_id: int, *, cls=None, node_id=None) -> Player:
if not shard_options and not region_options:
# Sort by len of node players
node = sorted(nodes, key=lambda n: len(n.players))[0]
player = cls(self.bot, guild_id, node)
player = cls(self.bot, guild_id, node, **kwargs)
node.players[guild_id] = player

return player
Expand All @@ -272,7 +275,7 @@ def get_player(self, guild_id: int, *, cls=None, node_id=None) -> Player:
else:
node = sorted(region_options, key=lambda n: len(n.players))[0]

player = cls(self.bot, guild_id, node)
player = cls(self.bot, guild_id, node, **kwargs)
node.players[guild_id] = player

return player
Expand Down
2 changes: 1 addition & 1 deletion wavelink/player.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ class Player:
The channel the player is connected to. Could be None if the player is not connected.
"""

def __init__(self, bot: Union[commands.Bot, commands.AutoShardedBot], guild_id: int, node):
def __init__(self, bot: Union[commands.Bot, commands.AutoShardedBot], guild_id: int, node, **kwargs):
self.bot = bot
self.guild_id = guild_id
self.node = node
Expand Down

0 comments on commit 65039af

Please sign in to comment.