Skip to content

Commit d28877e

Browse files
committed
fix: twitch live announcement
1 parent 0888e5d commit d28877e

File tree

2 files changed

+34
-6
lines changed

2 files changed

+34
-6
lines changed

src/utils/twitch/checkIfStreamerIsLive.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { twitchGetAllChannelsToTrack, twitchGetGuildsTrackingChannel, twitchUpda
44
import type { dbTwitch } from "../../types/database";
55
import client from "../..";
66
import type { TextChannel } from "discord.js";
7+
import { getStreamerName } from "./getStreamerName";
78

89
export async function checkIfStreamerIsLive(streamerId: string): Promise<boolean> {
910
if (!twitchToken || !env.twitchClientId) {
@@ -63,20 +64,18 @@ export async function checkIfStreamersAreLive(): Promise<void> {
6364
for (const streamerId of chunk) {
6465
const isLive = allLiveStreamers.includes(streamerId.twitch_channel_id);
6566
const needsUpdate = isLive !== Boolean(streamerId.is_live);
66-
let streamerName;
67-
68-
if (isLive) {
69-
streamerName = data.data.find((stream: any) => stream.user_id === streamerId.twitch_channel_id).user_name;
70-
}
7167

7268
console.log(`[Twitch] ${streamerId.twitch_channel_id} is live:`, isLive, '. Was live:', Boolean(streamerId.is_live), '. Needs update:', needsUpdate);
7369

7470
if (needsUpdate) {
7571
// Update the database
7672
console.log(`Updating ${streamerId.twitch_channel_id} to be ${isLive ? "live" : "offline"}`);
7773
await twitchUpdateIsLive(streamerId.twitch_channel_id, isLive);
78-
74+
7975
if (isLive) {
76+
// Get the streamer's name
77+
const streamerName = await getStreamerName(streamerId.twitch_channel_id);
78+
8079
// Get all guilds that are tracking this streamer
8180
const guildsTrackingStreamer = await twitchGetGuildsTrackingChannel(streamerId.twitch_channel_id)
8281
for (const guild of guildsTrackingStreamer) {
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { env } from "../../config";
2+
import { twitchToken } from "./auth";
3+
4+
export async function getStreamerName(streamerId: string): Promise<string | null> {
5+
if (!twitchToken || !env.twitchClientId) {
6+
console.error("Twitch token not found in getStreamerName");
7+
return null;
8+
}
9+
10+
const res = await fetch(`https://api.twitch.tv/helix/users?id=${streamerId}`, {
11+
headers: {
12+
'Client-ID': env.twitchClientId,
13+
'Authorization': `Bearer ${twitchToken}`,
14+
},
15+
});
16+
17+
if (!res.ok) {
18+
console.error("Error fetching stream data in getStreamerName:", res.statusText);
19+
return null;
20+
}
21+
22+
const data = await res.json();
23+
console.log("Streamer data:", data);
24+
if (data.data && data.data.length > 0) {
25+
return data.data[0].display_name;
26+
} else {
27+
return null;
28+
}
29+
}

0 commit comments

Comments
 (0)