MCPcopy Create free account
hub / github.com/pollinations/pollinations / PollyBot

Class PollyBot

apps/polly/src/bot.py:480–659  ·  view source on GitHub ↗

Discord bot for GitHub Issues bridge with tool calling.

Source from the content-addressed store, hash-verified

478
479
480class PollyBot(commands.Bot):
481 """Discord bot for GitHub Issues bridge with tool calling."""
482
483 def __init__(self):
484 intents = discord.Intents.default()
485 intents.message_content = True
486 super().__init__(command_prefix="!", intents=intents)
487 self.issue_notifier = None
488 self.webhook_server = None
489 self._api_server = None
490
491 async def setup_hook(self):
492 """Called when the bot is starting up."""
493 # Initialize GitHub App auth if configured
494 if config.use_github_app:
495 init_github_app(
496 app_id=config.github_app_id,
497 private_key=config.github_private_key,
498 installation_id=config.github_installation_id,
499 )
500 logger.info("GitHub App authentication initialized")
501 else:
502 logger.info("Using GitHub PAT authentication")
503
504 # Register tool handlers with pollinations client
505 for name, handler in TOOL_HANDLERS.items():
506 pollinations_client.register_tool_handler(name, handler)
507 logger.info(f"Registered {len(TOOL_HANDLERS)} GitHub tool handlers")
508
509 # Register code_search handler if embeddings enabled
510 if config.local_embeddings_enabled:
511 pollinations_client.register_tool_handler("code_search", _code_search_handler)
512 logger.info("Registered code_search tool handler (embeddings enabled)")
513
514 # Register doc_search handler if doc embeddings enabled
515 if config.doc_embeddings_enabled:
516 pollinations_client.register_tool_handler("doc_search", _doc_search_handler)
517 logger.info("Registered doc_search tool handler (doc embeddings enabled)")
518
519 # Register web_search handler (always available)
520 from .services.pollinations import web_search_handler
521
522 pollinations_client.register_tool_handler("web_search", web_search_handler)
523 logger.info("Registered web_search tool handler")
524
525 # Register web_scrape handler (always available - Crawl4AI powered)
526 from .services.web_scraper import web_scrape_handler
527
528 pollinations_client.register_tool_handler("web_scrape", web_scrape_handler)
529 logger.info("Registered web_scrape tool handler (Crawl4AI)")
530
531 # Register render_visual handler (always available).
532 # Old tool name aliased for back-compat with cached AI sessions.
533 from .services.charts import data_visualization, render_visual
534
535 pollinations_client.register_tool_handler("render_visual", render_visual)
536 pollinations_client.register_tool_handler("data_visualization", data_visualization)
537 logger.info("Registered render_visual tool handler (data_visualization alias)")

Callers 1

bot.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected