From aeb2cfb5730031ecd4d35badb3a80e08f97f3028 Mon Sep 17 00:00:00 2001
From: Rapptz <rapptz@gmail.com>
Date: Fri, 28 May 2021 01:56:48 -0400
Subject: [PATCH] Add private get_slots utility to get slots through MRO

---
 discord/utils.py | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/discord/utils.py b/discord/utils.py
index 3682cffd9..37e635bc5 100644
--- a/discord/utils.py
+++ b/discord/utils.py
@@ -502,6 +502,14 @@ async def sane_wait_for(futures, *, timeout):
     return done
 
 
+def get_slots(cls: Type[Any]) -> Iterator[str]:
+    for mro in reversed(cls.__mro__):
+        try:
+            yield from mro.__slots__
+        except AttributeError:
+            continue
+
+
 def compute_timedelta(dt: datetime.datetime):
     if dt.tzinfo is None:
         dt = dt.astimezone()