mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-07-06 02:27:19 +00:00
Merge 242015c074
into 3e18e6c124
This commit is contained in:
commit
450ac8918e
2 changed files with 38 additions and 13 deletions
|
@ -1,5 +1,7 @@
|
|||
import {
|
||||
ActionRowBuilder,
|
||||
APIEmbed,
|
||||
ButtonBuilder,
|
||||
ChannelType,
|
||||
ChatInputCommandInteraction,
|
||||
Client,
|
||||
|
@ -18,6 +20,7 @@ import {
|
|||
InviteType,
|
||||
LimitedCollection,
|
||||
Message,
|
||||
MessageActionRowComponentBuilder,
|
||||
MessageCreateOptions,
|
||||
MessageMentionOptions,
|
||||
PartialChannelData,
|
||||
|
@ -1321,6 +1324,20 @@ export async function confirm(
|
|||
return waitForButtonConfirm(context, content, { restrictToId: userId });
|
||||
}
|
||||
|
||||
export function createDisabledButtonRow(
|
||||
row: ActionRowBuilder<MessageActionRowComponentBuilder>
|
||||
): ActionRowBuilder<MessageActionRowComponentBuilder> {
|
||||
const newRow = new ActionRowBuilder<MessageActionRowComponentBuilder>();
|
||||
for (const component of row.components) {
|
||||
if (component instanceof ButtonBuilder) {
|
||||
newRow.addComponents(
|
||||
ButtonBuilder.from(component).setDisabled(true)
|
||||
);
|
||||
}
|
||||
}
|
||||
return newRow;
|
||||
}
|
||||
|
||||
export function messageSummary(msg: SavedMessage) {
|
||||
// Regular text content
|
||||
let result = "```\n" + (msg.data.content ? escapeCodeBlock(msg.data.content) : "<no text content>") + "```";
|
||||
|
|
|
@ -9,7 +9,7 @@ import {
|
|||
import moment from "moment";
|
||||
import { v4 as uuidv4 } from "uuid";
|
||||
import { GenericCommandSource, isContextInteraction, sendContextResponse } from "../pluginUtils.js";
|
||||
import { noop } from "../utils.js";
|
||||
import { noop, createDisabledButtonRow } from "../utils.js";
|
||||
|
||||
export async function waitForButtonConfirm(
|
||||
context: GenericCommandSource,
|
||||
|
@ -24,34 +24,42 @@ export async function waitForButtonConfirm(
|
|||
.setStyle(ButtonStyle.Success)
|
||||
.setLabel(options?.confirmText || "Confirm")
|
||||
.setCustomId(`confirmButton:${idMod}:${uuidv4()}`),
|
||||
|
||||
new ButtonBuilder()
|
||||
.setStyle(ButtonStyle.Danger)
|
||||
.setLabel(options?.cancelText || "Cancel")
|
||||
.setCustomId(`cancelButton:${idMod}:${uuidv4()}`),
|
||||
]);
|
||||
const message = await sendContextResponse(context, { ...toPost, components: [row] }, true);
|
||||
|
||||
const collector = message.createMessageComponentCollector({ time: 10000 });
|
||||
|
||||
collector.on("collect", (interaction: MessageComponentInteraction) => {
|
||||
if (options?.restrictToId && options.restrictToId !== interaction.user.id) {
|
||||
interaction
|
||||
.reply({ content: `You are not permitted to use these buttons.`, ephemeral: true })
|
||||
// tslint:disable-next-line no-console
|
||||
.catch((err) => console.trace(err.message));
|
||||
} else {
|
||||
if (interaction.customId.startsWith(`confirmButton:${idMod}:`)) {
|
||||
if (!contextIsInteraction) message.delete();
|
||||
resolve(true);
|
||||
} else if (interaction.customId.startsWith(`cancelButton:${idMod}:`)) {
|
||||
if (!contextIsInteraction) message.delete();
|
||||
resolve(false);
|
||||
.catch(noop);
|
||||
} else if (interaction.customId.startsWith(`confirmButton:${idMod}:`)) {
|
||||
if (!contextIsInteraction) {
|
||||
message.delete().catch(noop);
|
||||
} else {
|
||||
interaction.update({ components: [createDisabledButtonRow(row)] }).catch(noop);
|
||||
}
|
||||
resolve(true);
|
||||
} else if (interaction.customId.startsWith(`cancelButton:${idMod}:`)) {
|
||||
if (!contextIsInteraction) {
|
||||
message.delete().catch(noop);
|
||||
} else {
|
||||
interaction.update({ components: [createDisabledButtonRow(row)] }).catch(noop);
|
||||
}
|
||||
resolve(false);
|
||||
}
|
||||
});
|
||||
|
||||
collector.on("end", () => {
|
||||
if (!contextIsInteraction && message.deletable) message.delete().catch(noop);
|
||||
if (!contextIsInteraction) {
|
||||
if (message.deletable) message.delete().catch(noop);
|
||||
} else {
|
||||
message.edit({ components: [createDisabledButtonRow(row)] }).catch(noop);
|
||||
}
|
||||
resolve(false);
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue