3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-16 22:21:51 +00:00

Fix error in log userMention() function

The function assumed a GuildMember object where a new
IConfigAccessibleMember object was used instead.
This commit is contained in:
Dragory 2021-08-14 15:42:28 +03:00
parent fa18c234d6
commit adbcbe9524
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
2 changed files with 37 additions and 4 deletions

View file

@ -14,6 +14,11 @@ import {
} from "../../../utils"; } from "../../../utils";
import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin"; import { TimeAndDatePlugin } from "../../TimeAndDate/TimeAndDatePlugin";
import { FORMAT_NO_TIMESTAMP, LogsPluginType, TLogChannel } from "../types"; import { FORMAT_NO_TIMESTAMP, LogsPluginType, TLogChannel } from "../types";
import {
getConfigAccessibleMemberLevel,
IConfigAccessibleMember,
memberToConfigAccessibleMember,
} from "../../../utils/configAccessibleObjects";
export async function getLogMessage( export async function getLogMessage(
pluginData: GuildPluginData<LogsPluginType>, pluginData: GuildPluginData<LogsPluginType>,
@ -48,17 +53,26 @@ export async function getLogMessage(
const mentions: string[] = []; const mentions: string[] = [];
for (const userOrMember of usersOrMembers) { for (const userOrMember of usersOrMembers) {
let user; let user;
let member; let member: IConfigAccessibleMember | null = null;
if (userOrMember.user) { if (userOrMember.user) {
member = userOrMember; member = userOrMember as IConfigAccessibleMember;
user = member.user; user = member.user;
} else { } else {
user = userOrMember; user = userOrMember;
member = await resolveMember(pluginData.client, pluginData.guild, user.id); const apiMember = await resolveMember(pluginData.client, pluginData.guild, user.id);
if (apiMember) {
member = memberToConfigAccessibleMember(apiMember);
}
} }
const memberConfig = (await pluginData.config.getMatchingConfig({ member, userId: user.id })) || ({} as any); const level = member ? getConfigAccessibleMemberLevel(pluginData, member) : 0;
const memberConfig =
(await pluginData.config.getMatchingConfig({
level,
memberRoles: member ? member.roles.map(r => r.id) : [],
userId: user.id,
})) || ({} as any);
// Revert to old behavior (verbose name w/o ping if allow_user_mentions is enabled (for whatever reason)) // Revert to old behavior (verbose name w/o ping if allow_user_mentions is enabled (for whatever reason))
if (config.allow_user_mentions) { if (config.allow_user_mentions) {

View file

@ -11,6 +11,7 @@ import {
User, User,
} from "discord.js"; } from "discord.js";
import { UnknownUser } from "src/utils"; import { UnknownUser } from "src/utils";
import { GuildPluginData } from "knub";
export interface IConfigAccessibleUser { export interface IConfigAccessibleUser {
id: Snowflake | string; id: Snowflake | string;
@ -180,3 +181,21 @@ export function stickerToConfigAccessibleSticker(sticker: Sticker): IConfigAcces
return toReturn; return toReturn;
} }
export function getConfigAccessibleMemberLevel(
pluginData: GuildPluginData<any>,
member: IConfigAccessibleMember,
): number {
if (member.id === pluginData.guild.ownerId) {
return 99999;
}
const levels = pluginData.fullConfig.levels ?? {};
for (const [id, level] of Object.entries(levels)) {
if (member.id === id || member.roles?.find(r => r.id === id)) {
return level as number;
}
}
return 0;
}