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