{"id":26509969,"url":"https://github.com/nuhmanpk/pyrokit","last_synced_at":"2025-03-21T01:38:49.012Z","repository":{"id":282264338,"uuid":"773253120","full_name":"nuhmanpk/pyrokit","owner":"nuhmanpk","description":"All-in-one utility toolkit designed specifically for Pyrogram-based Telegram bots. As a complete bot builder kit, it offers a robust suite of ready-to-use, highly customizable features","archived":false,"fork":false,"pushed_at":"2025-03-13T16:44:26.000Z","size":148,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-13T16:48:14.583Z","etag":null,"topics":["bot-builder","pypi-package","pyrogram-bot","pyrogram-userbotplugin","telegram-bot"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/pyrokit","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nuhmanpk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-17T06:36:44.000Z","updated_at":"2025-03-13T16:44:29.000Z","dependencies_parsed_at":"2025-03-13T16:48:16.617Z","dependency_job_id":"06b2afef-cf51-4f98-a2b2-b2bb2d8ba6ef","html_url":"https://github.com/nuhmanpk/pyrokit","commit_stats":null,"previous_names":["nuhmanpk/pyrokit"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuhmanpk%2Fpyrokit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuhmanpk%2Fpyrokit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuhmanpk%2Fpyrokit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuhmanpk%2Fpyrokit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nuhmanpk","download_url":"https://codeload.github.com/nuhmanpk/pyrokit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244722684,"owners_count":20499151,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot-builder","pypi-package","pyrogram-bot","pyrogram-userbotplugin","telegram-bot"],"created_at":"2025-03-21T01:38:48.461Z","updated_at":"2025-03-21T01:38:49.003Z","avatar_url":"https://github.com/nuhmanpk.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pyrokit\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/nuhmanpk/pyrokit/blob/main/images/logo.jpeg?raw=true\" width=\"400\" height=\"400\" /\u003e\n\u003c/p\u003e\n\n  ![PyPI](https://img.shields.io/pypi/v/pyrokit)\n  ![Downloads](https://img.shields.io/pypi/dm/pyrokit)\n  ![License](https://img.shields.io/github/license/nuhmanpk/pyrokit)\n  ![Dependencies](https://img.shields.io/librariesio/github/nuhmanpk/pyrokit)\n  ![Python Versions](https://img.shields.io/pypi/pyversions/pyrokit)\n  ![Known Vulnerabilities](https://snyk.io/test/github/nuhmanpk/pyrokit/badge.svg)\n  ![Last Commit](https://img.shields.io/github/last-commit/nuhmanpk/pyrokit)\n  ![Contributors](https://img.shields.io/github/contributors/nuhmanpk/pyrokit)\n\n\n## Usecase\n\n```py\nfrom pyrokit import PyroKit\n\nAPI_ID = 123456           # Replace with your API_ID\nAPI_HASH = \"your_api_hash\"  # Replace with your API_HASH\nTOKEN = \"my_bot_session\"\n\napp = Client(TOKEN, API_ID, API_HASH)\n\nkit = PyroKit()\n\n@app.on_message(filters.command(\"clean\"))\n@kit.ensure_admin(permissions=[\"can_delete_messages\"])\n@auto_flood\n@rate_limit(5, 60)\nasync def clean_command(client: Client, message: Message):\n    \"\"\"Delete multiple messages with progress\"\"\"\n    progress_msg = await message.reply(\"🧹 Cleaning...\")\n    \n    async def progress(current, total):\n        bar, perc = await kit.create_progress_bar(current, total)\n        await kit.edit_or_resend(progress_msg, f\"Cleaning: {bar} {perc}%\")\n    \n    await client.delete_messages(\n        chat_id=message.chat.id,\n        message_ids=range(message.message_id-10, message.message_id),\n        progress=progress\n    )\n    await kit.safe_delete(progress_msg)\n\n@app.on_callback_query(filters.regex(r\"^page_\\d+\"))\n@kit.async_retry(max_retries=3)\nasync def handle_pagination(client: Client, query: CallbackQuery):\n    \"\"\"Handle inline keyboard pagination\"\"\"\n    page = int(query.data.split(\"_\")[1])\n    content = f\"Page {page} content\"\n    buttons = kit.inline_keyboard([\n        [(\"Previous\", f\"page_{page-1}\"), (\"Next\", f\"page_{page+1}\")]\n    ])\n    await kit.answer_query(query, f\"Switched to page {page}\")\n    await kit.edit_or_resend(query.message, content, reply_markup=buttons)\n\n# ==================== MAIN EXECUTION ====================\nif __name__ == \"__main__\":\n    logging.basicConfig(level=logging.INFO)\n    app.run()\n```\n\n\n## PyroKit Documentation\n    \n    A comprehensive utility toolkit for Pyrogram bot development\n    \n    1. Core Features:\n    -----------------\n    - Automated flood control\n    - Rate limiting with multiple strategies\n    - Admin permission verification\n    - Async error retry mechanism\n    - Smart message management\n    \n    2. Advanced Features:\n    ---------------------\n    - Database integration with connection pooling\n    - Multi-language localization support\n    - Error reporting to webhooks\n    - File validation and temp file management\n    - Inline query pagination\n    - Middleware processing pipeline\n    - Stateful conversation handlers\n    \n    3. Usage Examples:\n    ------------------\n    3.1 Database Integration:\n    @app.on_message(filters.command(\"stats\"))\n    @kit.with_db\n    async def show_stats(client, message, db):\n        count = await db.fetchval(\"SELECT COUNT(*) FROM users\")\n        await message.reply(f\"Total users: {count}\")\n    \n    3.2 Localization:\n    @app.on_message(filters.command(\"help\"))\n    @kit.localized(fallback_lang='en')\n    async def help_command(client, message, lang):\n        await message.reply(lang['help_text'])\n    \n    3.3 Error Reporting:\n    @app.on_message(filters.command(\"danger\"))\n    @kit.error_webhook(\"https://errors.example.com\")\n    async def risky_command(client, message):\n        # Potentially error-prone code\n        ...\n    \n    4. Configuration:\n    -----------------\n    Initialize with custom config:\n    config = {\n        'temp_dir': 'my_temp_files',\n        'max_file_size': 5_000_000_000,\n        'db_dsn': 'postgres://user:pass@localhost/db'\n    }\n    kit = PyroKit(config)\n    \n    5. Best Practices:\n    ------------------\n    - Use @safe_delete for message cleanup\n    - Always validate downloaded files\n    - Use middleware for analytics tracking\n    - Implement rate limiting on public endpoints\n    - Store user-specific data in conversation states\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnuhmanpk%2Fpyrokit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnuhmanpk%2Fpyrokit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnuhmanpk%2Fpyrokit/lists"}