From 41e2d3c6370e2e5101245d9884094e314cb92182 Mon Sep 17 00:00:00 2001
From: Josh <josh.ja.butt@gmail.com>
Date: Thu, 29 Jul 2021 09:58:01 +1000
Subject: [PATCH] Allow callables in abc.Connectable.Connect

---
 discord/abc.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/discord/abc.py b/discord/abc.py
index ffaa5feb2..895083fd3 100644
--- a/discord/abc.py
+++ b/discord/abc.py
@@ -28,6 +28,7 @@ import copy
 import asyncio
 from typing import (
     Any,
+    Callable,
     Dict,
     List,
     Mapping,
@@ -68,6 +69,7 @@ T = TypeVar('T', bound=VoiceProtocol)
 if TYPE_CHECKING:
     from datetime import datetime
 
+    from .client import Client
     from .user import ClientUser
     from .asset import Asset
     from .state import ConnectionState
@@ -1611,7 +1613,13 @@ class Connectable(Protocol):
     def _get_voice_state_pair(self) -> Tuple[int, int]:
         raise NotImplementedError
 
-    async def connect(self, *, timeout: float = 60.0, reconnect: bool = True, cls: Type[T] = VoiceClient) -> T:
+    async def connect(
+        self,
+        *,
+        timeout: float = 60.0,
+        reconnect: bool = True,
+        cls: Callable[[Client, Connectable], T] = VoiceClient,
+    ) -> T:
         """|coro|
 
         Connects to voice and creates a :class:`VoiceClient` to establish