Skip to content

Commit 9f24761

Browse files
authored
attach data to iterator on await
1 parent e342ca1 commit 9f24761

2 files changed

Lines changed: 18 additions & 3 deletions

File tree

discord/guild.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4814,7 +4814,7 @@ def search(
48144814
sort_by: SearchSortMode | None = None,
48154815
sort_order: SearchSortOrder | None = SearchSortOrder.desc,
48164816
include_nsfw: bool | None = False,
4817-
) -> list[Message]:
4817+
) -> MessageSearchIterator:
48184818
"""etc..."""
48194819

48204820
params = {}

discord/iterators.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,12 @@
3838
TypeVar,
3939
Union,
4040
)
41+
from typing_extensions import Self
4142

4243
from .audit_logs import AuditLogEntry
4344
from .errors import NoMoreItems
4445
from .object import Object
45-
from .utils import maybe_coroutine, snowflake_time, time_snowflake, warn_deprecated
46+
from .utils import maybe_coroutine, snowflake_time, time_snowflake, warn_deprecated, MISSING
4647

4748
__all__ = (
4849
"ReactionIterator",
@@ -1308,6 +1309,10 @@ def __init__(
13081309
self.messages = asyncio.Queue()
13091310
self.message_ids = []
13101311

1312+
self.doing_deep_historical_index: bool = MISSING
1313+
self.documents_indexed: int | None = MISSING
1314+
self.total_results: int = MISSING
1315+
13111316
async def next(self) -> Message:
13121317
if self.messages.empty():
13131318
await self.fill_messages()
@@ -1334,7 +1339,7 @@ async def fill_messages(self):
13341339
# "Clients should not rely on the length of the `messages` array to paginate results"
13351340
self.limit = 0 # terminate the infinite loop
13361341

1337-
data.get("threads", [])
1342+
threads = data.get("threads", [])
13381343
members = data.get("members", []) # do something here
13391344

13401345
for element in data["messages"]:
@@ -1351,8 +1356,18 @@ async def _retrieve_messages(self, retrieve: int) -> list[MessagePayload]:
13511356
data: list[MessageSearchPayload] = await self.search(
13521357
self.guild.id, **self.params
13531358
)
1359+
self.total_results = data.get("total_results")
1360+
self.doing_deep_historical_index = data.get("doing_deep_historical_index")
1361+
self.documents_indexed = data.get("documents_indexed")
13541362
self.params["offset"] = self.params.get("offset", 0) + retrieve
13551363
if data["messages"]:
13561364
if self.limit is not None:
13571365
self.limit -= retrieve
13581366
return data
1367+
1368+
async def retrieve_inner(self) -> Self:
1369+
await self.fill_messages()
1370+
return self
1371+
1372+
def __await__(self) -> Generator[Any, Any, MessagePin]:
1373+
return self.retrieve_inner().__await__()

0 commit comments

Comments
 (0)