Merge pull request #783 from MaddyUnderStars/feat/multiUploads
Allow multiple attachments per message
This commit is contained in:
commit
f2d692663a
@ -2,12 +2,18 @@
|
|||||||
"MessageCreateSchema": {
|
"MessageCreateSchema": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
"content": {
|
"content": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"nonce": {
|
"nonce": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"channel_id": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"tts": {
|
"tts": {
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
|
@ -50,8 +50,10 @@ export function isTextChannel(type: ChannelType): boolean {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface MessageCreateSchema {
|
export interface MessageCreateSchema {
|
||||||
|
type?: number;
|
||||||
content?: string;
|
content?: string;
|
||||||
nonce?: string;
|
nonce?: string;
|
||||||
|
channel_id?: string;
|
||||||
tts?: boolean;
|
tts?: boolean;
|
||||||
flags?: string;
|
flags?: string;
|
||||||
embeds?: Embed[];
|
embeds?: Embed[];
|
||||||
@ -161,7 +163,7 @@ const messageUpload = multer({
|
|||||||
limits: {
|
limits: {
|
||||||
fileSize: 1024 * 1024 * 100,
|
fileSize: 1024 * 1024 * 100,
|
||||||
fields: 10,
|
fields: 10,
|
||||||
files: 1
|
// files: 1
|
||||||
},
|
},
|
||||||
storage: multer.memoryStorage()
|
storage: multer.memoryStorage()
|
||||||
}); // max upload 50 mb
|
}); // max upload 50 mb
|
||||||
@ -176,7 +178,7 @@ const messageUpload = multer({
|
|||||||
// Send message
|
// Send message
|
||||||
router.post(
|
router.post(
|
||||||
"/",
|
"/",
|
||||||
messageUpload.single("file"),
|
messageUpload.any(),
|
||||||
async (req, res, next) => {
|
async (req, res, next) => {
|
||||||
if (req.body.payload_json) {
|
if (req.body.payload_json) {
|
||||||
req.body = JSON.parse(req.body.payload_json);
|
req.body = JSON.parse(req.body.payload_json);
|
||||||
@ -190,19 +192,22 @@ router.post(
|
|||||||
var body = req.body as MessageCreateSchema;
|
var body = req.body as MessageCreateSchema;
|
||||||
const attachments: Attachment[] = [];
|
const attachments: Attachment[] = [];
|
||||||
|
|
||||||
if (req.file) {
|
|
||||||
try {
|
|
||||||
const file = await uploadFile(`/attachments/${req.params.channel_id}`, req.file);
|
|
||||||
attachments.push({ ...file, proxy_url: file.url });
|
|
||||||
} catch (error) {
|
|
||||||
return res.status(400).json(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const channel = await Channel.findOneOrFail({ where: { id: channel_id }, relations: ["recipients", "recipients.user"] });
|
const channel = await Channel.findOneOrFail({ where: { id: channel_id }, relations: ["recipients", "recipients.user"] });
|
||||||
if (!channel.isWritable()) {
|
if (!channel.isWritable()) {
|
||||||
throw new HTTPError(`Cannot send messages to channel of type ${channel.type}`, 400)
|
throw new HTTPError(`Cannot send messages to channel of type ${channel.type}`, 400)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const files = req.files as Express.Multer.File[] ?? [];
|
||||||
|
for (var currFile of files) {
|
||||||
|
try {
|
||||||
|
const file = await uploadFile(`/attachments/${channel.id}`, currFile);
|
||||||
|
attachments.push({ ...file, proxy_url: file.url });
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
return res.status(400).json(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const embeds = body.embeds || [];
|
const embeds = body.embeds || [];
|
||||||
if (body.embed) embeds.push(body.embed);
|
if (body.embed) embeds.push(body.embed);
|
||||||
let message = await handleMessage({
|
let message = await handleMessage({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user