fix(fediverse): move mentions array to string. allow events for error handling.

This commit is contained in:
vulet 2021-02-26 13:54:30 +08:00
parent dddb8ad014
commit 50e9f808da
2 changed files with 5 additions and 5 deletions

View file

@ -41,13 +41,13 @@ const mediaUpload = async ({ domain }, { data, filename, mimetype }) => {
return upload.data.id; return upload.data.id;
}; };
const run = async (roomId, content, replyId, mediaURL, subject) => { const run = async (roomId, event, content, replyId, mediaURL, subject) => {
let mediaId = null; let mediaId = null;
if (mediaURL) { if (mediaURL) {
const media = await mediaDownload(mediaURL, config.fediverse.mimetypes); const media = await mediaDownload(mediaURL, config.fediverse.mimetypes);
mediaId = await mediaUpload(config.fediverse, media); mediaId = await mediaUpload(config.fediverse, media);
} }
if (replyId) content = await fediverse.utils.getStatusMentions(replyId).then(m => m.concat(content)); if (replyId) content = await fediverse.utils.getStatusMentions(replyId, event).then(m => m.concat(content).join(' '));
const response = await axios({ const response = await axios({
method: 'POST', method: 'POST',
url: `${config.fediverse.domain}/api/v1/statuses`, url: `${config.fediverse.domain}/api/v1/statuses`,
@ -63,7 +63,7 @@ const run = async (roomId, content, replyId, mediaURL, subject) => {
return fediverse.utils.sendEventWithMeta(roomId, `<a href="${response.data.url}">${response.data.id}</a>`, `redact ${response.data.id}`); return fediverse.utils.sendEventWithMeta(roomId, `<a href="${response.data.url}">${response.data.id}</a>`, `redact ${response.data.id}`);
}; };
exports.runQuery = async (roomId, userInput, { isReply, hasMedia, hasSubject }) => { exports.runQuery = async (roomId, event, userInput, { isReply, hasMedia, hasSubject }) => {
try { try {
const chunks = userInput.trim().split(' '); const chunks = userInput.trim().split(' ');
if (!chunks.length || chunks.length < !!isReply + !!hasMedia) throw ''; if (!chunks.length || chunks.length < !!isReply + !!hasMedia) throw '';
@ -84,7 +84,7 @@ exports.runQuery = async (roomId, userInput, { isReply, hasMedia, hasSubject })
if (!/^\/_matrix\/media\/r0\/download\/[^/]+\/[^/]+\/?$/.test(url.pathname)) throw ''; if (!/^\/_matrix\/media\/r0\/download\/[^/]+\/[^/]+\/?$/.test(url.pathname)) throw '';
mediaURL = url.toString(); mediaURL = url.toString();
} }
return await run(roomId, chunks.join(' '), replyId, mediaURL, subject); return await run(roomId, event, chunks.join(' '), replyId, mediaURL, subject);
} catch (e) { } catch (e) {
return matrixClient.sendHtmlNotice(roomId, 'Sad!', '<strong>Sad!</strong>').catch(() => {}); return matrixClient.sendHtmlNotice(roomId, 'Sad!', '<strong>Sad!</strong>').catch(() => {});
} }

View file

@ -39,7 +39,7 @@ const eventHandler = (args, roomId, command, event) => {
break; break;
case 'post': case 'reply': case 'media': case 'mediareply': case 'post': case 'reply': case 'media': case 'mediareply':
case 'random': case 'randomreply': case 'randommedia': case 'randommediareply': case 'random': case 'randomreply': case 'randommedia': case 'randommediareply':
args.push(roomId, userInput, { args.push(roomId, event, userInput, {
isReply: !!~command.indexOf('reply'), isReply: !!~command.indexOf('reply'),
hasMedia: !!~command.indexOf('media'), hasMedia: !!~command.indexOf('media'),
hasSubject: !!~command.indexOf('random'), hasSubject: !!~command.indexOf('random'),