{ "info": { "author": "Or Bin, Meir Halachmi", "author_email": "orbin50@gmail.com, meir.halachmi@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: End Users/Desktop", "Intended Audience :: Other Audience", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Topic :: Communications :: Chat" ], "description": "# gramhopper\n[![image](https://img.shields.io/pypi/v/gramhopper.svg)](https://pypi.org/project/gramhopper/)\n[![image](https://img.shields.io/pypi/l/gramhopper.svg)](https://pypi.org/project/gramhopper/)\n[![image](https://img.shields.io/pypi/pyversions/gramhopper.svg)](https://pypi.org/project/gramhopper/)\n\nA bot platform for automatic responses based on various triggers.\n\n## Install\n#### Using pip\nInstall the latest version:\n```bash\n$ pip install gramhopper\n```\n\n#### Using docker\nPull the latest image: \n```bash\n$ docker pull orbin/gramhopper:latest\n```\n\n## Configure\n\n### Create a bot\n1. [Create a bot using BotFather](https://core.telegram.org/bots#6-botfather).\n2. Save the received token in `~/.gramphopper/token.txt`.\n3. Enable receiving messages from groups for the bot by sending `/setprivacy` to BotFather,\n then select the new bot and click `Disable`. \n\n### Enable nicknames for user-based rules\nTo use user nicknames, you have to get the user IDs first.\n\n#### Getting user ID in Telegram\nGetting a Telegram user ID can be done using [@userinfobot](https://telegram.me/userinfobot):\n* Go to [@userinfobot](https://telegram.me/userinfobot) and press \"START\". \n The bot will then print your user ID.\n* To get the user ID of another user, just forward a message from this user and the bot will print their user ID. \n\n#### Mapping nicknames to user IDs\nTo use user nicknames, `~/.gramphopper/users.json` should contain an object in which the keys \nare nicknames and the values are user IDs, for example:\n```json\n{\n \"nickname1\": 123456789,\n \"nickname2\": 987654321\n}\n``` \n\n### Rules configuration\nThe configuration file is located at `~/.gramphopper/rules.yml`.\n\nBasically, the configuration file has three parts:\n* **Global triggers**: triggers that can be used in rules without redefining.\n* **Global responses**: responses that can be used in rules without redefining.\n* **Rules**: Pairs of triggers and responses, which define together what triggers the bot and how it responds.\n\n#### `rules.yml` example\nThe following configuration file:\n```yaml\ntriggers:\n - name: cat\n type: text.has_exact_word\n word:\n - Meow\n - meow\n\n - name: duck\n type: text.has_exact_word\n word: Quack\n\nresponses:\n - name: found_dog\n type: preset.reply\n preset_response:\n - Hey, here's a dog!\n\nrules:\n # Identifies a cat (a global \"cat\" trigger) and sends \"Hello cat!\" (an inline response).\n - trigger: cat\n response:\n type: preset.message\n preset_response: Hello cat!\n\n # Identifies a dog (an inline trigger) and replies \"Hey, here's a dog!\"\n # (a global \"found_dog\" response).\n - trigger:\n type: text.has_substring\n substring:\n - Woof\n - woof\n - Ruff\n - ruff\n response: found_dog\n\n # Identifies an animal sound (an inline trigger) and replies \n # 'I hear \"(the animal sound)\"' (an inline response), with a 30% probability.\n - trigger:\n type: text.regexp\n pattern: ^(Quack|Meow|Woof|Moo)$\n response:\n type: match.message\n template: I hear \"{0}\"\n probability: 0.3\n\n # Identifies 5 occurrences in 60 seconds of a duck sound (an inline event_streak\n # trigger that uses a global \"duck\" trigger\") and replies \"Shut up duck!\".\n - trigger:\n type: event_streak\n counting_event_trigger: duck\n streak_timeout_sec: 60\n event_count: 5\n response:\n type: preset.message\n preset_response: Shut up duck!\n```\nwill yield the following conversation:\n\n![](https://raw.githubusercontent.com/OrBin/gramhopper/master/demo.gif \"Conversation example\")\n\n\n## Run\nTo run gramhopper, just run:\n#### From installed package\n\n```bash\n$ gramhopper\n```\n\n#### From docker image\n```bash\n$ docker run -it -v /your/configuration/dir:/root/.gramhopper orbin/gramhopper:latest\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/OrBin/gramhopper", "keywords": "gramhopper telegram bot", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "gramhopper", "package_url": "https://pypi.org/project/gramhopper/", "platform": "", "project_url": "https://pypi.org/project/gramhopper/", "project_urls": { "Homepage": "https://github.com/OrBin/gramhopper" }, "release_url": "https://pypi.org/project/gramhopper/2.0.1/", "requires_dist": [ "python-telegram-bot (==11.1.0)", "boolean.py (==3.6)", "ruamel-yaml (~=0.15)" ], "requires_python": "", "summary": "A bot platform for automatic responses based on various triggers", "version": "2.0.1" }, "last_serial": 5371075, "releases": { "1.0.1": [ { "comment_text": "", "digests": { "md5": "6363adbae7e105459db3391f977e03ba", "sha256": "99b3f59a4cca7b9981ff1bdb3a19f3e14c3c8da88d387f64f2d793d4f03640f8" }, "downloads": -1, "filename": "gramhopper-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6363adbae7e105459db3391f977e03ba", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18942, "upload_time": "2019-01-29T21:16:15", "url": "https://files.pythonhosted.org/packages/d4/b1/536533ead39d34a13c6cd91d5d03a863208b10c6ac4e4a4e8b33221861af/gramhopper-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5159a7454b1674b6f54b30ef12536e3f", "sha256": "0ee11d046f0209501de47957464a20e93b3b38efe68acc78019f25cef2eb2bb3" }, "downloads": -1, "filename": "gramhopper-1.0.1.tar.gz", "has_sig": false, "md5_digest": "5159a7454b1674b6f54b30ef12536e3f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12179, "upload_time": "2019-01-29T21:16:17", "url": "https://files.pythonhosted.org/packages/18/8b/e835eb92e66ac6a09dfab9681e1f0e3cbd4c9cdd0c675cf6890a351921b6/gramhopper-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "3fb0131923ca78f354a86925743739bf", "sha256": "8b3cf1015f96fa56c563e9645589ff89bf901f2d2d7ec16d64fe585e451a437c" }, "downloads": -1, "filename": "gramhopper-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3fb0131923ca78f354a86925743739bf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18962, "upload_time": "2019-01-29T21:50:08", "url": "https://files.pythonhosted.org/packages/5d/9b/f53037824fb0f9f2429f6e984654b01e9ed9d7f636fae1e53b4e6fdb8c6f/gramhopper-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "740a24c9ac3fa9850a3ada12149ad4db", "sha256": "305c6ad327084b89c3b541521f836621da03ab59d3ac346323a30cb9a5614e42" }, "downloads": -1, "filename": "gramhopper-1.0.2.tar.gz", "has_sig": false, "md5_digest": "740a24c9ac3fa9850a3ada12149ad4db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12196, "upload_time": "2019-01-29T21:50:09", "url": "https://files.pythonhosted.org/packages/20/58/5453b63f336ba49ed904c74d3f3dd122aaa508eec4b341f97623d73c53ed/gramhopper-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "dd2d919d230ebfff16be29d1bb3b09b8", "sha256": "a6f5d31bb2d3fff0206e7276425ebd5003f9ee718490c1dfbb1534dcb525fe59" }, "downloads": -1, "filename": "gramhopper-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "dd2d919d230ebfff16be29d1bb3b09b8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18962, "upload_time": "2019-01-29T21:53:53", "url": "https://files.pythonhosted.org/packages/4b/84/288b89fcf9fc2832c6196b8b6c02e154e03c0490907783fbb47d6f93c57e/gramhopper-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b4de612045364062c4ad936a89d03c13", "sha256": "ed3a56dc18c5edf4b7383145636ee95bf779f4c31bf873d8036c350d104eb2f3" }, "downloads": -1, "filename": "gramhopper-1.0.3.tar.gz", "has_sig": false, "md5_digest": "b4de612045364062c4ad936a89d03c13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12209, "upload_time": "2019-01-29T21:53:55", "url": "https://files.pythonhosted.org/packages/9b/71/253d764f48e4e4266d7ea70111cb22954b47512e56040e336b5377c25cbd/gramhopper-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "614d2bbb981f5bf37caed6d9d6563f2c", "sha256": "627b62e966091b00e6eae06e180a7eaee2c6e47de75c62945c15735f9a6479b8" }, "downloads": -1, "filename": "gramhopper-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "614d2bbb981f5bf37caed6d9d6563f2c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18962, "upload_time": "2019-01-29T21:56:03", "url": "https://files.pythonhosted.org/packages/40/d4/91100e09c30a2da948d6af81e93a714acd043f1170e94ba69854141a588a/gramhopper-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2bcba479c9b557352834e280110aeaed", "sha256": "ed7f5cf09fdec6ec8e27bc41e619f0312565a04b6a3e5ac2326e38f24de0f425" }, "downloads": -1, "filename": "gramhopper-1.0.4.tar.gz", "has_sig": false, "md5_digest": "2bcba479c9b557352834e280110aeaed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12204, "upload_time": "2019-01-29T21:56:05", "url": "https://files.pythonhosted.org/packages/b8/be/71697dc2b8322847704a0e8e504d2ff6cbe3ee9be3aa2c8910f6f3a17979/gramhopper-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "1200066b375f67f365c7e4db56aa2244", "sha256": "a99c6be9a85fbe58afb77f6c8ad9103315085ecc7735d2cc2e4d0ccb8cafa54e" }, "downloads": -1, "filename": "gramhopper-1.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "1200066b375f67f365c7e4db56aa2244", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18116, "upload_time": "2019-03-01T10:57:39", "url": "https://files.pythonhosted.org/packages/b3/56/f2c35c65a5022a48ecf484d3dce2cc693acdb4d28d48df7697dfd032405d/gramhopper-1.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6ebb5b530724983dccad3d0919534ff5", "sha256": "d9774169d25ec49a996ae39f4b828a96261bae08b78e8fdfbc84df210a89100e" }, "downloads": -1, "filename": "gramhopper-1.0.5.tar.gz", "has_sig": false, "md5_digest": "6ebb5b530724983dccad3d0919534ff5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11343, "upload_time": "2019-03-01T10:57:40", "url": "https://files.pythonhosted.org/packages/86/24/a28626e06d6ace8bdb65a67e71772a5fe31d762cacc6e9c7eb032c368665/gramhopper-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "63c409cc088ae491dea7a406bb325cff", "sha256": "844eb4f720b107ff2acaf1c788952754e35a702bdaafa3fe0571bdfa81c2c70e" }, "downloads": -1, "filename": "gramhopper-1.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "63c409cc088ae491dea7a406bb325cff", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21112, "upload_time": "2019-03-20T05:45:26", "url": "https://files.pythonhosted.org/packages/4b/c4/1661fc7235ff20b87254947da417694289e0284706a78f779157bf85bd53/gramhopper-1.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a8bb45e54d5557d0ba279dc7587cba14", "sha256": "d4391c3b2ba231c75c8851dcac16fbce85037560bc27e608ccbd5be021fd7807" }, "downloads": -1, "filename": "gramhopper-1.0.6.tar.gz", "has_sig": false, "md5_digest": "a8bb45e54d5557d0ba279dc7587cba14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13511, "upload_time": "2019-03-20T05:45:27", "url": "https://files.pythonhosted.org/packages/9a/95/12e70684c015a72cf587dc16a9d92549130adb02bc9bec0b51e17152c7e7/gramhopper-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "69bd4f3070b7e93c981a82524ab217d1", "sha256": "aac74afee02b497ac4489b089d1cfe229e27228254d67fd4e225a584f3022a1b" }, "downloads": -1, "filename": "gramhopper-1.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "69bd4f3070b7e93c981a82524ab217d1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21133, "upload_time": "2019-03-23T12:44:41", "url": "https://files.pythonhosted.org/packages/d5/f0/5a1287f4ace7d809af2ad1594e33df3d9014f0fdee7897d430744e57ced4/gramhopper-1.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c6af5a74694e6dee6d83160042b9df69", "sha256": "11cb1f6ce786705ed1784c03cdaeaf4f5fb7a4c1351b685f5ce0715db8fca4f9" }, "downloads": -1, "filename": "gramhopper-1.0.7.tar.gz", "has_sig": false, "md5_digest": "c6af5a74694e6dee6d83160042b9df69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13538, "upload_time": "2019-03-23T12:44:43", "url": "https://files.pythonhosted.org/packages/16/00/5edaa2dfe2ee48eb3b5acc8d92d464e13f0f5e680343b7c91b3b66d56993/gramhopper-1.0.7.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "d7a1bec9f683ccf7fe8349c9dcbef1dc", "sha256": "9d1c9351bddfa2ed94effd48e464ac7864dc5f19a287c6d4c4ad495e22244d7a" }, "downloads": -1, "filename": "gramhopper-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d7a1bec9f683ccf7fe8349c9dcbef1dc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23110, "upload_time": "2019-06-07T10:14:54", "url": "https://files.pythonhosted.org/packages/ff/94/2581e58784be4137271c4ded2cb1d7bbc54ff2fbda0c120e4095dd41d10e/gramhopper-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0e4ca3d2e3059bf0044d93b62b1762f", "sha256": "872c080a188d838a7be6bcb7cbcb0e6fb411dbfbced1099acecc9bf1943b9589" }, "downloads": -1, "filename": "gramhopper-2.0.0.tar.gz", "has_sig": false, "md5_digest": "f0e4ca3d2e3059bf0044d93b62b1762f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14805, "upload_time": "2019-06-07T10:14:58", "url": "https://files.pythonhosted.org/packages/15/34/de169b77a450b3c236187b3045fd15b0cfbb954baf3377a0e42c6c56359b/gramhopper-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "eb09a68c09a589a644dc1bac7d4ceea8", "sha256": "6937b59bfd06599bed7b59dd2fcfcc18f62c2cec182fb203b6a7c1aa5d227023" }, "downloads": -1, "filename": "gramhopper-2.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "eb09a68c09a589a644dc1bac7d4ceea8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23108, "upload_time": "2019-06-07T11:28:43", "url": "https://files.pythonhosted.org/packages/14/6e/161d2f1410c893126f23150666fca978e18e64be4c9611b847baefae50ca/gramhopper-2.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a4d058324df9fa0e1f81e62302888833", "sha256": "aeae5eb1c059fb6837bdc7f3f7e1b6ba198e550c48e359563f0ec0ea6c51e3af" }, "downloads": -1, "filename": "gramhopper-2.0.1.tar.gz", "has_sig": false, "md5_digest": "a4d058324df9fa0e1f81e62302888833", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14801, "upload_time": "2019-06-07T11:28:45", "url": "https://files.pythonhosted.org/packages/0f/1b/b011bfbf56907a58dc97149bbdbd8c6b22b30d7159761a58fc14fd7ab107/gramhopper-2.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "eb09a68c09a589a644dc1bac7d4ceea8", "sha256": "6937b59bfd06599bed7b59dd2fcfcc18f62c2cec182fb203b6a7c1aa5d227023" }, "downloads": -1, "filename": "gramhopper-2.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "eb09a68c09a589a644dc1bac7d4ceea8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23108, "upload_time": "2019-06-07T11:28:43", "url": "https://files.pythonhosted.org/packages/14/6e/161d2f1410c893126f23150666fca978e18e64be4c9611b847baefae50ca/gramhopper-2.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a4d058324df9fa0e1f81e62302888833", "sha256": "aeae5eb1c059fb6837bdc7f3f7e1b6ba198e550c48e359563f0ec0ea6c51e3af" }, "downloads": -1, "filename": "gramhopper-2.0.1.tar.gz", "has_sig": false, "md5_digest": "a4d058324df9fa0e1f81e62302888833", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14801, "upload_time": "2019-06-07T11:28:45", "url": "https://files.pythonhosted.org/packages/0f/1b/b011bfbf56907a58dc97149bbdbd8c6b22b30d7159761a58fc14fd7ab107/gramhopper-2.0.1.tar.gz" } ] }