diff --git a/pxy_bots/admin.py b/pxy_bots/admin.py index 3147e30..5d225ab 100644 --- a/pxy_bots/admin.py +++ b/pxy_bots/admin.py @@ -9,32 +9,37 @@ class TelegramBotAdmin(admin.ModelAdmin): list_filter = ("is_active",) actions = ["set_webhooks"] - @admin.action(description="Set webhooks for selected bots") - def set_webhooks(self, request, queryset): - base_url = request.build_absolute_uri("/")[:-1] # Get base server URL - results = [] - for bot in queryset: - if bot.is_active: - try: - result = bot.set_webhook(base_url) +@admin.action(description="Set webhooks for selected bots") +def set_webhooks(self, request, queryset): + base_url = f"{request.scheme}://{request.get_host()}" + for bot in queryset: + if bot.is_active: + try: + if not bot.assistant: self.message_user( request, - f"Webhook set for {bot.name}: {result}", - level="success", + f"Bot {bot.name} has no assistant configured.", + level="warning", ) - except Exception as e: - self.message_user( - request, - f"Failed to set webhook for {bot.name}: {str(e)}", - level="error", - ) - results.append(result) - else: + continue + result = bot.set_webhook(base_url) self.message_user( request, - f"Skipped inactive bot: {bot.name}", - level="warning", + f"Webhook set for {bot.name}: {result}", + level="success", ) + except Exception as e: + self.message_user( + request, + f"Failed to set webhook for {bot.name}: {str(e)}", + level="error", + ) + else: + self.message_user( + request, + f"Skipped inactive bot: {bot.name}", + level="warning", + ) def get_assistant_name(self, obj): """Show the name of the assistant linked to the bot.""" diff --git a/pxy_bots/set_webhook.py b/pxy_bots/set_webhook.py deleted file mode 100644 index 7565dab..0000000 --- a/pxy_bots/set_webhook.py +++ /dev/null @@ -1,16 +0,0 @@ -import requests -from pxy_bots.models import TelegramBot - -BASE_URL = "https://your-domain.com/bots/webhook/" - -def set_telegram_webhooks(): - """Sets webhooks for all active bots.""" - bots = TelegramBot.objects.filter(is_active=True) - for bot in bots: - webhook_url = f"{BASE_URL}{bot.name}/" - response = requests.post( - f"https://api.telegram.org/bot{bot.token}/setWebhook", - data={"url": webhook_url} - ) - print(f"Webhook for {bot.name} ({bot.username}) set to: {webhook_url}") - print("Response:", response.json())