3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-10 04:25:01 +00:00

fix(logs): fix inconsistent thread/channel/category exclusions; add excluded_threads log channel option

This commit is contained in:
Dragory 2022-08-13 23:19:06 +03:00
parent 218c31231e
commit d472fd4fa6
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
32 changed files with 132 additions and 51 deletions

View file

@ -0,0 +1,6 @@
import { Channel, DMChannel } from "discord.js";
import { ChannelTypeStrings } from "src/types";
export function isDmChannel(channel: Channel): channel is DMChannel {
return channel.type === ChannelTypeStrings.DM || channel.type === ChannelTypeStrings.GROUP;
}

View file

@ -0,0 +1,5 @@
import { Channel, GuildChannel } from "discord.js";
export function isGuildChannel(channel: Channel): channel is GuildChannel {
return channel.type.startsWith("GUILD_");
}

View file

@ -0,0 +1,10 @@
import { Channel, ThreadChannel } from "discord.js";
import { ChannelTypeStrings } from "src/types";
export function isThreadChannel(channel: Channel): channel is ThreadChannel {
return (
channel.type === ChannelTypeStrings.NEWS_THREAD ||
channel.type === ChannelTypeStrings.PUBLIC_THREAD ||
channel.type === ChannelTypeStrings.PRIVATE_THREAD
);
}

View file

@ -0,0 +1,53 @@
import { ChannelType } from "discord-api-types/v9";
import { CategoryChannel, Channel } from "discord.js";
import { ChannelTypes } from "discord.js/typings/enums";
import { ChannelTypeStrings } from "src/types";
import { isDmChannel } from "./isDmChannel";
import { isGuildChannel } from "./isGuildChannel";
import { isThreadChannel } from "./isThreadChannel";
type ResolvedChannelIds = {
category: string | null;
channel: string | null;
thread: string | null;
};
export function resolveChannelIds(channel: Channel): ResolvedChannelIds {
if (isDmChannel(channel)) {
return {
category: null,
channel: channel.id,
thread: null,
};
}
if (isThreadChannel(channel)) {
return {
category: channel.parent?.parentId || null,
channel: channel.parentId,
thread: channel.id,
};
}
if (channel instanceof CategoryChannel) {
return {
category: channel.id,
channel: null,
thread: null,
};
}
if (isGuildChannel(channel)) {
return {
category: channel.parentId,
channel: channel.id,
thread: null,
};
}
return {
category: null,
channel: channel.id,
thread: null,
};
}