subdirectories in utils function, split the attachement handler into a function
All checks were successful
PR Check / lint-and-format (pull_request) Successful in 19s
All checks were successful
PR Check / lint-and-format (pull_request) Successful in 19s
This commit is contained in:
parent
ddcf488be5
commit
3a00874ce0
13 changed files with 64 additions and 55 deletions
|
@ -8,7 +8,7 @@ import {
|
|||
import { v4 as uuidv4 } from "uuid";
|
||||
import { getLocale } from "../../utils/locales";
|
||||
import { getFilename } from "../../utils/misc";
|
||||
import { embedListReminders } from "../../utils/reminder";
|
||||
import { embedListReminders } from "../../utils/commands/reminder";
|
||||
import { collect } from "../loader";
|
||||
|
||||
export default {
|
||||
|
|
|
@ -8,7 +8,7 @@ import {
|
|||
import { v4 as uuidv4 } from "uuid";
|
||||
import { getLocale } from "../../utils/locales";
|
||||
import { getFilename } from "../../utils/misc";
|
||||
import { embedListReminders } from "../../utils/reminder";
|
||||
import { embedListReminders } from "../../utils/commands/reminder";
|
||||
import { collect } from "../loader";
|
||||
|
||||
export default {
|
||||
|
|
|
@ -10,8 +10,8 @@ import {
|
|||
import { v4 as uuidv4 } from "uuid";
|
||||
import { getLocale } from "../../utils/locales";
|
||||
import { getFilename } from "../../utils/misc";
|
||||
import { embedListQueue } from "../../utils/music";
|
||||
import { collect } from "../loader";
|
||||
import { embedListQueue } from "../../utils/commands/music";
|
||||
|
||||
export default {
|
||||
data: {
|
||||
|
|
|
@ -10,8 +10,8 @@ import {
|
|||
import { v4 as uuidv4 } from "uuid";
|
||||
import { getLocale } from "../../utils/locales";
|
||||
import { getFilename } from "../../utils/misc";
|
||||
import { embedListQueue } from "../../utils/music";
|
||||
import { collect } from "../loader";
|
||||
import { embedListQueue } from "../../utils/commands/music";
|
||||
|
||||
export default {
|
||||
data: {
|
||||
|
|
|
@ -19,7 +19,7 @@ import {
|
|||
embedListReminders,
|
||||
getReminderInfo,
|
||||
newReminder,
|
||||
} from "../../utils/reminder";
|
||||
} from "../../utils/commands/reminder";
|
||||
|
||||
export default {
|
||||
scope: () => [],
|
||||
|
|
|
@ -12,7 +12,7 @@ import { v4 as uuidv4 } from "uuid";
|
|||
import { collect } from "../../buttons/loader";
|
||||
import { getLocale, getLocalizations } from "../../utils/locales";
|
||||
import { getFilename } from "../../utils/misc";
|
||||
import { embedListQueue } from "../../utils/music";
|
||||
import { embedListQueue } from "../../utils/commands/music";
|
||||
|
||||
export default {
|
||||
scope: () => [],
|
||||
|
|
|
@ -8,7 +8,7 @@ import {
|
|||
sendReminder,
|
||||
setTimeoutReminder,
|
||||
updateReminder,
|
||||
} from "../../utils/reminder";
|
||||
} from "../../utils/commands/reminder";
|
||||
|
||||
export const once = true;
|
||||
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
import { APIEmbedField, Client, EmbedBuilder, Message, TextBasedChannel } from "discord.js";
|
||||
import { Client, EmbedBuilder, Message, TextBasedChannel } from "discord.js";
|
||||
import { getLocale } from "../../utils/locales";
|
||||
import { isImage, userWithNickname } from "../../utils/misc";
|
||||
import { userWithNickname } from "../../utils/misc";
|
||||
import { showDate } from "../../utils/time";
|
||||
import { RegexC, RegExpFlags } from "../../utils/regex";
|
||||
import { handleAttachements } from "../../utils/events/citation";
|
||||
|
||||
/** https://discord.js.org/#/docs/discord.js/main/class/Client?scrollTo=e-messageCreate */
|
||||
export default async (message: Message, client: Client) => {
|
||||
|
@ -109,44 +110,7 @@ export default async (message: Message, client: Client) => {
|
|||
|
||||
// Handle attachments
|
||||
if (quoted_post.attachments.size !== 0) {
|
||||
if (quoted_post.attachments.size === 1 && isImage(quoted_post.attachments.first()!.name)) {
|
||||
// Only contains one image
|
||||
embed.setImage(quoted_post.attachments.first()!.url);
|
||||
} else {
|
||||
// Contains more than one image and/or other files
|
||||
|
||||
// We are currently losing a link to a file if the link is too long,
|
||||
// but we can't do much about it
|
||||
const maxFieldValueLength = 1024;
|
||||
const files = quoted_post.attachments
|
||||
.map((file) => `[${file.name}](${file.url})`)
|
||||
.filter((link) => link.length <= maxFieldValueLength);
|
||||
|
||||
let currentField = "";
|
||||
const fields: APIEmbedField[] = [];
|
||||
let multiple = 0;
|
||||
files.forEach((file, idx) => {
|
||||
const fieldValue = currentField.length > 0 ? `${currentField}, ${file}` : file;
|
||||
|
||||
if (fieldValue.length > maxFieldValueLength || idx === files.length - 1) {
|
||||
multiple = multiple === 0 && idx !== files.length - 1 ? 1 : multiple + 1;
|
||||
fields.push({
|
||||
name:
|
||||
loc.get(
|
||||
quoted_post.attachments.size > 1 && idx !== files.length - 1
|
||||
? "e_attachements"
|
||||
: "e_attachement",
|
||||
) + (multiple ? ` (${multiple})` : ""),
|
||||
value: currentField,
|
||||
});
|
||||
currentField = file;
|
||||
} else {
|
||||
currentField = fieldValue;
|
||||
}
|
||||
});
|
||||
|
||||
embed.addFields(fields);
|
||||
}
|
||||
handleAttachements(loc, embed, quoted_post.attachments);
|
||||
}
|
||||
|
||||
// Description as post content
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { Client, ModalSubmitInteraction } from "discord.js";
|
||||
import { getFilename } from "../../utils/misc";
|
||||
import { newReminder } from "../../utils/reminder";
|
||||
import { newReminder } from "../../utils/commands/reminder";
|
||||
|
||||
export default {
|
||||
data: {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { OptionReminder, splitTime } from "../../utils/reminder";
|
||||
import { OptionReminder, splitTime } from "../../../utils/commands/reminder";
|
||||
|
||||
describe("Time splitter", () => {
|
||||
{
|
|
@ -1,8 +1,8 @@
|
|||
import { EmbedBuilder } from "@discordjs/builders";
|
||||
import { GuildQueue, QueueRepeatMode } from "discord-player";
|
||||
import { Client } from "discord.js";
|
||||
import { getLocale } from "./locales";
|
||||
import { blank } from "./misc";
|
||||
import { getLocale } from "../locales";
|
||||
import { blank } from "../misc";
|
||||
|
||||
export const embedListQueue = (
|
||||
client: Client,
|
|
@ -1,8 +1,8 @@
|
|||
import { Client, Colors, EmbedBuilder, User } from "discord.js";
|
||||
import { getLocale } from "./locales";
|
||||
import { blank, cleanCodeBlock } from "./misc";
|
||||
import { showDate, strToSeconds, timeDeltaToString } from "./time";
|
||||
import { RegexC, RegExpFlags } from "./regex";
|
||||
import { getLocale } from "../locales";
|
||||
import { blank, cleanCodeBlock } from "../misc";
|
||||
import { showDate, strToSeconds, timeDeltaToString } from "../time";
|
||||
import { RegexC, RegExpFlags } from "../regex";
|
||||
|
||||
/**
|
||||
* Option possible for reminders
|
45
src/utils/events/citation.ts
Normal file
45
src/utils/events/citation.ts
Normal file
|
@ -0,0 +1,45 @@
|
|||
import { APIEmbedField, Attachment, Collection, EmbedBuilder } from "discord.js";
|
||||
import { isImage } from "../misc";
|
||||
|
||||
export const handleAttachements = (
|
||||
loc: Map<string, string>,
|
||||
embed: EmbedBuilder,
|
||||
attachments: Collection<string, Attachment>,
|
||||
) => {
|
||||
if (attachments.size === 1 && isImage(attachments.first()!.name)) {
|
||||
// Only contains one image
|
||||
embed.setImage(attachments.first()!.url);
|
||||
} else {
|
||||
// Contains more than one image and/or other files
|
||||
|
||||
// We are currently losing a link to a file if the link is too long,
|
||||
// but we can't do much about it
|
||||
const maxFieldValueLength = 1024;
|
||||
const files = attachments
|
||||
.map((file) => `[${file.name}](${file.url})`)
|
||||
.filter((link) => link.length <= maxFieldValueLength);
|
||||
|
||||
let currentField = "";
|
||||
const fields: APIEmbedField[] = [];
|
||||
let multiple = 0;
|
||||
files.forEach((file, idx) => {
|
||||
const fieldValue = currentField.length > 0 ? `${currentField}, ${file}` : file;
|
||||
|
||||
if (fieldValue.length > maxFieldValueLength || idx === files.length - 1) {
|
||||
multiple = multiple === 0 && idx !== files.length - 1 ? 1 : multiple + 1;
|
||||
fields.push({
|
||||
name:
|
||||
loc.get(
|
||||
attachments.size > 1 && idx !== files.length - 1 ? "e_attachements" : "e_attachement",
|
||||
) + (multiple ? ` (${multiple})` : ""),
|
||||
value: currentField,
|
||||
});
|
||||
currentField = file;
|
||||
} else {
|
||||
currentField = fieldValue;
|
||||
}
|
||||
});
|
||||
|
||||
embed.addFields(fields);
|
||||
}
|
||||
};
|
Loading…
Reference in a new issue