{"id":23397784,"url":"https://github.com/jack-mil/server-bot-experiment","last_synced_at":"2026-05-04T05:35:44.160Z","repository":{"id":144114277,"uuid":"385114604","full_name":"jack-mil/server-bot-experiment","owner":"jack-mil","description":"Experimental Discord API \u0026 Web server interaction proof-of-concept","archived":false,"fork":false,"pushed_at":"2025-06-01T20:21:41.000Z","size":35,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-02T06:15:43.645Z","etag":null,"topics":["bot","discord","flask-application","live-frame","server-sent-event"],"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/jack-mil.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2021-07-12T03:31:12.000Z","updated_at":"2025-06-01T20:21:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"bddb5508-0a72-467b-8c64-bf20912a3852","html_url":"https://github.com/jack-mil/server-bot-experiment","commit_stats":null,"previous_names":["jack-mil/server-bot-experiment"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jack-mil/server-bot-experiment","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jack-mil%2Fserver-bot-experiment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jack-mil%2Fserver-bot-experiment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jack-mil%2Fserver-bot-experiment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jack-mil%2Fserver-bot-experiment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jack-mil","download_url":"https://codeload.github.com/jack-mil/server-bot-experiment/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jack-mil%2Fserver-bot-experiment/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32596533,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"online","status_checked_at":"2026-05-04T02:00:06.625Z","response_time":58,"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":["bot","discord","flask-application","live-frame","server-sent-event"],"created_at":"2024-12-22T08:36:16.689Z","updated_at":"2026-05-04T05:35:44.155Z","avatar_url":"https://github.com/jack-mil.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Image-Frame Discord Bot\nThis is a rudimentary proof-of-concept experiment that uses the Discord bot API to connect\na Discord client \"user\" and a remote \"server\" (such as RPI with display) over the internet\nwithout additional networking.\n\nThe server runs two Docker containers:\n- A Flask server listening to REST API requests on the local network (`127.0.0.1`)\n- The Discord bot, which can pass data back/forth to the outside world over the internet\n  - The bot forwards API requests to the local web server\n\nWith this setup, it is possible to send commands, data, or whole files to the \"server\" from \nthe Discord mobile app with no network configuration.\nAs long as the client and server both haver internet access.\nThe Discord bot can forward data on to the local web server,\nwhich can save or process the data as needed. \n\n*One application for this is a live \"picture frame\" where users can message images to the \nbot to be displayed on the RPI device (running a browser in kiosk mode).* Images can be\n hosted on the Discord CDN or downloaded to the server directly.\n\nThe current proof-of-concept shows that a webpage displayed on the Pi can be updated\nasynchronously with images sent to the Discord bot using the Server-Sent-Events browser \nfeature to update the web page with images in a \"feed\" style.\n\nAn exercise in specific learning areas:\n - Making Flask REST-like APIs\n - Asynchronous programming with `discord.py`\n - Containerization with Docker Compose\n - Browser support of Server-Sent-Events (SSE) and dynamic page updating\n   - Some client side Javascript required in the web page hosted by the local server\n\n\n### Attribution\n\nThe [EM Felix Bot](https://github.com/engineer-man/felix) served as a great foundation for a modular bot structure.\nParts of code where copied from there, before being modified and features removed for my experimental purposes.\nCode from that project is used under the MIT License. [Felix License](https://github.com/engineer-man/felix/blob/1c635ed909ce98b1c446f371dffde265351f4021/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjack-mil%2Fserver-bot-experiment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjack-mil%2Fserver-bot-experiment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjack-mil%2Fserver-bot-experiment/lists"}