Skip to content

Commit 5f3d7d2

Browse files
committed
Defer interaction in /gh search files
1 parent 7726e5c commit 5f3d7d2

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

bot/src/ghutils/cogs/app_commands/github.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,11 @@ async def files(
362362
limit: Range[int, 1, 25] = 5,
363363
visibility: MessageVisibility = "private",
364364
):
365+
await interaction.response.defer(
366+
ephemeral=visibility == "private",
367+
thinking=True,
368+
)
369+
365370
async with self.bot.github_app(interaction) as (github, state):
366371
if state != LoginState.LOGGED_IN:
367372
raise NotLoggedInError()
@@ -379,7 +384,7 @@ async def files(
379384
)
380385
)
381386
except RequestFailed as e:
382-
if e.response.status_code == 404: # pyright: ignore[reportUnknownMemberType]
387+
if e.response.status_code in [404, 422]: # pyright: ignore[reportUnknownMemberType]
383388
raise InvalidInputError(
384389
value=ref,
385390
message=f"Ref does not exist in `{repo.full_name}`.",

bot/src/ghutils/core/tree.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@ async def on_error(self, interaction: Interaction, error: AppCommandError):
1818
if isinstance(error, SilentError):
1919
return
2020

21-
if interaction.response.is_done():
22-
await super().on_error(interaction, error)
23-
return
24-
2521
embed = Embed(
2622
color=Color.red(),
2723
timestamp=datetime.now(UTC),
@@ -69,4 +65,7 @@ async def on_error(self, interaction: Interaction, error: AppCommandError):
6965
text=error.__class__.__name__,
7066
)
7167

72-
await interaction.response.send_message(embed=embed, ephemeral=True)
68+
if interaction.response.is_done():
69+
await interaction.followup.send(embed=embed, ephemeral=True)
70+
else:
71+
await interaction.response.send_message(embed=embed, ephemeral=True)

bot/src/ghutils/utils/discord/visibility.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,15 @@ async def respond_with_visibility(
2323
content: Any | None = None,
2424
embed: Embed = MISSING,
2525
):
26-
await MessageContents(
26+
data = MessageContents(
2727
command=interaction.command,
2828
content=content,
2929
embed=embed,
30-
).send_response(interaction, visibility)
30+
)
31+
if interaction.response.is_done():
32+
await data.send_followup(interaction, visibility)
33+
else:
34+
await data.send_response(interaction, visibility)
3135

3236

3337
@dataclass(kw_only=True)
@@ -49,6 +53,19 @@ async def send_response(
4953
view=self._get_view(interaction, visibility, show_user),
5054
)
5155

56+
async def send_followup(
57+
self,
58+
interaction: Interaction,
59+
visibility: MessageVisibility,
60+
show_user: bool = False,
61+
):
62+
await interaction.followup.send(
63+
content=self.content or MISSING,
64+
embed=self.embed or MISSING,
65+
ephemeral=visibility == "private",
66+
view=self._get_view(interaction, visibility, show_user),
67+
)
68+
5269
def _get_view(
5370
self,
5471
interaction: Interaction,

0 commit comments

Comments
 (0)