in packages/blueprints/gen-ai-chatbot/static-assets/chatbot-genai-components/backend/python/app/usecases/bot.py [0:0]
def fetch_bot_summary(user_id: str, bot_id: str) -> BotSummaryOutput:
try:
bot = find_private_bot_by_id(user_id, bot_id)
return BotSummaryOutput(
id=bot_id,
title=bot.title,
description=bot.description,
create_time=bot.create_time,
last_used_time=bot.last_used_time,
is_pinned=bot.is_pinned,
is_public=True if bot.public_bot_id else False,
has_agent=bot.is_agent_enabled(),
owned=True,
sync_status=bot.sync_status,
has_knowledge=bot.has_knowledge(),
)
except RecordNotFoundError:
pass
try:
alias = find_alias_by_id(user_id, bot_id)
return BotSummaryOutput(
id=alias.id,
title=alias.title,
description=alias.description,
create_time=alias.create_time,
last_used_time=alias.last_used_time,
is_pinned=alias.is_pinned,
is_public=True,
has_agent=bot.is_agent_enabled(),
owned=False,
sync_status=alias.sync_status,
has_knowledge=alias.has_knowledge,
)
except RecordNotFoundError:
pass
try:
# NOTE: At the first time using shared bot, alias is not created yet.
bot = find_public_bot_by_id(bot_id)
current_time = get_current_time()
# Store alias when opened shared bot page
store_alias(
user_id,
BotAliasModel(
id=bot.id,
title=bot.title,
description=bot.description,
original_bot_id=bot_id,
create_time=current_time,
last_used_time=current_time,
is_pinned=False,
sync_status=bot.sync_status,
has_knowledge=bot.has_knowledge(),
),
)
return BotSummaryOutput(
id=bot_id,
title=bot.title,
description=bot.description,
create_time=bot.create_time,
last_used_time=bot.last_used_time,
is_pinned=False, # NOTE: Shared bot is not pinned by default.
is_public=True,
has_agent=bot.is_agent_enabled(),
owned=False,
sync_status=bot.sync_status,
has_knowledge=bot.has_knowledge(),
)
except RecordNotFoundError:
raise RecordNotFoundError(
f"Bot with ID {bot_id} not found in both private (for user {user_id}) and alias, shared items."
)