3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-19 15:30:00 +00:00
zeppelin/backend/src/plugins/Utility/commands/SourceCmd.ts
2020-10-22 01:22:28 +03:00

49 lines
1.7 KiB
TypeScript

import { utilityCmd } from "../types";
import { commandTypeHelpers as ct } from "../../../commandTypes";
import { errorMessage } from "../../../utils";
import { getBaseUrl, sendErrorMessage } from "../../../pluginUtils";
import moment from "moment-timezone";
import { Constants, TextChannel } from "eris";
import { canReadChannel } from "../../../utils/canReadChannel";
export const SourceCmd = utilityCmd({
trigger: "source",
description: "View the message source of the specified message id",
usage: "!source 534722219696455701",
permission: "can_source",
signature: {
message: ct.messageTarget(),
},
async run({ message: cmdMessage, args, pluginData }) {
if (!canReadChannel(args.message.channel, cmdMessage.member)) {
sendErrorMessage(pluginData, cmdMessage.channel, "Unknown message");
return;
}
const message = await pluginData.client
.getMessage(args.message.channel.id, args.message.messageId)
.catch(() => null);
if (!message) {
sendErrorMessage(pluginData, cmdMessage.channel, "Unknown message");
return;
}
const textSource = message.content || "<no text content>";
const fullSource = JSON.stringify({
id: message.id,
content: message.content,
attachments: message.attachments,
embeds: message.embeds,
stickers: message.stickers,
});
const source = `${textSource}\n\nSource:\n\n${fullSource}`;
const archiveId = await pluginData.state.archives.create(source, moment.utc().add(1, "hour"));
const baseUrl = getBaseUrl(pluginData);
const url = pluginData.state.archives.getUrl(baseUrl, archiveId);
cmdMessage.channel.createMessage(`Message source: ${url}`);
},
});