from django.contrib import admin
from .models import TelegramBot

@admin.register(TelegramBot)
class TelegramBotAdmin(admin.ModelAdmin):
    list_display = ("name", "username", "is_active", "get_assistant_name")
    search_fields = ("name", "username")
    list_filter = ("is_active",)
    actions = ["set_webhooks"]

    @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"Bot {bot.name} has no assistant configured.",
                            level="warning",
                        )
                        continue
                    result = bot.set_webhook(base_url)
                    self.message_user(
                        request,
                        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."""
        return obj.assistant.name if obj.assistant else "None"
    get_assistant_name.short_description = "Assistant Name"
