ShowMeYourName Guild Nicknames
Some checks are pending
Test / Test (push) Waiting to run

This commit is contained in:
thororen1234 2025-05-01 23:55:01 -04:00
parent eb12516344
commit 7d213a638c
No known key found for this signature in database

View file

@ -10,7 +10,7 @@ import { definePluginSettings } from "@api/Settings";
import ErrorBoundary from "@components/ErrorBoundary"; import ErrorBoundary from "@components/ErrorBoundary";
import { Devs } from "@utils/constants"; import { Devs } from "@utils/constants";
import definePlugin, { OptionType } from "@utils/types"; import definePlugin, { OptionType } from "@utils/types";
import { RelationshipStore } from "@webpack/common"; import { GuildMemberStore, RelationshipStore } from "@webpack/common";
import { Message, User } from "discord-types/general"; import { Message, User } from "discord-types/general";
interface UsernameProps { interface UsernameProps {
@ -19,6 +19,7 @@ interface UsernameProps {
withMentionPrefix?: boolean; withMentionPrefix?: boolean;
isRepliedMessage: boolean; isRepliedMessage: boolean;
userOverride?: User; userOverride?: User;
guildId: string;
} }
const settings = definePluginSettings({ const settings = definePluginSettings({
@ -28,6 +29,7 @@ const settings = definePluginSettings({
options: [ options: [
{ label: "Username then nickname", value: "user-nick", default: true }, { label: "Username then nickname", value: "user-nick", default: true },
{ label: "Nickname then username", value: "nick-user" }, { label: "Nickname then username", value: "nick-user" },
{ label: "Nickname only", value: "nick" },
{ label: "Username only", value: "user" }, { label: "Username only", value: "user" },
], ],
}, },
@ -66,9 +68,12 @@ const settings = definePluginSettings({
}, },
}); });
function getUsername(user: any): string { function getUsername(user: any, guildId: string): string {
const friendName = RelationshipStore.getNickname(user.id); const friendName = RelationshipStore.getNickname(user.id);
const guildNick = GuildMemberStore.getNick(guildId, user.id);
if (settings.store.preferFriend && friendName) return friendName; if (settings.store.preferFriend && friendName) return friendName;
if (settings.store.mode === "nick" && guildNick) return guildNick;
if (settings.store.displayNames) return user.globalName || user.username; if (settings.store.displayNames) return user.globalName || user.username;
return user.username; return user.username;
} }
@ -82,16 +87,16 @@ export default definePlugin({
find: '"BaseUsername"', find: '"BaseUsername"',
replacement: { replacement: {
/* TODO: remove \i+\i once change makes it to stable */ /* TODO: remove \i+\i once change makes it to stable */
match: /(?<=onContextMenu:\i,children:)(?:\i\+\i|\i)/, match: /(?<=onContextMenu:\i,children:)(?:\i\+\i|\i)(?=.*?contextGuildId:(\i))/,
replace: "$self.renderUsername(arguments[0])" replace: "$self.renderUsername({ ...arguments[0], guildId: $1 })",
} }
}, },
{ {
find: "._areActivitiesExperimentallyHidden=(", find: "._areActivitiesExperimentallyHidden=(",
predicate: () => settings.store.memberList, predicate: () => settings.store.memberList,
replacement: { replacement: {
match: /(?<=user:(\i),currentUser:\i,nick:)\i/, match: /(?<=user:(\i),currentUser:\i,nick:)\i(?=.*?guildId:(\i))/,
replace: "$self.getUsername($1)" replace: "$self.getUsername($1,$2)"
}, },
}, },
{ {
@ -99,8 +104,8 @@ export default definePlugin({
predicate: () => settings.store.voiceChannelList, predicate: () => settings.store.voiceChannelList,
replacement: [ replacement: [
{ {
match: /(?<=children:\[)null!=\i\?\i:\i\.\i\.getName\((\i)\)/, match: /(?<=children:\[)null!=\i\?\i:\i\.\i\.getName\((\i)\)(?=.*?contextGuildId:(\i))/,
replace: "$self.getUsername($1)" replace: "$self.getUsername($1,$2)"
}, },
] ]
}, },
@ -109,18 +114,18 @@ export default definePlugin({
predicate: () => settings.store.emojiReactions, predicate: () => settings.store.emojiReactions,
replacement: [ replacement: [
{ {
match: /\i\.\i\.getName\(\i,null==.{0,15},(\i)\)/g, match: /\i\.\i\.getName\((\i),null==.{0,15},(\i)\)/g,
replace: "$self.getUsername($1)" replace: "$self.getUsername($2,$1)"
}, },
] ]
}, },
], ],
settings, settings,
getUsername, getUsername,
renderUsername: ErrorBoundary.wrap(({ author, message, isRepliedMessage, withMentionPrefix, userOverride }: UsernameProps) => { renderUsername: ErrorBoundary.wrap(({ author, message, isRepliedMessage, withMentionPrefix, userOverride, guildId }: UsernameProps) => {
try { try {
const user = userOverride ?? message.author; const user = userOverride ?? message.author;
const username = getUsername(user); const username = getUsername(user, guildId);
const { nick } = author; const { nick } = author;
const prefix = withMentionPrefix ? "@" : ""; const prefix = withMentionPrefix ? "@" : "";