Did some things...

This commit is contained in:
Joan
2025-09-15 22:45:46 +02:00
parent d3b4cd7eaa
commit 2bfdb539be
9 changed files with 410 additions and 195 deletions

View File

@@ -16,7 +16,7 @@ from telegram.ext import (
ContextTypes,
)
from telegram.error import Forbidden, BadRequest
# REMOVE: from apscheduler.schedulers.asyncio import AsyncIOScheduler
from newrelic_telemetry_sdk import Log, LogClient
# Import handlers and db/config
from handlers import *
@@ -27,8 +27,35 @@ from config import *
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO
)
# Suppress overly verbose logs from libraries
logging.getLogger("httpx").setLevel(logging.WARNING)
# REMOVE: logging.getLogger("apscheduler").setLevel(logging.WARNING) # No longer needed
logging.getLogger("apscheduler").setLevel(logging.WARNING)
client = LogClient(license_key=NEWRELIC_API_KEY, host="log-api.eu.newrelic.com")
class NewRelicHandler(logging.Handler):
def emit(self, record):
try:
log = Log(
message=self.format(record),
level=record.levelname,
timestamp_ms=int(record.created * 1000),
attributes={
"logger": record.name,
"app_name": BOT_NAME,
"docker_container": "telerifas"
}
)
client.send(log)
except Exception:
self.handleError(record)
nr_handler = NewRelicHandler()
nr_handler.setFormatter(logging.Formatter("%(message)s"))
root_logger = logging.getLogger()
root_logger.addHandler(nr_handler)
logger = logging.getLogger(__name__)
@@ -65,7 +92,7 @@ async def check_expired_reservations(context: ContextTypes.DEFAULT_TYPE):
cancelled_count += 1
# Try to notify the user using context.bot
notification_text = (
f"Las papeletas `{numbers}` que tenías reservadas para la rifa **{raffle_name}** han sido liberadas.\n\n"
f"Las participaciones `{numbers}` que tenías reservadas para el sorteo **{raffle_name}** han sido liberadas.\n\n"
f"Puedes volver a reservarlas, ¡pero tienes {RESERVATION_TIMEOUT_MINUTES} minutos para completar el pago!."
)
try:
@@ -147,7 +174,7 @@ def main():
# --- Handlers (Remain the same) ---
# 1. Raffle Creation Conversation Handler
raffle_creation_conv = ConversationHandler(
entry_points=[CommandHandler("crear_rifa", new_raffle_start)],
entry_points=[CommandHandler("crear_sorteo", new_raffle_start)],
states={
SELECTING_CHANNEL: [CallbackQueryHandler(select_channel, pattern=f"^{SELECT_CHANNEL_PREFIX}.*")],
TYPING_TITLE: [MessageHandler(filters.TEXT & ~filters.COMMAND, receive_title)],
@@ -156,6 +183,9 @@ def main():
MessageHandler(filters.PHOTO, receive_image),
MessageHandler(filters.TEXT & ~filters.COMMAND, incorrect_input_type)
],
INTERNATIONAL_SHIPPING: [
MessageHandler(filters.TEXT & ~filters.COMMAND, receive_international_shipping)
],
TYPING_PRICE_FOR_CHANNEL: [
MessageHandler(filters.TEXT & ~filters.COMMAND, receive_price_for_channel)
],