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

fix: fix error handling in InternalPoster.sendMessage direct sends

This commit is contained in:
Dragory 2021-11-02 21:40:24 +02:00
parent 4179bc4ee1
commit fe63ec9d77
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
3 changed files with 21 additions and 13 deletions

View file

@ -24,7 +24,7 @@ export async function postToCaseLogChannel(
// This doesn't use `!isText() || isThread()` because TypeScript had some issues inferring types from it
if (!caseLogChannel || !(caseLogChannel instanceof TextChannel || caseLogChannel instanceof NewsChannel)) return null;
let result;
let result: InternalPosterMessageResult | null = null;
try {
if (file != null) {
content.files = file;

View file

@ -10,6 +10,16 @@ export type InternalPosterMessageResult = {
channelId: string;
};
async function sendDirectly(
channel: TextChannel | NewsChannel,
content: MessageOptions,
): Promise<InternalPosterMessageResult | null> {
return channel.send(content).then((message) => ({
id: message.id,
channelId: message.channelId,
}));
}
/**
* Sends a message using a webhook or direct API requests, preferring webhooks when possible.
*/
@ -17,7 +27,7 @@ export async function sendMessage(
pluginData: GuildPluginData<InternalPosterPluginType>,
channel: TextChannel | NewsChannel,
content: MessageOptions,
): Promise<InternalPosterMessageResult> {
): Promise<InternalPosterMessageResult | null> {
return pluginData.state.queue.add(async () => {
if (!pluginData.state.webhookClientCache.has(channel.id)) {
const webhookInfo = await getOrCreateWebhookForChannel(pluginData, channel);
@ -53,19 +63,13 @@ export async function sendMessage(
pluginData.state.webhookClientCache.delete(channel.id);
// Fallback to regular message for this log message
return channel.send(content).then((message) => ({
id: message.id,
channelId: message.channelId,
}));
return sendDirectly(channel, content);
}
throw err;
});
}
return channel.send(content).then((message) => ({
id: message.id,
channelId: message.channelId,
}));
return sendDirectly(channel, content);
});
}