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

Thread fixes

This commit is contained in:
Dragory 2021-08-18 20:47:24 +03:00
parent d109a58cb7
commit 0e7cf9715f
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
5 changed files with 18 additions and 11 deletions

View file

@ -1,4 +1,4 @@
import { Client, Intents, TextChannel } from "discord.js"; import { Client, Intents, TextChannel, ThreadChannel } from "discord.js";
import yaml from "js-yaml"; import yaml from "js-yaml";
import { Knub, PluginError } from "knub"; import { Knub, PluginError } from "knub";
import { PluginLoadError } from "knub/dist/plugins/PluginLoadError"; import { PluginLoadError } from "knub/dist/plugins/PluginLoadError";
@ -239,13 +239,15 @@ connect().then(async () => {
}, },
sendSuccessMessageFn(channel, body) { sendSuccessMessageFn(channel, body) {
const guildId = channel instanceof TextChannel ? channel.guild.id : undefined; const guildId =
channel instanceof TextChannel || channel instanceof ThreadChannel ? channel.guild.id : undefined;
const emoji = guildId ? bot.getLoadedGuild(guildId)!.config.success_emoji : undefined; const emoji = guildId ? bot.getLoadedGuild(guildId)!.config.success_emoji : undefined;
channel.send(successMessage(body, emoji)); channel.send(successMessage(body, emoji));
}, },
sendErrorMessageFn(channel, body) { sendErrorMessageFn(channel, body) {
const guildId = channel instanceof TextChannel ? channel.guild.id : undefined; const guildId =
channel instanceof TextChannel || channel instanceof ThreadChannel ? channel.guild.id : undefined;
const emoji = guildId ? bot.getLoadedGuild(guildId)!.config.error_emoji : undefined; const emoji = guildId ? bot.getLoadedGuild(guildId)!.config.error_emoji : undefined;
channel.send(errorMessage(body, emoji)); channel.send(errorMessage(body, emoji));
}, },

View file

@ -1,4 +1,4 @@
import { Snowflake, TextChannel } from "discord.js"; import { Snowflake, TextChannel, ThreadChannel } from "discord.js";
import * as t from "io-ts"; import * as t from "io-ts";
import { erisAllowedMentionsToDjsMentionOptions } from "src/utils/erisAllowedMentionsToDjsMentionOptions"; import { erisAllowedMentionsToDjsMentionOptions } from "src/utils/erisAllowedMentionsToDjsMentionOptions";
import { LogType } from "../../../data/LogType"; import { LogType } from "../../../data/LogType";
@ -34,7 +34,7 @@ export const AlertAction = automodAction({
const channel = pluginData.guild.channels.cache.get(actionConfig.channel as Snowflake); const channel = pluginData.guild.channels.cache.get(actionConfig.channel as Snowflake);
const logs = pluginData.getPlugin(LogsPlugin); const logs = pluginData.getPlugin(LogsPlugin);
if (channel && channel instanceof TextChannel) { if (channel && (channel instanceof TextChannel || channel instanceof ThreadChannel)) {
const text = actionConfig.text; const text = actionConfig.text;
const theMessageLink = const theMessageLink =
contexts[0].message && messageLink(pluginData.guild.id, contexts[0].message.channel_id, contexts[0].message.id); contexts[0].message && messageLink(pluginData.guild.id, contexts[0].message.channel_id, contexts[0].message.id);

View file

@ -1,4 +1,4 @@
import { MessageOptions, Permissions, Snowflake, TextChannel, User } from "discord.js"; import { MessageOptions, Permissions, Snowflake, TextChannel, ThreadChannel, User } from "discord.js";
import * as t from "io-ts"; import * as t from "io-ts";
import { userToTemplateSafeUser } from "../../../utils/templateSafeObjects"; import { userToTemplateSafeUser } from "../../../utils/templateSafeObjects";
import { LogType } from "../../../data/LogType"; import { LogType } from "../../../data/LogType";
@ -32,7 +32,10 @@ export const ReplyAction = automodAction({
async apply({ pluginData, contexts, actionConfig, ruleName }) { async apply({ pluginData, contexts, actionConfig, ruleName }) {
const contextsWithTextChannels = contexts const contextsWithTextChannels = contexts
.filter(c => c.message?.channel_id) .filter(c => c.message?.channel_id)
.filter(c => pluginData.guild.channels.cache.get(c.message!.channel_id as Snowflake) instanceof TextChannel); .filter(c => {
const channel = pluginData.guild.channels.cache.get(c.message!.channel_id as Snowflake);
return channel instanceof TextChannel || channel instanceof ThreadChannel;
});
const contextsByChannelId = contextsWithTextChannels.reduce((map: Map<string, AutomodContext[]>, context) => { const contextsByChannelId = contextsWithTextChannels.reduce((map: Map<string, AutomodContext[]>, context) => {
if (!map.has(context.message!.channel_id)) { if (!map.has(context.message!.channel_id)) {
@ -59,6 +62,7 @@ export const ReplyAction = automodAction({
? await renderReplyText(actionConfig) ? await renderReplyText(actionConfig)
: ((await renderRecursively(actionConfig.text, renderReplyText)) as MessageOptions); : ((await renderRecursively(actionConfig.text, renderReplyText)) as MessageOptions);
console.log("formatted:", formatted);
if (formatted) { if (formatted) {
const channel = pluginData.guild.channels.cache.get(channelId as Snowflake) as TextChannel; const channel = pluginData.guild.channels.cache.get(channelId as Snowflake) as TextChannel;
@ -89,6 +93,7 @@ export const ReplyAction = automodAction({
} }
const messageContent: MessageOptions = typeof formatted === "string" ? { content: formatted } : formatted; const messageContent: MessageOptions = typeof formatted === "string" ? { content: formatted } : formatted;
console.log(`sending reply message to ${channel.id}`);
const replyMsg = await channel.send({ const replyMsg = await channel.send({
...messageContent, ...messageContent,
allowedMentions: { allowedMentions: {

View file

@ -1,4 +1,4 @@
import { Snowflake, TextChannel } from "discord.js"; import { Snowflake, TextChannel, ThreadChannel } from "discord.js";
import { GuildPluginData } from "knub"; import { GuildPluginData } from "knub";
import { ERRORS, RecoverablePluginError } from "../../../RecoverablePluginError"; import { ERRORS, RecoverablePluginError } from "../../../RecoverablePluginError";
import { disableUserNotificationStrings, UserNotificationMethod } from "../../../utils"; import { disableUserNotificationStrings, UserNotificationMethod } from "../../../utils";
@ -19,7 +19,7 @@ export function resolveActionContactMethods(
} }
const channel = pluginData.guild.channels.cache.get(actionConfig.notifyChannel as Snowflake); const channel = pluginData.guild.channels.cache.get(actionConfig.notifyChannel as Snowflake);
if (!(channel instanceof TextChannel)) { if (!(channel instanceof TextChannel || channel instanceof ThreadChannel)) {
throw new RecoverablePluginError(ERRORS.INVALID_USER_NOTIFICATION_CHANNEL); throw new RecoverablePluginError(ERRORS.INVALID_USER_NOTIFICATION_CHANNEL);
} }

View file

@ -871,7 +871,7 @@ export function chunkMessageLines(str: string, maxChunkLength = 1990): string[]
} }
export async function createChunkedMessage( export async function createChunkedMessage(
channel: TextChannel | User, channel: TextChannel | ThreadChannel | User,
messageText: string, messageText: string,
allowedMentions?: MessageMentionOptions, allowedMentions?: MessageMentionOptions,
) { ) {
@ -1329,7 +1329,7 @@ export function messageSummary(msg: SavedMessage) {
if (richEmbed) result += "Embed:```" + Util.escapeCodeBlock(JSON.stringify(richEmbed)) + "```"; if (richEmbed) result += "Embed:```" + Util.escapeCodeBlock(JSON.stringify(richEmbed)) + "```";
// Attachments // Attachments
if (msg.data.attachments) { if (msg.data.attachments && msg.data.attachments.length) {
result += result +=
"Attachments:\n" + "Attachments:\n" +
msg.data.attachments.map((a: ISavedMessageAttachmentData) => disableLinkPreviews(a.url)).join("\n") + msg.data.attachments.map((a: ISavedMessageAttachmentData) => disableLinkPreviews(a.url)).join("\n") +