Compare commits

..

No commits in common. "11801add49e36944f98474a6665a52a754714dda" and "4fe93cac7c8aa8d62c84dd213620a324f1778a5f" have entirely different histories.

45
bot.js
View File

@ -40,21 +40,11 @@ class TelegramHistoryBot {
}
}
getUniqueChatIds() {
const chatMap = new Map();
const ids = new Set();
for (const msg of this.history) {
const current = chatMap.get(msg.chat_id);
if (!current || new Date(msg.timestamp) > new Date(current.timestamp)) {
chatMap.set(msg.chat_id, {
chat_id: msg.chat_id,
title: msg.chat_title || `(${msg.chat_id})`,
timestamp: msg.timestamp
});
ids.add(msg.chat_id);
}
}
// Преобразуем Map в массив, возвращаем только chat_id и title
return Array.from(chatMap.values()).map(({ chat_id, title }) => ({ chat_id, title }))
return Array.from(ids);
}
async init() {
@ -149,34 +139,9 @@ class TelegramHistoryBot {
logger.warn('Попытка вызова списка чатов из стороннего чата. Пользователь ' + JSON.stringify(ctx.message.from))
return
}
const message = this.getUniqueChatIds()
.map(chat => `${chat.title} (ID: ${chat.chat_id})`)
.join('\n');
await ctx.reply(message)
const chatIds = this.getUniqueChatIds();
await ctx.reply(JSON.stringify(chatIds))
});
this.bot.command('broadcast', async (ctx) => {
if (ctx.message.chat.id!==Number(process.env.ADMIN_CHAT_ID)) {
logger.warn(JSON.stringify(ctx.message))
logger.warn('Попытка вызова бродкаста из стороннего чата. Пользователь ' + JSON.stringify(ctx.message.from))
return
}
const fullText = ctx.message.text || '';
const text = fullText.replace(/^\/broadcast\s*/, '').trim();
if (!text) {
return ctx.reply('❗️ Пожалуйста, укажите текст для рассылки после команды /broadcast');
}
logger.info('📊 Получена команда /broadcast с запросом:' + text)
const chatList= this.getUniqueChatIds()
for (const chat of chatList) {
try {
await this.bot.telegram.sendMessage(chat.chat_id, text);
logger.info(`✅ Сообщение отправлено в чат ${chat.title} (${chat.chat_id})`);
} catch (error) {
logger.error(`❌ Ошибка при отправке в чат ${chat.title} (${chat.chat_id}):`, error);
}
}
})
// Команды суммаризации - должны быть ДО обработки обычных сообщений
// this.bot.command('summary_day', async (ctx) => {
// // if (!this.isAdmin(ctx)) {