update webview to support dms
This commit is contained in:
parent
96cffd9c4c
commit
44a1200084
|
@ -80,7 +80,7 @@ const start = () => {
|
||||||
const query = new Map<string, string>();
|
const query = new Map<string, string>();
|
||||||
if (tempQ !== undefined) {
|
if (tempQ !== undefined) {
|
||||||
tempQ.split('&').forEach((e: string) => {
|
tempQ.split('&').forEach((e: string) => {
|
||||||
log(LT.LOG, `Parsing request query ${request} ${e}`);
|
log(LT.LOG, `Parsing request query ${JSON.stringify(request)} ${e}`);
|
||||||
const [option, params] = e.split('=');
|
const [option, params] = e.split('=');
|
||||||
query.set(option.toLowerCase(), params);
|
query.set(option.toLowerCase(), params);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { DiscordenoMember, getChannel, getMember, getMessage, getRoles } from '@discordeno';
|
import { DiscordenoMember, getChannel, getMember, getMessage, getRoles, getUser, User } from '@discordeno';
|
||||||
import { log, LogTypes as LT } from '@Log4Deno';
|
import { log, LogTypes as LT } from '@Log4Deno';
|
||||||
import showdown from '@showdown';
|
import showdown from '@showdown';
|
||||||
import { STATUS_CODE, STATUS_TEXT } from '@std/http/status';
|
import { STATUS_CODE, STATUS_TEXT } from '@std/http/status';
|
||||||
|
@ -13,6 +13,10 @@ import utils from 'utils/utils.ts';
|
||||||
interface ModernMemberHOTFIX extends DiscordenoMember {
|
interface ModernMemberHOTFIX extends DiscordenoMember {
|
||||||
globalName: string;
|
globalName: string;
|
||||||
}
|
}
|
||||||
|
interface ModernUserHOTFIX extends User {
|
||||||
|
globalName: string;
|
||||||
|
name: (_gId: bigint) => string;
|
||||||
|
}
|
||||||
|
|
||||||
const converter = new showdown.Converter({
|
const converter = new showdown.Converter({
|
||||||
emoji: true,
|
emoji: true,
|
||||||
|
@ -178,14 +182,16 @@ export const generateWebView = async (query: Map<string, string>): Promise<Respo
|
||||||
let fullPage = generatePage(htmlArr);
|
let fullPage = generatePage(htmlArr);
|
||||||
|
|
||||||
if (fullPage.indexOf('<@&')) {
|
if (fullPage.indexOf('<@&')) {
|
||||||
const guildRoles = (await getRoles(attachmentMessage.guildId).catch((e) => log(LT.LOG, `Failed to get Guild Roles: ${attachmentMessage.guildId}`, e))) ?? [];
|
const guildRoles = attachmentMessage.guildId ? (await getRoles(attachmentMessage.guildId).catch((e) => log(LT.LOG, `Failed to get Guild Roles: ${attachmentMessage.guildId}`, e))) ?? [] : [];
|
||||||
const rolesToReplace = fullPage.matchAll(/<@&(\d+)>/g);
|
if (guildRoles.length) {
|
||||||
for (const roleToReplace of rolesToReplace) {
|
const rolesToReplace = fullPage.matchAll(/<@&(\d+)>/g);
|
||||||
const role = guildRoles.filter((r) => r.id === BigInt(roleToReplace[1] ?? '-1')).shift() ?? { name: 'unknown-role', color: 4211819 };
|
for (const roleToReplace of rolesToReplace) {
|
||||||
fullPage = fullPage.replaceAll(
|
const role = guildRoles.filter((r) => r.id === BigInt(roleToReplace[1] ?? '-1')).shift() ?? { name: 'unknown-role', color: 4211819 };
|
||||||
roleToReplace[0],
|
fullPage = fullPage.replaceAll(
|
||||||
makeMention('@', role.name, colorShade(`#${role.color.toString(16)}`, -100), colorShade(`#${role.color.toString(16)}`, 50)),
|
roleToReplace[0],
|
||||||
);
|
makeMention('@', role.name, colorShade(`#${role.color.toString(16)}`, -100), colorShade(`#${role.color.toString(16)}`, 50)),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,13 +208,16 @@ export const generateWebView = async (query: Map<string, string>): Promise<Respo
|
||||||
if (fullPage.indexOf('<@')) {
|
if (fullPage.indexOf('<@')) {
|
||||||
const usersToReplace = fullPage.matchAll(/<@(\d+)>/g);
|
const usersToReplace = fullPage.matchAll(/<@(\d+)>/g);
|
||||||
for (const userToReplace of usersToReplace) {
|
for (const userToReplace of usersToReplace) {
|
||||||
const rawUser = await getMember(attachmentMessage.guildId, BigInt(userToReplace[1] ?? '-1')).catch((e) => log(LT.LOG, `Failed to get Channel: ${userToReplace[1]}`, e));
|
const rawUser = attachmentMessage.guildId
|
||||||
const user = rawUser ? (rawUser as ModernMemberHOTFIX) : {
|
? await getMember(attachmentMessage.guildId, BigInt(userToReplace[1] ?? '-1')).catch((e) => log(LT.LOG, `Failed to get Channel: ${userToReplace[1]}`, e))
|
||||||
|
: await getUser(BigInt(userToReplace[1] ?? '-1')).catch((e) => log(LT.LOG, `Failed to get Channel: ${userToReplace[1]}`, e));
|
||||||
|
const oldUserShape = rawUser ? rawUser : {
|
||||||
name: (_gId: bigint) => 'unknown-user',
|
name: (_gId: bigint) => 'unknown-user',
|
||||||
username: 'unknown-user',
|
username: 'unknown-user',
|
||||||
globalName: 'unknown-user',
|
globalName: 'unknown-user',
|
||||||
};
|
};
|
||||||
const nickName = user.name(attachmentMessage.guildId);
|
const user = attachmentMessage.guildId ? (oldUserShape as ModernMemberHOTFIX) : (oldUserShape as ModernUserHOTFIX);
|
||||||
|
const nickName = attachmentMessage.guildId ? user.name(attachmentMessage.guildId) : null;
|
||||||
const name = nickName === user.username ? user.globalName : nickName ?? user.globalName;
|
const name = nickName === user.username ? user.globalName : nickName ?? user.globalName;
|
||||||
fullPage = fullPage.replaceAll(userToReplace[0], makeMention('@', name ?? user.username, '#40446b'));
|
fullPage = fullPage.replaceAll(userToReplace[0], makeMention('@', name ?? user.username, '#40446b'));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue