{"id":16087499,"url":"https://github.com/linqlover/telegramsmalltalkbot","last_synced_at":"2026-01-18T17:33:00.470Z","repository":{"id":53593569,"uuid":"309116806","full_name":"LinqLover/TelegramSmalltalkBot","owner":"LinqLover","description":"A Telegram bot that connects you to a remote Squeak/Smalltalk image and allows you to explore it by sending Smalltalk expressions to the bot.","archived":false,"fork":false,"pushed_at":"2024-10-11T22:32:05.000Z","size":36214,"stargazers_count":12,"open_issues_count":19,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-05T15:27:24.832Z","etag":null,"topics":["hacktoberfest","repl","smalltalk","squeak","telegram-bot"],"latest_commit_sha":null,"homepage":"https://t.me/SqueakSmalltalkBot","language":"Smalltalk","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LinqLover.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":"2020-11-01T14:43:33.000Z","updated_at":"2024-11-26T18:54:52.000Z","dependencies_parsed_at":"2025-04-05T15:37:48.033Z","dependency_job_id":null,"html_url":"https://github.com/LinqLover/TelegramSmalltalkBot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/LinqLover/TelegramSmalltalkBot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LinqLover%2FTelegramSmalltalkBot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LinqLover%2FTelegramSmalltalkBot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LinqLover%2FTelegramSmalltalkBot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LinqLover%2FTelegramSmalltalkBot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LinqLover","download_url":"https://codeload.github.com/LinqLover/TelegramSmalltalkBot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LinqLover%2FTelegramSmalltalkBot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28544815,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T14:59:57.589Z","status":"ssl_error","status_checked_at":"2026-01-18T14:59:46.540Z","response_time":98,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["hacktoberfest","repl","smalltalk","squeak","telegram-bot"],"created_at":"2024-10-09T13:29:54.379Z","updated_at":"2026-01-18T17:33:00.465Z","avatar_url":"https://github.com/LinqLover.png","language":"Smalltalk","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TelegramSmalltalkBot\n\n[![Actions Status](https://github.com/LinqLover/TelegramSmalltalkBot/workflows/smalltalkCI/badge.svg)](https://github.com/LinqLover/TelegramSmalltalkBot/actions)\n[![Coverage Status](https://coveralls.io/repos/github/LinqLover/TelegramSmalltalkBot/badge.svg)](https://coveralls.io/github/LinqLover/TelegramSmalltalkBot)\n[![Chat now](https://img.shields.io/badge/chat%20now-%40SqueakSmalltalkBot-0088cc)](https://t.me/SqueakSmalltalkBot)\n\nA Telegram bot that connects you to a remote [Squeak/Smalltalk](https://squeak.org/) image and allows you to explore it by sending Smalltalk expressions to the bot.\nImplemented using the [TelegramBot framework](https://github.com/LinqLover/TelegramBot) and [SimulationStudio](https://github.com/LinqLover/SimulationStudio) for sandboxed execution.\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://github.com/LinqLover/TelegramSmalltalkBot/blob/master/img/screenshot1.png\"\u003e\u003cimg src=\"https://github.com/LinqLover/TelegramSmalltalkBot/raw/master/img/screenshot1.png\" width=\"42%\" hspace=\"5%\" alt=\"Screenshot of a Telegram chat with the following messages sent to the bot: `Smalltalk version`, `3 + 4 * 6`, and `Display := Form extent: 600 asPoint depth: 32. Pen new mandala: 30. Display`.\"\u003e\u003c/img\u003e\u003c/a\u003e\n\t\u003ca href=\"https://youtu.be/HZCeThLqQmg\"\u003e\u003cimg src=\"https://github.com/LinqLover/TelegramSmalltalkBot/raw/master/img/screencast.gif\" width=\"38.6%\" alt=\"Screencast of a Telegram chat.\"\u003e\u003c/img\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nCurrently available features include, but are not limited to:\n\n- Evaluate arbitrary Smalltalk expressions\n- Multi-user object memory with isolated execution to rule out global side effects in the image\n- Select the receiver context (`self`) for your expressions by replying to a specific previous message of the bot\n- Edit your messages and answers from the bot will be updated as well\n- Multi-media representations of various Smalltalk objects such as `Text`, `Form`, `AnimatedImageMorph`, `AbstractSound`, and others\n- Bot commands to create different views of expression results such as `/do`, `/print`, and `inspect`\n\nTo learn more about all capabilities, just [try it out](#try-it-out) and send the `/help` command.\n\nThere is also a [screencast available on YouTube](https://youtu.be/HZCeThLqQmg).\n\n## Try it out!\n\nAn instance of the bot is live under [@SqueakSmalltalkBot](https://t.me/SqueakSmalltalkBot).\nJust send it a message and say hello!\n\n\u003ca href=\"https://t.me/SqueakSmalltalkBot\"\u003e\u003cimg src=\"https://github.com/LinqLover/TelegramSmalltalkBot/raw/master/img/banner.svg\" height=\"50px\" alt=\"@SqueakSmalltalkBot\"\u003e\u003c/img\u003e\u003c/a\u003e\n\nIf you experience any problems, please [create an issue](https://github.com/LinqLover/TelegramSmalltalkBot/issues/new/choose).\n\n## Self-Hosting the Bot\n\n1. Install the latest Trunk updates in your image, then evaluate the following in a Workspace:\n\n   ```smalltalk\n   Metacello new\n   \tbaseline: 'TelegramSmalltalkBot';\n   \tgithubUser: 'LinqLover' project: 'TelegramSmalltalkBot' path: 'src';\n   \tload.\n   ```\n\n2. Chat with [@BotFather](https://t.me/BotFather) to register your very own bot.\n   He will send you a secret bot token.\n\n3. To start a bot instance, do something like:\n\n   ```smalltalk\n   bot := TelegramSmalltalkBot withToken: '\u003cyour_bot_token\u003e'.\n   bot spawnNewProcess.\n   ```\n\n4. Send a message to your bot and enjoy!\n\n5. If you do not want that everyone from all over the world has access to your bot, you can define an allow-list of chat IDs and provide it via the `TBTestBotChatIds` global variable (experimental):\n\n   ```smalltalk\n   Smalltalk at: #TBTestBotChatIds put: #(\u003cyour_chat_id_integer\u003e).\n   ```\n\n   You can find out your own chat ID by browsing the sessions object of your running bot instance using an object explorer, or by inspecting the result of `bot peekUpdates` after sending a message to the bot.\n\n   For more information on how to run the bot, read the docs of the [TelegramBot framework](https://github.com/LinqLover/TelegramBot#usage).\n\nConfiguration of the bot (e.g. to turn off isolation and quota mechanisms) is currently only supported by editing the source code, though it contains some applicable hooks such as `TelegramSmalltalkSession \u003e\u003e #isolationEnabled`.\nIf you miss a certain configuration hook or extension point, please create an issue or a pull request.\n\nFor more information on the architecture and set-up of this bot, please refer to [this overview](https://linqlover.github.io/LinqLover/slides/SqueakEv21W%20TelegramBot.pdf#page=2).\n\nThere is also an inofficial setup tutorial available that was written by [@cstes](https://github.com/cstes): [Running a TelegramSmalltalkBot in a minimal zone on Oracle Solaris 11](https://master.dl.sourceforge.net/project/solaris-squeak/tbot21.pdf) ([mirror](https://web.archive.org/web/20231128210657/https://master.dl.sourceforge.net/project/solaris-squeak/tbot21.pdf?viasf=1))\n\n## Development\n\nVersion control is run using [Squot](https://github.com/hpi-swa/Squot).\nYour contribution is welcome!\nI'm always happy about bug reports, new feature proposals, or even pull requests ... :-)\n\nCarpe Squeak!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinqlover%2Ftelegramsmalltalkbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinqlover%2Ftelegramsmalltalkbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinqlover%2Ftelegramsmalltalkbot/lists"}