{"id":18325129,"url":"https://github.com/danerwilliams/pork-chop","last_synced_at":"2025-10-06T10:49:30.693Z","repository":{"id":45656708,"uuid":"260791135","full_name":"danerwilliams/pork-chop","owner":"danerwilliams","description":"🐷 An AI chat bot written in python","archived":false,"fork":false,"pushed_at":"2023-05-22T23:27:10.000Z","size":651,"stargazers_count":11,"open_issues_count":14,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-06T00:32:01.530Z","etag":null,"topics":["ai","aws","chatterbot","groupme","hacktoberfest","python"],"latest_commit_sha":null,"homepage":"","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/danerwilliams.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":"2020-05-02T23:07:34.000Z","updated_at":"2024-03-31T19:35:36.000Z","dependencies_parsed_at":"2024-11-05T18:44:41.583Z","dependency_job_id":"be60f784-e9e3-4520-9f79-8e5d2b772832","html_url":"https://github.com/danerwilliams/pork-chop","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/danerwilliams/pork-chop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danerwilliams%2Fpork-chop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danerwilliams%2Fpork-chop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danerwilliams%2Fpork-chop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danerwilliams%2Fpork-chop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danerwilliams","download_url":"https://codeload.github.com/danerwilliams/pork-chop/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danerwilliams%2Fpork-chop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278598596,"owners_count":26013289,"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","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["ai","aws","chatterbot","groupme","hacktoberfest","python"],"created_at":"2024-11-05T18:36:53.986Z","updated_at":"2025-10-06T10:49:30.666Z","avatar_url":"https://github.com/danerwilliams.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pork-chop\n\n\u003e An AI chat bot\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"350\" height=\"513\" src=\"./groupme_screenshot.png\"\u003e\n\u003c/p\u003e\n\n## Conversations\n\nWe use [ChatterBot](https://github.com/gunthercox/ChatterBot), a machine learning conversational dialog engine to power Pork Chop's conversations.\n\n### Training\n\nPork Chop has a few options for training:\n* Train with csv data - The success and training time with this is dependent on the size and quality of the data you provide it. For reference, a 70,000 message file we trained pork chop with took around 10 minutes on a AWS EC2 t3.micro VM. See [example_training.csv](./example_training.csv) for reference.\n* Train with english corpus - Train with the small english corpus provided by ChatterBot\n* Train with Ubuntu corpus - This is a huge data set which will take a long time to download and train\n\n## Command Modules\n\nPork chop will respond to the following command modules:\n* !example - Template module\n* !usage - Display modules and their use\n* !joke - Display a random joke.\n* !kanye - Display a random Kanye West quote.\n* !stonks \\\u003csymbol\\\u003e - Get stock price information\n* !turn \\\u003cuser\\\u003e [list] - Turn a user or list number of turns for all users\n* !helpmecook \\\u003cfood\\\u003e - Get recipe help for cooking a tasty vegan meal with spoonacular api (try cooking manwich)\n* !yt \\\u003cquery\\\u003e - Get the best-match YouTube video url for your query\n* !reddit \\\u003cquery\\\u003e - Get the best-match subreddit for your query\n* !word - Display a randomly generated fake word + definition (from the awesome [thisworddoesnotexist.com](https://thisworddoesnotexist.com))\n\n## Deployment\n\nPork Chop can be deployed on any server with python3.\n\n### Bot Registration\n\n* Navigate to [dev.groupme.com/bots](https://dev.groupme.com/bots)\n* Click the orange button labeled \"create bot\"\n* Choose the groupchat you would like pork chop to live in\n* For the callback URL, enter the ip or domain of the server Pork Chop will be run on with the extension /bot as this is where the flask handler is set to.\n* If you are running pork chop on serverless mode set up the callback URL appropriate to you AWS Lambda function\n* You can leave Avatar URL blank or set it to your desired image\n\n### Server\n\n* `git clone https://github.com/danerwilliams/pork-chop.git` Clone pork-chop\n* `cd pork-chop` enter pork-chop directory\n* `pip3 install -r requirements.txt` install pork-chop's python3 dependencies\n* Set environment variables for secrets:\n\t- `$EDITOR .env` record environment variables to a file with text editor of choice, minimum need to set BOT_ID (use .env.example for reference)\n\t- `export $(grep -v '^#' .env)` set environment variables from .env file\n* OR use .secrets json formatted file for secrets:\n\t- `$EDITOR .secrets` record secrets to file with text editor of choice, minimum need to set BOT_ID (use .secrets.example for reference)\n* `sudo ./pork-chop.py -d` deploy pork chop on port 80 (you can add `\u0026\u003e /dev/null \u0026` to ignore output and run in background)\n\n## Flags\n\n`./pork-chop.py -h`\n\n```\nusage: pork-chop [-h] [-c CORES] [-t TRAIN [TRAIN ...]] [-d] [-u] [-e]\n                 [-n NAME]\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -c CORES, --cores CORES\n                        Number of CPU cores to use\n  -t TRAIN [TRAIN ...], --train TRAIN [TRAIN ...]\n                        Train bot from csv data files\n  -d, --deploy          Deploy bot with flask on port 80 (requires sudo)\n  -u, --ubuntu          Train bot from ubuntu corpus\n  -e, --english         Train bot from english corpus\n  -n NAME, --name NAME  Change Pork Chop's name from default\n```\n\n## References\n\nInspired by [ginglis13/shortstop](https://github.com/ginglis13/shortstop) and [pbui/bobbit](https://github.com/pbui/bobbit)\n\nUseful Documentation:\n* [ChatterBot](https://chatterbot.readthedocs.io/en/stable/)\n* [Flask](https://flask.palletsprojects.com/en/1.1.x/quickstart/)\n* [GroupMe](https://dev.groupme.com/tutorials/bots)\n\n## Team\n\nThis project is maintained by the following person(s) and a bunch of [awesome contributors](https://github.com/danerwilliams/pork-chop/graphs/contributors).\n\n[\u003cimg width=\"80\" height=\"80\" src=\"https://avatars3.githubusercontent.com/u/22798229?v=4\u0026s=70\"\u003e](https://github.com/danerwilliams) | [\u003cimg width=\"80\" height=\"80\" src=\"https://avatars3.githubusercontent.com/u/49375988?s=400\u0026v=4\"\u003e](https://github.com/cnrmrphy) | [\u003cimg width=\"80\" height=\"80\" src=\"https://avatars2.githubusercontent.com/u/8454416?s=400\u0026v=4\"\u003e](https://github.com/jheneghan16) | [\u003cimg width=\"80\" height=\"80\" src=\"https://avatars3.githubusercontent.com/u/50080644?s=400\u0026u=45b2e63a2d05e4ce0887c3d82e26ab08d6e13dbe\u0026v=4\"\u003e](https://github.com/beniaminogreen) |\n--- | --- | --- | --- |\n[Dane Williams](https://github.com/danerwilliams) | [Conor Murphy](https://github.com/cnrmrphy) | [James Heneghan](https://github.com/jheneghan16) | [Ben Green](https://github.com/beniaminogreen) |\n\n## License\n\n[MIT License](https://github.com/danerwilliams/pork-chop/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanerwilliams%2Fpork-chop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanerwilliams%2Fpork-chop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanerwilliams%2Fpork-chop/lists"}