Update files
This commit is contained in:
parent
741524e4af
commit
de3fd9b58c
|
|
@ -2,6 +2,9 @@ const axios = require('axios');
|
|||
const config = require('../config');
|
||||
const { log, logError } = require('../middleware/logger');
|
||||
const User = require('../models/User');
|
||||
const { normalizeUsername } = require('../services/moderationAdmin');
|
||||
|
||||
const OWNER_USERNAMES = new Set(config.moderationOwnerUsernames || []);
|
||||
|
||||
const BOT_TOKEN = config.telegramBotToken;
|
||||
const TELEGRAM_API = BOT_TOKEN ? `https://api.telegram.org/bot${BOT_TOKEN}` : null;
|
||||
|
|
@ -58,6 +61,21 @@ const sendMessageToAllUsers = async (messageText) => {
|
|||
}
|
||||
};
|
||||
|
||||
const requireAdmin = async (message) => {
|
||||
try {
|
||||
const telegramId = message.from?.id;
|
||||
if (!telegramId) return false;
|
||||
|
||||
const user = await User.findOne({ telegramId }).select('role');
|
||||
const username = normalizeUsername(message.from?.username || '');
|
||||
|
||||
return user && (user.role === 'admin' || OWNER_USERNAMES.has(username));
|
||||
} catch (error) {
|
||||
logError('Ошибка проверки прав админа', error);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
const getStartMessage = () => {
|
||||
return `<b>Добро пожаловать в Nakama!</b>
|
||||
|
||||
|
|
@ -123,6 +141,41 @@ const handleCommand = async (message) => {
|
|||
return;
|
||||
}
|
||||
|
||||
if (command === '/broadcast') {
|
||||
// Проверка прав
|
||||
const isAdmin = await requireAdmin(message);
|
||||
if (!isAdmin) {
|
||||
await sendMessage(chatId, '❌ Команда доступна только администраторам.');
|
||||
return;
|
||||
}
|
||||
|
||||
// Получить текст сообщения (все после /broadcast)
|
||||
const messageText = args.slice(1).join(' ').trim();
|
||||
|
||||
if (!messageText) {
|
||||
await sendMessage(chatId, 'Использование: /broadcast <сообщение>\n\nПример: /broadcast Всем привет!');
|
||||
return;
|
||||
}
|
||||
|
||||
// Отправить подтверждение
|
||||
await sendMessage(chatId, '📤 Начинаю рассылку сообщения всем пользователям...');
|
||||
|
||||
try {
|
||||
const result = await sendMessageToAllUsers(messageText);
|
||||
await sendMessage(chatId,
|
||||
`✅ Рассылка завершена!\n\n` +
|
||||
`📊 Статистика:\n` +
|
||||
`• Отправлено: ${result.sent}\n` +
|
||||
`• Ошибок: ${result.failed}\n` +
|
||||
`• Всего пользователей: ${result.total}`
|
||||
);
|
||||
} catch (error) {
|
||||
logError('Ошибка рассылки через команду', error);
|
||||
await sendMessage(chatId, `❌ Ошибка рассылки: ${error.message}`);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Игнорируем неизвестные команды
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue