отправка сообщения через бота
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2025-09-29 22:43:20 +03:00
parent 824a7978ac
commit af755115c8
4 changed files with 366 additions and 0 deletions
+83
View File
@@ -388,6 +388,18 @@
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="#">Управление постами VK и событиями</a>
<!-- Поля для отправки сообщений через бота -->
<div class="navbar-nav me-auto">
<div class="d-flex align-items-center">
<input type="text" class="form-control form-control-sm me-2" id="telegram-user-id" placeholder="ID пользователя" style="width: 150px;">
<input type="text" class="form-control form-control-sm me-2" id="telegram-message" placeholder="Сообщение" style="width: 200px;">
<button class="btn btn-outline-light btn-sm" id="send-telegram-btn">
<i class="fas fa-paper-plane me-1"></i> Отправить
</button>
</div>
</div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
@@ -2103,6 +2115,77 @@
window.hideProcessingMessage = hideProcessingMessage;
window.unlinkPostFromEvent = unlinkPostFromEvent;
window.unlinkEventFromPost = unlinkEventFromPost;
// Функция для отправки сообщения через Telegram бота
async function sendTelegramMessage() {
const userId = document.getElementById('telegram-user-id').value.trim();
const message = document.getElementById('telegram-message').value.trim();
// Проверяем, что оба поля заполнены
if (!userId || !message) {
alert('Пожалуйста, заполните оба поля: ID пользователя и сообщение');
return;
}
// Проверяем, что user_id является числом
if (isNaN(userId)) {
alert('ID пользователя должен быть числом');
return;
}
// Показываем индикатор загрузки
const sendBtn = document.getElementById('send-telegram-btn');
const originalText = sendBtn.innerHTML;
sendBtn.innerHTML = '<i class="fas fa-spinner fa-spin me-1"></i> Отправка...';
sendBtn.disabled = true;
try {
const response = await fetch('/send_message', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
user_id: parseInt(userId),
message: message
})
});
const result = await response.json();
if (result.success) {
alert('Сообщение отправлено успешно!');
// Очищаем поля
document.getElementById('telegram-user-id').value = '';
document.getElementById('telegram-message').value = '';
} else {
alert('Ошибка отправки сообщения: ' + result.error);
}
} catch (error) {
console.error('Ошибка при отправке сообщения:', error);
alert('Произошла ошибка при отправке сообщения. Проверьте консоль для подробностей.');
} finally {
// Восстанавливаем кнопку
sendBtn.innerHTML = originalText;
sendBtn.disabled = false;
}
}
// Добавляем обработчик события для кнопки отправки
document.getElementById('send-telegram-btn').addEventListener('click', sendTelegramMessage);
// Добавляем обработчик для отправки по Enter в полях
document.getElementById('telegram-user-id').addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
document.getElementById('telegram-message').focus();
}
});
document.getElementById('telegram-message').addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
sendTelegramMessage();
}
});
</script>
<script>
// Column resizer setup