intrabot/intradbot.py
2026-03-15 20:34:12 +03:00

58 lines
1.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
Точка входа IntradBot.
Запускает три компонента:
1. Telegram бот (polling) — в отдельном потоке
2. Flask веб-сервер (dev) или Gunicorn (prod) — в отдельном потоке
3. Шедулер обновления справочников — в главном потоке
В продакшене (Docker) HTTP обслуживает Gunicorn напрямую через web.server:create_app,
а этот процесс запускает только бота и шедулер.
"""
import logging
import os
import threading
import time
import schedule
import config
import database
from intradesk import reference
from bot.telegram import start_bot
from web.server import start_server
os.makedirs(os.path.dirname(config.DB_FILE), exist_ok=True)
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
handlers=[
logging.StreamHandler(),
logging.FileHandler(os.path.join(os.path.dirname(config.DB_FILE), "bot.log")),
],
)
log = logging.getLogger(__name__)
def main():
log.info("Starting IntradBot...")
database.init_db()
reference.seed_static()
reference.load_all()
threading.Thread(target=start_bot, daemon=True, name="telegram-bot").start()
threading.Thread(target=start_server, daemon=True, name="web-server").start()
# Обновляем справочники каждый понедельник (новые сотрудники, группы и т.д.)
schedule.every().monday.at("10:00").do(reference.load_all)
log.info("IntradBot is running. Waiting for webhooks...")
while True:
schedule.run_pending()
time.sleep(1)
if __name__ == "__main__":
main()