MessageEvents: Support sendMessage with attachments (#1023)
This commit is contained in:
parent
4dce836ff7
commit
7bc1362cbd
@ -36,10 +36,36 @@ export interface Emoji {
|
||||
export interface MessageObject {
|
||||
content: string,
|
||||
validNonShortcutEmojis: Emoji[];
|
||||
invalidEmojis: any[];
|
||||
tts: boolean;
|
||||
}
|
||||
|
||||
export interface Upload {
|
||||
classification: string;
|
||||
currentSize: number;
|
||||
description: string | null;
|
||||
filename: string;
|
||||
id: string;
|
||||
isImage: boolean;
|
||||
isVideo: boolean;
|
||||
item: {
|
||||
file: File;
|
||||
platform: number;
|
||||
};
|
||||
loaded: number;
|
||||
mimeType: string;
|
||||
preCompressionSize: number;
|
||||
responseUrl: string;
|
||||
sensitive: boolean;
|
||||
showLargeMessageDialog: boolean;
|
||||
spoiler: boolean;
|
||||
status: "NOT_STARTED" | "STARTED" | "UPLOADING" | "ERROR" | "COMPLETED" | "CANCELLED";
|
||||
uniqueId: string;
|
||||
uploadedFilename: string;
|
||||
}
|
||||
export interface MessageExtra {
|
||||
stickerIds?: string[];
|
||||
uploads?: Upload[];
|
||||
}
|
||||
|
||||
export type SendListener = (channelId: string, messageObj: MessageObject, extra: MessageExtra) => Promisable<void | { cancel: boolean; }>;
|
||||
@ -48,7 +74,8 @@ export type EditListener = (channelId: string, messageId: string, messageObj: Me
|
||||
const sendListeners = new Set<SendListener>();
|
||||
const editListeners = new Set<EditListener>();
|
||||
|
||||
export async function _handlePreSend(channelId: string, messageObj: MessageObject, extra: MessageExtra) {
|
||||
export async function _handlePreSend(channelId: string, messageObj: MessageObject, extra: MessageExtra, uploads: Upload[]) {
|
||||
extra.uploads = uploads;
|
||||
for (const listener of sendListeners) {
|
||||
try {
|
||||
const result = await listener(channelId, messageObj, extra);
|
||||
|
@ -22,17 +22,25 @@ import definePlugin from "@utils/types";
|
||||
export default definePlugin({
|
||||
name: "MessageEventsAPI",
|
||||
description: "Api required by anything using message events.",
|
||||
authors: [Devs.Arjix, Devs.hunt],
|
||||
authors: [Devs.Arjix, Devs.hunt, Devs.Ven],
|
||||
patches: [
|
||||
{
|
||||
find: '"MessageActionCreators"',
|
||||
replacement: [{
|
||||
match: /_sendMessage:(function\([^)]+\)){/,
|
||||
replace: "_sendMessage:async $1{if(await Vencord.Api.MessageEvents._handlePreSend(...arguments))return;"
|
||||
}, {
|
||||
match: /\beditMessage:(function\([^)]+\)){/,
|
||||
replacement: {
|
||||
// editMessage: function (...) {
|
||||
match: /\beditMessage:(function\(.+?\))\{/,
|
||||
// editMessage: async function (...) { await handlePreEdit(...); ...
|
||||
replace: "editMessage:async $1{await Vencord.Api.MessageEvents._handlePreEdit(...arguments);"
|
||||
}]
|
||||
}
|
||||
},
|
||||
{
|
||||
find: ".handleSendMessage=",
|
||||
replacement: {
|
||||
// checkIsMessageValid().then((function (isValidData) { ... getSendMessageOptionsForReply(data); ... sendMessage(channel.id, msg, void 0, mergeMessageSendOptions(...))
|
||||
match: /(?<=uploads:(\i),channel:\i\}\)\.then\(\()function\((\i)\)\{(var \i=\i\.valid.+?\.getSendMessageOptionsForReply\(\i\);)(?=.+?\.sendMessage\((\i)\.id,(\i),void 0,(\i\(.+?)\):)/,
|
||||
// checkIsMessageValid().then((async function (isValidData) { ...; if (await handlePresend(channel.id, msg, extra)) return; ...
|
||||
replace: "async function($2){$3 if (await Vencord.Api.MessageEvents._handlePreSend($4.id,$5,$6,$1)) return {shouldClear:true,shouldRefocus:true};"
|
||||
}
|
||||
},
|
||||
{
|
||||
find: '("interactionUsernameProfile',
|
||||
|
Loading…
x
Reference in New Issue
Block a user