{ "info": { "author": "Aaron Hosford", "author_email": "hosford42@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Telecommunications Industry", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Communications :: Chat", "Topic :: Communications :: Email", "Topic :: Internet :: XMPP", "Topic :: Multimedia", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Scientific/Engineering :: Human Machine Interfaces", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: User Interfaces", "Topic :: Text Processing :: Linguistic" ], "description": "# Chatty\n\n*A multi-platform chat bot framework*\n\n\n## Description\n\nChatty is a Python 3 package designed to map any chat platform to the same\nstandardized interface. The goal is to allow a chat bot to be remapped \nfrom one platform to another, or even to multiple platforms at the same time, \nwith nothing more than a minor change in configuration.\n\n\nChatty is organized around 3 core abstractions:\n\n* **Signals**: A signal is any single indivisible element of communication,\n such as a message or a notification, which may or may not contain\n content or data of some sort. Signals always come with certain attached\n *metadata* which indicates where the signal originated, who it was\n sent to, when it was sent, etc.\n* **Bots**: A bot is an endpoint where inbound signals are handled, and\n outbound signals are generated.\n* **Sessions**: A session is an open channel over which signals can be\n sent and/or received by a bot.\n\n\n## Usage\n\n```python\nfrom chatty.bots.decorator import as_bot\nfrom chatty.configuration import get_config\nfrom chatty.sessions.slack import SlackSession\nfrom chatty.signals.message import Message\nfrom chatty.signals.metadata import SignalMetaData\n\n\n# FRIENDLY REMINDER: Never store bot tokens or login passwords in your source\n# code, and be careful that they aren't in a place where they could get picked \n# up by source control!\n\n# Load the bot's handle and login token from the config file.\nhandle, token = get_config('Slack', '~/.chatty_config', ['handle'], ['token'])\n\n\n@as_bot\ndef converse(session, signal):\n \"\"\"Say 'hi!' back on the same channel whenever someone says 'hello'\"\"\"\n if isinstance(signal, Message) and 'hello' in str(signal.content).lower():\n meta_data = SignalMetaData(\n origin=handle,\n addressees=[signal.meta_data.room or signal.meta_data.origin],\n response_to=signal.meta_data.identifier\n )\n return Message(meta_data, 'hi!')\n\n\nsession = SlackSession(token) # Create a new Slack session\nsession.add_bot(converse) # Connect our bot to it\nsession.join(timeout=5 * 60) # Hang out for 5 minutes\nsession.close() # Drop offline\n```\n\n\n## Current Development Status\n\nChatty is brand new, and has currently only been tested for basic messaging\nvia email (imap & smtp), xmpp, and Slack. See the [TODO list] for a list of \nother platforms that should eventually be supported.\n\n\n## Contributing\n\nIf you have a need for a specific platform or protocol to be supported,\nI'll be happy to accept pull requests. If you're looking to contribute \nbut need a place to start, please see the [TODO list]. There are plenty of \nplatforms and functionality yet to be added. Each supported platform has \nits own module in the [chatty/sessions] folder, and its dependencies \nshould be added to the `extras_require` parameter in [setup.py]. Tests\ngo in the [test_chatty] folder and are named with `test_` prefixed to the \nname of the module being tested. \n\nSubmitted code should adhere to [pep8 guidelines] and should, in general,\nfollow the conventions established elsewhere in the Chatty code base. For \nthe sake of clarity, please note that by submitting a pull request, you \nagree, as per standard practice (and also the [GitHub terms of service]) \nto make your code available under the same [license] that governs this \nproject.\n\n\n[chatty/sessions]: https://github.com/hosford42/Chatty/tree/master/chatty/sessions\n[GitHub terms of service]: https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license\n[license]: https://github.com/hosford42/Chatty/blob/master/LICENSE\n[pep8 guidelines]: https://www.python.org/dev/peps/pep-0008/\n[setup.py]: https://github.com/hosford42/Chatty/blob/master/setup.py\n[test_chatty]: https://github.com/hosford42/Chatty/tree/master/test_chatty \n[TODO list]: https://github.com/hosford42/Chatty/blob/master/TODO.md\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://pypi.org/project/Chatty", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/hosford42/Chatty", "keywords": "chat bot chatbot AI artificial intelligence email xmpp IM message text messaging framework slack session conversation interactive platform multi-platform window local remote protocol", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "Chatty", "package_url": "https://pypi.org/project/Chatty/", "platform": "", "project_url": "https://pypi.org/project/Chatty/", "project_urls": { "Download": "https://pypi.org/project/Chatty", "Homepage": "https://github.com/hosford42/Chatty" }, "release_url": "https://pypi.org/project/Chatty/0.2/", "requires_dist": [ "tzlocal", "slackclient (>=1.2); extra == 'slack'", "tkinter (>=8.6); extra == 'tkinter'", "sleekxmpp (>=1.3); extra == 'xmpp'", "dnspython (>=1.15); extra == 'xmpp'", "pyasn1 (>=0.4); extra == 'xmpp'", "pyasn1-modules (>=0.2); extra == 'xmpp'" ], "requires_python": "", "summary": "A multi-platform chat bot framework", "version": "0.2" }, "last_serial": 3915361, "releases": { "0.0": [ { "comment_text": "", "digests": { "md5": "63862f42f691e253d3dfb8e6d1c05827", "sha256": "105a9ba47325e0273167a42a614b38698a84218fe688ebf31c386dc100ae2f01" }, "downloads": -1, "filename": "Chatty-0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "63862f42f691e253d3dfb8e6d1c05827", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2808, "upload_time": "2018-05-27T05:02:34", "url": "https://files.pythonhosted.org/packages/c3/9d/be613167d8294ee60ed89a44150d9c3236e026183608cb8ff8f09e599a0a/Chatty-0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "80a9a24e709b85b47f84121459e6b688", "sha256": "ab1bdf3ee4427847beb899dfe7231e8b709119b860218b97542745908a89d5e8" }, "downloads": -1, "filename": "Chatty-0.0.tar.gz", "has_sig": false, "md5_digest": "80a9a24e709b85b47f84121459e6b688", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3352, "upload_time": "2018-05-27T05:02:35", "url": "https://files.pythonhosted.org/packages/0a/14/dbdb2b6fe52ef374757cc5f8136d829abf8adfce1c558a4b247d8f7292b7/Chatty-0.0.tar.gz" } ], "0.0.1": [ { "comment_text": "", "digests": { "md5": "04c31246c975fbd8411cdefec864ddb3", "sha256": "1c2de3e936ff37757176a3a00a90d86a0d25f413ecf6c6ff9c6fdc5d14433c30" }, "downloads": -1, "filename": "Chatty-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "04c31246c975fbd8411cdefec864ddb3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24271, "upload_time": "2018-05-27T18:58:46", "url": "https://files.pythonhosted.org/packages/13/b2/886b07e576a9ee409b13ce52bbf192b5f8d54f05b5712b0d184bf808ec09/Chatty-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e5639d02a3655fe7d5c19e965ed0bcb1", "sha256": "9443e28e61cee45a51411870e3ab068d95b192846abf6908e782b9b04fc1d2d6" }, "downloads": -1, "filename": "Chatty-0.0.1.tar.gz", "has_sig": false, "md5_digest": "e5639d02a3655fe7d5c19e965ed0bcb1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14620, "upload_time": "2018-05-27T18:58:54", "url": "https://files.pythonhosted.org/packages/17/eb/a2fdad1c918191c3cb95a3a57782295b8979f024a1714844d795357ac73c/Chatty-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "d7cfc1edfc60f7e95650d9ca53626df7", "sha256": "a384a75697401765569f82e6489b782bc4edc1429cdb38fb2f0bd0a15a968048" }, "downloads": -1, "filename": "Chatty-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d7cfc1edfc60f7e95650d9ca53626df7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24292, "upload_time": "2018-05-27T19:08:29", "url": "https://files.pythonhosted.org/packages/fe/08/438de4c91cabf3c6f609ce4ff7bf9660602f62b6610e213e290ff3be5cfa/Chatty-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a586f1775821fc6b70bafd21f0919438", "sha256": "b9cbda85ef7d658dbde7e9c22f044ee1aa001aa8acddec55f0040565ff969a87" }, "downloads": -1, "filename": "Chatty-0.0.2.tar.gz", "has_sig": false, "md5_digest": "a586f1775821fc6b70bafd21f0919438", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14660, "upload_time": "2018-05-27T19:08:31", "url": "https://files.pythonhosted.org/packages/75/35/5fca53272152dc7998522bf7bfd8553a6daa27fe44c8a1d06f961b638a64/Chatty-0.0.2.tar.gz" } ], "0.1": [ { "comment_text": "", "digests": { "md5": "86df05c3a253e1cdc0ad863e092c6e9c", "sha256": "d33f7bb21c1e6d54579b469e7da592cd6fffa99526bfdbfe7b52277cb36c5c0a" }, "downloads": -1, "filename": "Chatty-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "86df05c3a253e1cdc0ad863e092c6e9c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26747, "upload_time": "2018-05-28T03:12:24", "url": "https://files.pythonhosted.org/packages/a4/be/d8a9631cab46d333fd2aca855614ee8523cffe8945b5ef1331df07bde960/Chatty-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a8ee44b22cc453d483a98cc28c008d87", "sha256": "26510c5fe929e61b7ec679a944ae7692c6bce1cefa821701ef792a8ee79db41a" }, "downloads": -1, "filename": "Chatty-0.1.tar.gz", "has_sig": false, "md5_digest": "a8ee44b22cc453d483a98cc28c008d87", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15958, "upload_time": "2018-05-28T03:12:09", "url": "https://files.pythonhosted.org/packages/34/0d/76142f32930762c2b937f90daef35de3aad983fe897aee455971183fba67/Chatty-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "50992ad202e0f989ca987f4fc61f944f", "sha256": "890f804bd8dae509817a06e1db2e1b750c8061692379e2323a47309e2411085a" }, "downloads": -1, "filename": "Chatty-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "50992ad202e0f989ca987f4fc61f944f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28111, "upload_time": "2018-05-28T20:09:18", "url": "https://files.pythonhosted.org/packages/97/62/71d3617cb26d524c79234cb998e46d78cd4d21df1eadb33a2f4907ed643b/Chatty-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af00c6e493cdbb10f67ed7aac268aeb5", "sha256": "e0659edbe3ec18ce2ea6a7e272f6605956595883c979c719edc3fbe546cb2f5d" }, "downloads": -1, "filename": "Chatty-0.1.1.tar.gz", "has_sig": false, "md5_digest": "af00c6e493cdbb10f67ed7aac268aeb5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16345, "upload_time": "2018-05-28T20:09:19", "url": "https://files.pythonhosted.org/packages/a0/23/abe01cae5f0d10509c4c6514aac9db01f940e963533deec8f5ca033aea55/Chatty-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "08e9b6d1958f66c9741051ff4afd1753", "sha256": "bff50a26289466372917b616f07f09a7406151608fb01806a35eff80011b9b10" }, "downloads": -1, "filename": "Chatty-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "08e9b6d1958f66c9741051ff4afd1753", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29003, "upload_time": "2018-05-29T03:43:44", "url": "https://files.pythonhosted.org/packages/95/69/4c1d9c638fc5f4100f8f2224ba920a23aa023e5bf8b53ffa32f08af05629/Chatty-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4dafb3f72c927742d798a2b57e5ece75", "sha256": "42f13d44146b66283d0a26f9ee120aebb0033ff40846aa34e4dcb7b054060f31" }, "downloads": -1, "filename": "Chatty-0.1.2.tar.gz", "has_sig": false, "md5_digest": "4dafb3f72c927742d798a2b57e5ece75", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17058, "upload_time": "2018-05-29T03:43:46", "url": "https://files.pythonhosted.org/packages/2e/62/e2e9f308f0d40317ad66f129998f098cb1336da942d0469f9c8aeb72bc28/Chatty-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "ad0c09e4a23dbf2a347e87124b3f3065", "sha256": "cdc3eacd07085c14e4469c14d18aeef1f6cd277f240f9694b3c196526512e1ec" }, "downloads": -1, "filename": "Chatty-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "ad0c09e4a23dbf2a347e87124b3f3065", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29786, "upload_time": "2018-05-29T05:41:51", "url": "https://files.pythonhosted.org/packages/96/6d/d1c66f75ff48996a4fca370a32bc03638eb4568868e6fdd337f112dfaa52/Chatty-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "48fdc1e86ffee2e083cb8b98464d6cab", "sha256": "c8b94bf237245b512186221994a3926db62d6a19a1a9870a056bbf6b0f4a2d8b" }, "downloads": -1, "filename": "Chatty-0.1.3.tar.gz", "has_sig": false, "md5_digest": "48fdc1e86ffee2e083cb8b98464d6cab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17333, "upload_time": "2018-05-29T05:41:53", "url": "https://files.pythonhosted.org/packages/5d/7e/b9cb70485f3c0e7f0b29a0194a91e9003c59765aa80b59dd282bc397843e/Chatty-0.1.3.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "3dc156a93f2600a27830322996c5c9d3", "sha256": "3f2fe962cefd38dc46b743dbc42be851f11b2fd95925a9b2b476395db06ce7d9" }, "downloads": -1, "filename": "Chatty-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3dc156a93f2600a27830322996c5c9d3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 30777, "upload_time": "2018-05-31T01:29:39", "url": "https://files.pythonhosted.org/packages/f7/41/4a79d0db7b8e24f55385088e457a3bac235ad9112f533f95ddfe91bf53c1/Chatty-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a17c99653a40f9c787c1894bf069803", "sha256": "7dc221940abcedfa1f7cd32f95606d2bf73278dfc33367986d8a92ec63fd5978" }, "downloads": -1, "filename": "Chatty-0.2.tar.gz", "has_sig": false, "md5_digest": "4a17c99653a40f9c787c1894bf069803", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18217, "upload_time": "2018-05-31T01:29:41", "url": "https://files.pythonhosted.org/packages/4e/31/4c03ae6639644c511e9a40f1d34eb494a45eff8f0db03d617ca01130de0c/Chatty-0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3dc156a93f2600a27830322996c5c9d3", "sha256": "3f2fe962cefd38dc46b743dbc42be851f11b2fd95925a9b2b476395db06ce7d9" }, "downloads": -1, "filename": "Chatty-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3dc156a93f2600a27830322996c5c9d3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 30777, "upload_time": "2018-05-31T01:29:39", "url": "https://files.pythonhosted.org/packages/f7/41/4a79d0db7b8e24f55385088e457a3bac235ad9112f533f95ddfe91bf53c1/Chatty-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a17c99653a40f9c787c1894bf069803", "sha256": "7dc221940abcedfa1f7cd32f95606d2bf73278dfc33367986d8a92ec63fd5978" }, "downloads": -1, "filename": "Chatty-0.2.tar.gz", "has_sig": false, "md5_digest": "4a17c99653a40f9c787c1894bf069803", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18217, "upload_time": "2018-05-31T01:29:41", "url": "https://files.pythonhosted.org/packages/4e/31/4c03ae6639644c511e9a40f1d34eb494a45eff8f0db03d617ca01130de0c/Chatty-0.2.tar.gz" } ] }