Update backend, DB, Commands, Live Reloading
This commit is contained in:
@@ -145,19 +145,28 @@ async function announceLive(guildId, stream) {
|
||||
const channel = await guild.channels.fetch(channelId).catch(() => null);
|
||||
if (!channel) return { success: false, message: 'Channel not found' };
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const embed = new EmbedBuilder()
|
||||
.setColor(0x9146FF)
|
||||
.setTitle(stream.title || `${stream.user_name} is live`)
|
||||
.setURL(stream.url)
|
||||
.setAuthor({ name: stream.user_name, iconURL: stream.profile_image_url || undefined, url: stream.url })
|
||||
.setThumbnail(stream.thumbnail_url || stream.profile_image_url || undefined)
|
||||
.addFields(
|
||||
{ name: 'Category', value: stream.game_name || 'Unknown', inline: true },
|
||||
{ name: 'Viewers', value: String(stream.viewer_count || 0), inline: true }
|
||||
)
|
||||
.setDescription(stream.description || '')
|
||||
.setFooter({ text: `ehchadservices • Started: ${stream.started_at ? new Date(stream.started_at).toLocaleString() : 'unknown'}` });
|
||||
await channel.send({ embeds: [embed] });
|
||||
const embed = new EmbedBuilder()
|
||||
.setColor(0x9146FF)
|
||||
.setTitle(stream.title || `${stream.user_name} is live`)
|
||||
.setURL(stream.url)
|
||||
.setAuthor({ name: stream.user_name, iconURL: stream.profile_image_url || undefined, url: stream.url })
|
||||
.setThumbnail(stream.thumbnail_url || stream.profile_image_url || undefined)
|
||||
.addFields(
|
||||
{ name: 'Category', value: stream.game_name || 'Unknown', inline: true },
|
||||
{ name: 'Viewers', value: String(stream.viewer_count || 0), inline: true }
|
||||
)
|
||||
.setDescription((stream.description || '').slice(0, 200))
|
||||
.setFooter({ text: `ehchadservices • Started: ${stream.started_at ? new Date(stream.started_at).toLocaleString() : 'unknown'}` });
|
||||
let prefixMsg = '';
|
||||
if (liveSettings.customMessage) {
|
||||
prefixMsg = liveSettings.customMessage;
|
||||
} else if (liveSettings.message) {
|
||||
prefixMsg = liveSettings.message;
|
||||
} else {
|
||||
prefixMsg = `🔴 ${stream.user_name} is now live!`;
|
||||
}
|
||||
const payload = prefixMsg ? { content: prefixMsg, embeds: [embed] } : { embeds: [embed] };
|
||||
await channel.send(payload);
|
||||
return { success: true };
|
||||
} catch (e) {
|
||||
console.error('announceLive failed:', e && e.message ? e.message : e);
|
||||
@@ -170,8 +179,7 @@ module.exports = { login, client, setGuildSettings, getGuildSettingsFromCache, a
|
||||
// Start twitch watcher when client is ready (use 'clientReady' as the event name)
|
||||
try {
|
||||
const watcher = require('./twitch-watcher');
|
||||
// discord.js renamed the ready event to clientReady; the event loader registers
|
||||
// handlers based on event.name so we listen for the same 'clientReady' here.
|
||||
// discord.js uses 'clientReady' event
|
||||
client.once('clientReady', () => {
|
||||
// start polling in background
|
||||
watcher.poll(client).catch(err => console.error('Twitch watcher failed to start:', err));
|
||||
@@ -182,6 +190,19 @@ try {
|
||||
// ignore if watcher not available
|
||||
}
|
||||
|
||||
try {
|
||||
const kickWatcher = require('./kick-watcher');
|
||||
client.once('clientReady', () => {
|
||||
// TEMPORARILY DISABLED: Kick watcher removed for now
|
||||
// kickWatcher.poll(client).catch(err => console.error('Kick watcher failed to start:', err));
|
||||
console.log('Kick watcher: temporarily disabled');
|
||||
});
|
||||
// process.on('exit', () => { kickWatcher.stop(); });
|
||||
// process.on('SIGINT', () => { kickWatcher.stop(); process.exit(); });
|
||||
} catch (e) {
|
||||
// ignore if kick watcher not available
|
||||
}
|
||||
|
||||
// --- Optional push receiver (so backend can notify a remote bot process) ---
|
||||
try {
|
||||
const express = require('express');
|
||||
|
||||
Reference in New Issue
Block a user