Skip to content

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.

Notifications You must be signed in to change notification settings

LinqLover/TelegramSmalltalkBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TelegramSmalltalkBot

Actions Status Coverage Status Chat now

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. Implemented using the TelegramBot framework and SimulationStudio for sandboxed execution.

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`. Screencast of a Telegram chat.

Currently available features include, but are not limited to:

  • Evaluate arbitrary Smalltalk expressions
  • Multi-user object memory with isolated execution to rule out global side effects in the image
  • Select the receiver context (self) for your expressions by replying to a specific previous message of the bot
  • Edit your messages and answers from the bot will be updated as well
  • Multi-media representations of various Smalltalk objects such as Text, Form, AnimatedImageMorph, AbstractSound, and others
  • Bot commands to create different views of expression results such as /do, /print, and inspect

To learn more about all capabilities, just try it out and send the /help command.

There is also a screencast available on YouTube.

Try it out!

An instance of the bot is live under @SqueakSmalltalkBot. Just send it a message and say hello!

@SqueakSmalltalkBot

If you experience any problems, please create an issue.

Self-Hosting the Bot

  1. Install the latest Trunk updates in your image, then evaluate the following in a Workspace:

    Metacello new
    	baseline: 'TelegramSmalltalkBot';
    	githubUser: 'LinqLover' project: 'TelegramSmalltalkBot' path: 'src';
    	load.
  2. Chat with @BotFather to register your very own bot. He will send you a secret bot token.

  3. To start a bot instance, do something like:

    bot := TelegramSmalltalkBot withToken: '<your_bot_token>'.
    bot spawnNewProcess.
  4. Send a message to your bot and enjoy!

  5. 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):

    Smalltalk at: #TBTestBotChatIds put: #(<your_chat_id_integer>).

    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.

    For more information on how to run the bot, read the docs of the TelegramBot framework.

Configuration 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 >> #isolationEnabled. If you miss a certain configuration hook or extension point, please create an issue or a pull request.

For more information on the architecture and set-up of this bot, please refer to this overview.

There is also an inofficial setup tutorial available that was written by @cstes: Running a TelegramSmalltalkBot in a minimal zone on Oracle Solaris 11 (mirror)

Development

Version control is run using Squot. Your contribution is welcome! I'm always happy about bug reports, new feature proposals, or even pull requests ... :-)

Carpe Squeak!

About

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.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published