54 lines
2.1 KiB
Python
54 lines
2.1 KiB
Python
import sys
|
|
import os
|
|
import asyncio
|
|
|
|
# Импортируем только учетные данные для подключения
|
|
from config.config import TC_SERVER, TC_LOGIN, TC_PASSWORD
|
|
from trueconf import Bot
|
|
|
|
async def send_proactive_message(target_user: str, message_text: str):
|
|
# Создаем объект бота
|
|
bot = Bot.from_credentials(
|
|
server=TC_SERVER,
|
|
username=TC_LOGIN,
|
|
password=TC_PASSWORD,
|
|
verify_ssl=False
|
|
)
|
|
|
|
# Запускаем фоновый цикл для поднятия WebSocket соединения
|
|
bot_task = asyncio.create_task(bot.run())
|
|
|
|
print("🔄 Подключение к серверу (ожидание 3 секунды)...")
|
|
await asyncio.sleep(3) # Даем боту время поднять коннект
|
|
|
|
try:
|
|
print(f"✉️ Отправка сообщения пользователю {target_user}...")
|
|
|
|
# Отправляем сообщение
|
|
await bot.send_message(target_user, text=message_text, parse_mode="html")
|
|
|
|
print("✅ Сообщение успешно отправлено!")
|
|
|
|
except Exception as e:
|
|
print(f"❌ Ошибка при отправке: {e}")
|
|
|
|
finally:
|
|
print("🛑 Завершение скрипта...")
|
|
# Мгновенно убиваем процесс, чтобы не зависнуть на WebSockets
|
|
os._exit(0)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# Чтение аргументов из консоли
|
|
if len(sys.argv) >= 3:
|
|
user = sys.argv[1]
|
|
text = " ".join(sys.argv[2:])
|
|
else:
|
|
# Для ручного теста (без аргументов)
|
|
user = "ds.krivochenko@tcs.sibcem.ru" # Убедитесь, что чат с ботом уже инициирован!
|
|
text = "🔔 <b>Уведомление:</b> Тестовое сообщение."
|
|
|
|
try:
|
|
asyncio.run(send_proactive_message(user, text))
|
|
except KeyboardInterrupt:
|
|
os._exit(0) |