Allow empty message

This commit is contained in:
xhyrom 2022-04-14 11:48:02 +02:00
parent 6ec3bb47b3
commit 1f23b2536e
3 changed files with 19 additions and 18 deletions

View file

@ -1,5 +1,6 @@
import { APIApplicationCommandInteraction, APIInteractionResponse, APIMessageComponentInteraction, APIPingInteraction, InteractionResponseType, InteractionType, MessageFlags, RouteBases, Routes } from 'discord-api-types/v9'; import { APIApplicationCommandInteraction, APIInteractionResponse, APIMessageComponentInteraction, APIPingInteraction, InteractionResponseType, InteractionType, MessageFlags, RouteBases, Routes } from 'discord-api-types/v9';
import { isJSON } from './utils/isJson'; import { isJSON } from './utils/isJson';
import { resolvePartialEmoji } from './utils/resolveEmoji';
import { verify } from './utils/verify'; import { verify } from './utils/verify';
const respond = (response: APIInteractionResponse) => new Response(JSON.stringify(response), {headers: {'content-type': 'application/json'}}); const respond = (response: APIInteractionResponse) => new Response(JSON.stringify(response), {headers: {'content-type': 'application/json'}});
@ -42,11 +43,11 @@ export const handleRequest = async(request: Request): Promise<Response> => {
if (!json) return badFormatting(); if (!json) return badFormatting();
const channelId = json.channel; const channelId = json.channel;
const message = json.message?.toString(); let message = json.message?.toString();
let roles = json.roles; let roles = json.roles;
if (!channelId) return badFormatting(); if (!channelId) return badFormatting();
if (!message) return badFormatting(); if (!message) message = '';
if (!roles || Object.values(json.roles).filter((role: any) => role.id && role.label).length === 0 || roles.length === 0 || roles.length > 25) return badFormatting(roles.length > 25); if (!roles || Object.values(json.roles).filter((role: any) => role.id && role.label).length === 0 || roles.length === 0 || roles.length > 25) return badFormatting(roles.length > 25);
roles = roles.map((r: any) => { roles = roles.map((r: any) => {
@ -88,13 +89,13 @@ export const handleRequest = async(request: Request): Promise<Response> => {
content: message, content: message,
components: finalComponents components: finalComponents
}) })
}).catch(() => {}); }).catch(e => e);
return respond({ return respond({
type: InteractionResponseType.ChannelMessageWithSource, type: InteractionResponseType.ChannelMessageWithSource,
data: { data: {
flags: 64, flags: 64,
content: fetched?.ok ? 'Done!' : 'Error, invalid channelId or duplication button ids.' content: fetched?.ok ? 'Done!' : 'Error, bad channel id/missing permissions.'
} }
}); });
} else if (interaction.type === InteractionType.MessageComponent) { } else if (interaction.type === InteractionType.MessageComponent) {

View file

@ -2,18 +2,18 @@
* https://github.com/discordjs/discord.js/blob/3c0bbac82fa9988af4a62ff00c66d149fbe6b921/packages/discord.js/src/util/Util.js#L292-L311 * https://github.com/discordjs/discord.js/blob/3c0bbac82fa9988af4a62ff00c66d149fbe6b921/packages/discord.js/src/util/Util.js#L292-L311
*/ */
const resolvePartialEmoji = (emoji: string) => { export const resolvePartialEmoji = (emoji: string) => {
if (!emoji) return null; if (!emoji) return null;
if (typeof emoji === 'string') return /^\d{17,19}$/.test(emoji) ? { id: emoji } : parseEmoji(emoji); if (typeof emoji === 'string') return /^\d{17,19}$/.test(emoji) ? { id: emoji } : parseEmoji(emoji);
const { id, name, animated } = emoji; const { id, name, animated } = emoji;
if (!id && !name) return null; if (!id && !name) return null;
return { id, name, animated: Boolean(animated) }; return { id, name, animated: Boolean(animated) };
} };
const parseEmoji = (text: string) => { export const parseEmoji = (text: string) => {
if (text.includes('%')) text = decodeURIComponent(text); if (text.includes('%')) text = decodeURIComponent(text);
if (!text.includes(':')) return { animated: false, name: text, id: null }; if (!text.includes(':')) return { animated: false, name: text, id: null };
const match = text.match(/<?(?:(a):)?(\w{2,32}):(\d{17,19})?>?/); const match = text.match(/<?(?:(a):)?(\w{2,32}):(\d{17,19})?>?/);
return match && { animated: Boolean(match[1]), name: match[2], id: match[3] ?? null }; return match && { animated: Boolean(match[1]), name: match[2], id: match[3] ?? null };
} };

View file

@ -18,7 +18,7 @@ export default function Home() {
<h1>Generate</h1> <h1>Generate</h1>
<form> <form>
<input placeholder="Your Message" name="message" id="message"/><br /> <input placeholder="Your Message" name="message" id="message"/><br />
<input placeholder="Channel Id" name="channel" id="channel"/> <input placeholder="Channel Id*" name="channel" id="channel" required/>
</form> </form>
<button id="addRole">Add Role</button> <button id="addRole">Add Role</button>
<button id="buttonCopy">Copy</button> <button id="buttonCopy">Copy</button>