Compare commits
3 Commits
3c6bdeab60
...
def1757371
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
def1757371 | ||
|
|
7e0c088fa7 | ||
|
|
43b4757696 |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "legica-dana",
|
||||
"version": "2.0.7",
|
||||
"version": "2.1.1",
|
||||
"main": "src/app.ts",
|
||||
"scripts": {
|
||||
"start": "bun run src/app.ts",
|
||||
|
||||
@@ -195,7 +195,8 @@ const taskPlugin = new Elysia({ prefix: "/job" })
|
||||
return true;
|
||||
} catch (err) {
|
||||
set.status = 400;
|
||||
return err;
|
||||
logger.error(err);
|
||||
return false;
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -2,10 +2,10 @@ import { config } from "@constants";
|
||||
import axios from "axios";
|
||||
import cheerio from "cheerio";
|
||||
|
||||
export async function getFirstHtml(): Promise<string> {
|
||||
export async function getFirstHtml(): Promise<string | undefined> {
|
||||
const response = await axios.get(config.LEGICA_URL);
|
||||
const html = response.data;
|
||||
const $ = cheerio.load(html);
|
||||
const { href } = $(".News-link.c-def")?.attr() || {};
|
||||
const href = $(".legica-dana").first().find("a").attr("href");
|
||||
return href;
|
||||
}
|
||||
|
||||
@@ -7,8 +7,9 @@ export async function getImgTitle(href: string): Promise<Legica> {
|
||||
const html = response.data;
|
||||
const $ = cheerio.load(html);
|
||||
|
||||
const title = $(".Article-inner > h1").text();
|
||||
const { src: img } = $(".Article-media > img").attr() || {};
|
||||
const title = $(".article-title-container > h1").text();
|
||||
const src = $(".image-holder", ".article-content").find("img").attr("src");
|
||||
if (!src) throw new Error(`Image not found at ${href}.`);
|
||||
|
||||
return { title, img };
|
||||
return { title, img: src };
|
||||
}
|
||||
|
||||
@@ -11,7 +11,6 @@ export async function sendDiscordMessage(
|
||||
url: string,
|
||||
dateCheck?: dayjs.Dayjs
|
||||
): Promise<void> {
|
||||
if (!url) return;
|
||||
const { img, title } = await getImgTitle(url);
|
||||
|
||||
if (dateCheck) {
|
||||
@@ -26,7 +25,7 @@ export async function sendDiscordMessage(
|
||||
);
|
||||
}
|
||||
|
||||
client.channels.cache.forEach(async (channel) => {
|
||||
const promises = client.channels.cache.map(async (channel) => {
|
||||
try {
|
||||
if (channel.type !== "text") return null;
|
||||
const embeddedMessage = new MessageEmbed().setTitle(title).setImage(img);
|
||||
@@ -50,13 +49,16 @@ export async function sendDiscordMessage(
|
||||
console.error(`Reaction ${reaction} to channel ${channel.id} failed.`);
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
} catch (err) {
|
||||
console.error(`Message to channel ${channel.id} failed.`);
|
||||
throw err;
|
||||
}
|
||||
});
|
||||
await Promise.all(promises);
|
||||
}
|
||||
|
||||
export async function sendNextMessage(client: Client): Promise<void> {
|
||||
const href = await getFirstHtml();
|
||||
if (!href) throw new Error("URL cannot be empty!");
|
||||
await sendDiscordMessage(client, href, dayjs());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user