





















@@ -89,14 +89,13 @@ export async function handleDiscordCommandArgInteraction(params: {
8989dispatchCommandInteraction: DispatchDiscordCommandInteraction;
9090}) {
9191const { interaction, data, ctx } = params;
92-const parsed = parseDiscordCommandArgData(data);
93-if (!parsed) {
92+const clearWithMessage = async (content: string) =>
9493await params.safeInteractionCall("command arg update", () =>
95-interaction.update({
96-content: "Sorry, that selection is no longer available.",
97-components: [],
98-}),
94+interaction.update({ content, components: [] }),
9995);
96+const parsed = parseDiscordCommandArgData(data);
97+if (!parsed) {
98+await clearWithMessage("Sorry, that selection is no longer available.");
10099return;
101100}
102101if (interaction.user?.id && interaction.user.id !== parsed.userId) {
@@ -107,20 +106,10 @@ export async function handleDiscordCommandArgInteraction(params: {
107106findCommandByNativeName(parsed.command, "discord") ??
108107listChatCommands().find((entry) => entry.key === parsed.command);
109108if (!commandDefinition) {
110-await params.safeInteractionCall("command arg update", () =>
111-interaction.update({
112-content: "Sorry, that command is no longer available.",
113-components: [],
114-}),
115-);
109+await clearWithMessage("Sorry, that command is no longer available.");
116110return;
117111}
118-const argUpdateResult = await params.safeInteractionCall("command arg update", () =>
119-interaction.update({
120-content: `✅ Selected ${parsed.value}.`,
121-components: [],
122-}),
123-);
112+const argUpdateResult = await clearWithMessage(`✅ Selected ${parsed.value}.`);
124113if (argUpdateResult === null) {
125114return;
126115}
@@ -148,37 +137,42 @@ export async function handleDiscordCommandArgInteraction(params: {
148137});
149138}
150139140+type DiscordCommandArgButtonParams = {
141+ctx: DiscordCommandArgContext;
142+safeInteractionCall: SafeDiscordInteractionCall;
143+dispatchCommandInteraction: DispatchDiscordCommandInteraction;
144+};
145+146+async function runDiscordCommandArgButton(
147+params: DiscordCommandArgButtonParams & {
148+interaction: ButtonInteraction;
149+data: ComponentData;
150+},
151+) {
152+await handleDiscordCommandArgInteraction(params);
153+}
154+151155class DiscordCommandArgButton extends Button {
152156label: string;
153157customId: string;
154158style = ButtonStyle.Secondary;
155-private ctx: DiscordCommandArgContext;
156-private safeInteractionCall: SafeDiscordInteractionCall;
157-private dispatchCommandInteraction: DispatchDiscordCommandInteraction;
158159159-constructor(params: {
160-label: string;
161-customId: string;
162-ctx: DiscordCommandArgContext;
163-safeInteractionCall: SafeDiscordInteractionCall;
164-dispatchCommandInteraction: DispatchDiscordCommandInteraction;
165-}) {
160+constructor(
161+params: {
162+label: string;
163+customId: string;
164+} & DiscordCommandArgButtonParams,
165+) {
166166super();
167167this.label = params.label;
168168this.customId = params.customId;
169-this.ctx = params.ctx;
170-this.safeInteractionCall = params.safeInteractionCall;
171-this.dispatchCommandInteraction = params.dispatchCommandInteraction;
169+this.params = params;
172170}
173171172+private params: DiscordCommandArgButtonParams;
173+174174async run(interaction: ButtonInteraction, data: ComponentData) {
175-await handleDiscordCommandArgInteraction({
176- interaction,
177- data,
178-ctx: this.ctx,
179-safeInteractionCall: this.safeInteractionCall,
180-dispatchCommandInteraction: this.dispatchCommandInteraction,
181-});
175+await runDiscordCommandArgButton({ ...this.params, interaction, data });
182176}
183177}
184178@@ -222,36 +216,18 @@ export function buildDiscordCommandArgMenu(params: {
222216class DiscordCommandArgFallbackButton extends Button {
223217label = "cmdarg";
224218customId = "cmdarg:seed=1";
225-private ctx: DiscordCommandArgContext;
226-private safeInteractionCall: SafeDiscordInteractionCall;
227-private dispatchCommandInteraction: DispatchDiscordCommandInteraction;
228219229-constructor(params: {
230-ctx: DiscordCommandArgContext;
231-safeInteractionCall: SafeDiscordInteractionCall;
232-dispatchCommandInteraction: DispatchDiscordCommandInteraction;
233-}) {
220+constructor(private readonly params: DiscordCommandArgButtonParams) {
234221super();
235-this.ctx = params.ctx;
236-this.safeInteractionCall = params.safeInteractionCall;
237-this.dispatchCommandInteraction = params.dispatchCommandInteraction;
238222}
239223240224async run(interaction: ButtonInteraction, data: ComponentData) {
241-await handleDiscordCommandArgInteraction({
242- interaction,
243- data,
244-ctx: this.ctx,
245-safeInteractionCall: this.safeInteractionCall,
246-dispatchCommandInteraction: this.dispatchCommandInteraction,
247-});
225+await runDiscordCommandArgButton({ ...this.params, interaction, data });
248226}
249227}
250228251-export function createDiscordCommandArgFallbackButton(params: {
252-ctx: DiscordCommandArgContext;
253-safeInteractionCall: SafeDiscordInteractionCall;
254-dispatchCommandInteraction: DispatchDiscordCommandInteraction;
255-}): Button {
229+export function createDiscordCommandArgFallbackButton(
230+params: DiscordCommandArgButtonParams,
231+): Button {
256232return new DiscordCommandArgFallbackButton(params);
257233}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。