Skip to content

Commit d6b8f96

Browse files
committed
perf: Improve dm_user performance
1 parent f1e00bd commit d6b8f96

File tree

2 files changed

+5
-19
lines changed

2 files changed

+5
-19
lines changed

hoyo_buddy/bot/bot.py

+4-18
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import sentry_sdk
2020
import tortoise.timezone
2121
from asyncache import cached
22-
from cachetools import LRUCache, TTLCache
22+
from cachetools import TTLCache
2323
from discord import app_commands
2424
from discord.ext import commands
2525
from loguru import logger
@@ -282,34 +282,20 @@ def capture_exception(self, e: Exception) -> None:
282282
logger.warning(f"Error: {e}, capturing exception")
283283
sentry_sdk.capture_exception(e)
284284

285-
@cached(cache=LRUCache(maxsize=10000))
286-
async def fetch_user(self, user_id: int) -> discord.User | None:
287-
try:
288-
user = super().get_user(user_id) or await super().fetch_user(user_id)
289-
except (discord.NotFound, discord.HTTPException):
290-
return None
291-
else:
292-
return user
293-
294285
async def dm_user(
295286
self, user_id: int, *, content: str | None = None, **kwargs: Any
296287
) -> discord.Message | None:
297288
logger.debug(f"DMing user {user_id}")
298-
user = self.get_user(user_id) or await self.fetch_user(user_id)
299-
if user is None:
300-
logger.debug(f"Failed to fetch user {user_id}")
301-
return None
289+
user = self.get_user(user_id) or self.get_partial_messageable(user_id)
302290

303291
try:
304292
message = await user.send(content, **kwargs)
305293
except (discord.Forbidden, discord.HTTPException):
306294
logger.debug(f"Failed to DM user {user_id}")
307-
return None
308295
except Exception as e:
309296
self.capture_exception(e)
310-
return None
311-
312-
return message
297+
else:
298+
return message
313299

314300
def get_error_choice(
315301
self, error_message: LocaleStr | str | Exception, locale: discord.Locale

hoyo_buddy/cogs/others.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ async def about_command(self, i: Interaction) -> None:
9292
)
9393

9494
# developer
95-
owner = await i.client.fetch_user(i.client.owner_id)
95+
owner = i.client.get_user(i.client.owner_id) or await i.client.fetch_user(i.client.owner_id)
9696
if owner is not None:
9797
embed.add_field(
9898
name=LocaleStr(key="about_command.developer"),

0 commit comments

Comments
 (0)