-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
Hi,
I've seen a demonstration by Christoph Thiede of a TelegramSmalltalkBot.
I'm using OpenIndiana (UNIX) with the cog-spur VM using Squeak6.0alpha-20532 64bit.
#pkg list -v cog-spur runtime/smalltalk/cog-spur@5.0.2957,5.11-2020.0.1.1
I don't know whether I understood the demo correctly, but my understanding was that is is possible to send Telegram messages from Squeak.
I'm trying to find out whether this works on OpenIndiana.
Following instructions at 'Self hosting the bot' at:
https://github.com/LinqLover/TelegramSmalltalkBot
First of all, step 1 works (I think it works, see screenshot):
Metacello new baseline: 'TelegramSmalltalkBot'; githubUser: 'LinqLover' project: 'TelegramSmalltalkBot' path: 'src'; load.
As a remark, because I'm a total absolute beginner with this, I had to figure out "Install the latest Trunk updates in your image":
The way to do this seems to be:
a) in the Squeak menu update Squeak
this upgraded my Squeak6.0alpha-20532 to Squeak6.0alpa-20533 64bit
from a Workspace perhaps:
TheWorldMainDockingBar updateSqueak. or MCMcmUpdater updateFromServer.
b) run in a workspace :
Installer ensureRecentMetacello
I'm just adding this as a remark because without the ensureRecentMetacello, the instructions given complain 'no selector githubUser:project:path:'.
I think this because it is assumed that you first run ensureRecentMetacello, or otherwise have Metacello loaded in your image.
Because I'm unfamiliar with Metacello, I'm just adding this remark.
Anyway Metacello seems to load, and then it proceeds loading SimulationStudio-Base-cypress and finally TelegramSmalltalkBot-Tests-cypress.
My question now is how to proceed.
Can I run some tests at this point to check that the Metacello install of TelegramSmalltalkBot was succesful ?
Thanks! David Stes
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
Hi,
I've seen a demonstration by Christoph Thiede of a TelegramSmalltalkBot.
I'm using OpenIndiana (UNIX) with the cog-spur VM using Squeak6.0alpha-20532 64bit.
#pkg list -v cog-spur runtime/smalltalk/cog-spur@5.0.2957,5.11-2020.0.1.1
I don't know whether I understood the demo correctly, but my understanding was that is is possible to send Telegram messages from Squeak.
I'm trying to find out whether this works on OpenIndiana.
Following instructions at 'Self hosting the bot' at:
https://github.com/LinqLover/TelegramSmalltalkBot
First of all, step 1 works (I think it works, see screenshot):
Metacello new baseline: 'TelegramSmalltalkBot'; githubUser: 'LinqLover' project: 'TelegramSmalltalkBot' path: 'src'; load.
As a remark, because I'm a total absolute beginner with this, I had to figure out "Install the latest Trunk updates in your image":
The way to do this seems to be:
a) in the Squeak menu update Squeak
this upgraded my Squeak6.0alpha-20532 to Squeak6.0alpa-20533 64bit
from a Workspace perhaps:
TheWorldMainDockingBar updateSqueak. or MCMcmUpdater updateFromServer.
b) run in a workspace :
Installer ensureRecentMetacello
I'm just adding this as a remark because without the ensureRecentMetacello, the instructions given complain 'no selector githubUser:project:path:'.
I think this because it is assumed that you first run ensureRecentMetacello, or otherwise have Metacello loaded in your image.
Because I'm unfamiliar with Metacello, I'm just adding this remark.
Anyway Metacello seems to load, and then it proceeds loading SimulationStudio-Base-cypress and finally TelegramSmalltalkBot-Tests-cypress.
My question now is how to proceed.
Can I run some tests at this point to check that the Metacello install of TelegramSmalltalkBot was succesful ?
Thanks! David Stes
Hi David,
it is great to hear that you are interested in my bot! :-) From your description you did everything right so far, now you would need to do the remaining steps from the self-hosting instructions:
2. Send a Telegram message to @BotFather (https://t.me/BotFather) to register your very own bot. He will send you a secret bot token.
3. To start a bot instance, open a Workspace and do the following:
bot := TelegramSmalltalkBot withToken: '<your_bot_token>'. bot spawnNewProcess.
Now your bot instance should be running and should be able to send it a message from your Telegram account!
As a reminder, if you do not want that everyone from all over the world has access to your bot, you should define an allow-list of chat IDs. You can do this after you have send at least one message to your bot instance. After that, the simplest way to define the allow-list is to run the following in the same workspace window:
chatIds := (bot instVarNamed: 'sessions') keys. Smalltalk at: #TBTestBotChatIds put: chatIds.
If you have any further questions, please feel free to ask them. :-)
Best, Christoph
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
Hi,
I've seen a demonstration by Christoph Thiede of a TelegramSmalltalkBot.
I'm using OpenIndiana (UNIX) with the cog-spur VM using Squeak6.0alpha-20532 64bit.
#pkg list -v cog-spur runtime/smalltalk/cog-spur at 5.0.2957,5.11-2020.0.1.1
I don't know whether I understood the demo correctly, but my understanding was that is is possible to send Telegram messages from Squeak.
I'm trying to find out whether this works on OpenIndiana.
Following instructions at 'Self hosting the bot' at:
https://github.com/LinqLover/TelegramSmalltalkBot
First of all, step 1 works (I think it works, see screenshot):
Metacello new baseline: 'TelegramSmalltalkBot'; githubUser: 'LinqLover' project: 'TelegramSmalltalkBot' path: 'src'; load.
As a remark, because I'm a total absolute beginner with this, I had to figure out "Install the latest Trunk updates in your image":
The way to do this seems to be:
a) in the Squeak menu update Squeak
this upgraded my Squeak6.0alpha-20532 to Squeak6.0alpa-20533 64bit from a Workspace perhaps: TheWorldMainDockingBar updateSqueak.
or MCMcmUpdater updateFromServer.
b) run in a workspace :
Installer ensureRecentMetacello
I'm just adding this as a remark because without the ensureRecentMetacello, the instructions given complain 'no selector githubUser:project:path:'.
I think this because it is assumed that you first run ensureRecentMetacello, or otherwise have Metacello loaded in your image.
Because I'm unfamiliar with Metacello, I'm just adding this remark.
Anyway Metacello seems to load, and then it proceeds loading SimulationStudio-Base-cypress and finally TelegramSmalltalkBot-Tests-cypress.
My question now is how to proceed.
Can I run some tests at this point to check that the Metacello install of TelegramSmalltalkBot was succesful ?
Thanks! David Stes
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2
iQEcBAEBCAAGBQJgr2m+AAoJENdFDkXGiciz8mUIAKktQIhOmIEURfTkAL6c1c7l l27FK1v7b60jolw+TnW9XOPtYbSHjOpBSiJMxfUWjXOy2GO8QSrrqCUAGL0f3Bcy ihNgyTeDe+faHItoIoXjb8wGzb6MFE8rLuB0STe6hPBhBrJV+RBPchx0xqKmovAA I3V0pX1xEO9Kf2cPX+R0F1Yfu9ruKtxVFqT5RnlRAl0AKgCuOBxBHqOgZkkfribi y5Ir003P4FahFFkpKHalAjf76XwVpKVh9mmAAneG/LzuStKSPNErB/98/HOp0Rj/ NTR/vyw731QS/3BzZnZAR9dVz/MCbDPvaXO9W1Hp03wyGf5s7BKlqH8bTWfJvpw= =WCAJ -----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
Hi,
I created a bot and user on my phone, and obtained a token.
When I use that token in Squeak, I'm under the impression that it connects to api.telegram.org and that it accepts the token (although I'm not sure, is there a way to check?), unfortunately then I get a debugger with :
[] in SecureSocketStream>>receiveData Socket>>waitForDataFor:ifClosed:ifTimedOut: SecureSocketStream>>receiveData SecureSocketStream>>upToAll:limit: SecureSocketStream>>upToAll: WebResponse>>readFrom: WebClient>>sendRequest:contentBlock: WebClient>>sendRequest:content:size: WebClient>>sendRequest: WebClient>>httpGet:do:
ConnectionTimedOut: Data receive timed out.
So it's not working but this can be due to many things I suppose.
The nice thing so far is that the TelegramSmalltalkBot package seems to install fine, which is already a good start.
I'll try later on a SUSE Linux machine to compare with the OpenIndiana machine, as there may be a difference.
David Stes
Hi David,
could you maybe share the complete stack trace? You can do this by right-clicking the stack in the debugger and choosing "copy bug report to clipboard". Be sure to remove all occurrences of your token from the output before posting it here.
Best,
Christoph
________________________________ Von: stes@PANDORA.BE stes@telenet.be Gesendet: Donnerstag, 27. Mai 2021 20:27:16 An: Thiede, Christoph Cc: beginners Betreff: Re: [Newbies] OI screenshot Telegram install
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
Hi,
I created a bot and user on my phone, and obtained a token.
When I use that token in Squeak, I'm under the impression that it connects to api.telegram.org and that it accepts the token (although I'm not sure, is there a way to check?), unfortunately then I get a debugger with :
[] in SecureSocketStream>>receiveData Socket>>waitForDataFor:ifClosed:ifTimedOut: SecureSocketStream>>receiveData SecureSocketStream>>upToAll:limit: SecureSocketStream>>upToAll: WebResponse>>readFrom: WebClient>>sendRequest:contentBlock: WebClient>>sendRequest:content:size: WebClient>>sendRequest: WebClient>>httpGet:do:
ConnectionTimedOut: Data receive timed out.
So it's not working but this can be due to many things I suppose.
The nice thing so far is that the TelegramSmalltalkBot package seems to install fine, which is already a good start.
I'll try later on a SUSE Linux machine to compare with the OpenIndiana machine, as there may be a difference.
David Stes
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
Hi,
I could not reproduce the debugger timeout:
ConnectionTimedOut: Data receive timed out.
In my new tests on OpenIndiana and SUSE SLES 15 , I get the same behaviour :
bot := TelegramSmalltalkBot withToken: '<your_bot_token>'. bot spawnNewProcess.
hangs. Of course the hang MAY end in a timeout, I only waited 5 minutes.
Also on SUSE, same thing. It also hangs.
I think the token is correct because the creation of the Squeak bot, works, and when I inspect it, it has retrieved the correct bot name.
Also on the same systems I am able to use Python telegram-send, and with the Python program it works (can send messages to telegram); so the network setup works.
Perhaps Squeak is more sensitive to network setup than Python, it has some characteristics of a network problem (comm.timeout).
Also the Python test shows that the token is correct, and that it network-wise could work, but perhaps it is a network issue.
DNS api.telegram.org and ping ICMP to that host work.
The DNS has records for both ipv4 and ipv6; host api.telegram.org api.telegram.org has address 149.154.167.220 api.telegram.org has IPv6 address 2001:67c:4e8:f004::9
Another remark: I ran the tests in the Squeak TestRunner for TelegramSTBot, and on OpenIndiana they all succeed, on Linux 2 failed but the others were OK.
When I experiment in the Workspace with DoIt of
bot := TelegramSmalltalkBot withToken: '<your_bot_token>'. bot spawnNewProcess.
I get:
TelegramBotError 409: Conflict: terminated by other getUpdates request; make sure that only one bot instance is running.
How do I reset the bot in a Squeak Workspace ?
Note that I am using very recent images 6.0alpa-20535.image 64 bit, in both cases, on SUSE SLES Linux and on OpenIndiana.
I think perhaps I should try an older image 5.3 or early 6.0alpha, and not update it ? What do you think ?
In any case your demonstration of the SqueakSmalltalkBot was impressive, I'd like to run it as well on either OpenIndiana or SUSE.
David Stes
Hi David,
if the bot hangs again, you could press Cmd + Dot to interrupt it and find out where exactly it is hanging. Again, you could share a full stack trace then. :-)
What tests are failing? What failure/error messages do you get?
TelegramBotError 409: Conflict: terminated by other getUpdates request; make sure that only one bot instance is running.
How do I reset the bot in a Squeak Workspace ?
http://www.hpi.de/ Technically, all TelegramBot frameworks for Smalltalk or Python or whatsoever are only clients. They use the Telegram Bot API which connects them to the actual server. This means that a part of the bot's state is kept on the Telegram servers. Concretely, this is an event queue. If you make requests for the same bot from multiple clients (i.e., images with TelegramSmalltalkBot), these conflict which each other because they both pull updates from the same queue. Usually, you can simply ignore this error by pressing Proceed. If it occurs again, you should make sure that no other client is running at the same time. For TelegramBot in Squeak, you can do so by opening the process browser and searching for any telegram bot process. You can yellow-click them and choose terminate.
For testing, you can also manually inspect the latest updates for the bot by evaluating the following in your workspace:
bot peekUpdates explore.
If you have sent a message to the bot before, you should see a non-empty list.
I think perhaps I should try an older image 5.3 or early 6.0alpha, and not update it ? What do you think ?
No, TelegramBot/TelegramSmalltalkBot are explicitly designed to "live at head", older versions of Squeak Alpha are not supported. I can only tell that it works well for me with an up-to-date Trunk image for both Windows 2004 and Debian/Raspbian. If you can provide a concrete stack trace, we should be able to solve the problem. :-)
Best, Christoph ________________________________ Von: stes@PANDORA.BE stes@telenet.be Gesendet: Freitag, 28. Mai 2021 20:07:14 An: Thiede, Christoph Cc: beginners Betreff: Re: [Newbies] OI screenshot Telegram install
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
Hi,
I could not reproduce the debugger timeout:
ConnectionTimedOut: Data receive timed out.
In my new tests on OpenIndiana and SUSE SLES 15 , I get the same behaviour :
bot := TelegramSmalltalkBot withToken: '<your_bot_token>'. bot spawnNewProcess.
hangs. Of course the hang MAY end in a timeout, I only waited 5 minutes.
Also on SUSE, same thing. It also hangs.
I think the token is correct because the creation of the Squeak bot, works, and when I inspect it, it has retrieved the correct bot name.
Also on the same systems I am able to use Python telegram-send, and with the Python program it works (can send messages to telegram); so the network setup works.
Perhaps Squeak is more sensitive to network setup than Python, it has some characteristics of a network problem (comm.timeout).
Also the Python test shows that the token is correct, and that it network-wise could work, but perhaps it is a network issue.
DNS api.telegram.org and ping ICMP to that host work.
The DNS has records for both ipv4 and ipv6; host api.telegram.org api.telegram.org has address 149.154.167.220 api.telegram.org has IPv6 address 2001:67c:4e8:f004::9
Another remark: I ran the tests in the Squeak TestRunner for TelegramSTBot, and on OpenIndiana they all succeed, on Linux 2 failed but the others were OK.
When I experiment in the Workspace with DoIt of
bot := TelegramSmalltalkBot withToken: '<your_bot_token>'. bot spawnNewProcess.
I get:
TelegramBotError 409: Conflict: terminated by other getUpdates request; make sure that only one bot instance is running.
How do I reset the bot in a Squeak Workspace ?
Note that I am using very recent images 6.0alpa-20535.image 64 bit, in both cases, on SUSE SLES Linux and on OpenIndiana.
I think perhaps I should try an older image 5.3 or early 6.0alpha, and not update it ? What do you think ?
In any case your demonstration of the SqueakSmalltalkBot was impressive, I'd like to run it as well on either OpenIndiana or SUSE.
David Stes
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
Hello,
I'm sorry for the misunderstandig : interpretation error from my side ...
The TelegramSmalltalkBot is actually working fine on cog-spur with the latest image Squeak 6.0alpha 20535 on Solaris 11.4, OpenIndiana and SLES15.
The instructions should however clarify that
1) you have to run Installer ensureRecentMetacello before the install
and
2) the message bot spawnNewProcess should print in the Transcript
<bot-name> Accepting requests
Indeed what I thought was 'hanging' was actually just simply normal serving...
- From the Telegram app it is possible to connect to the bot implemented, or running in Squeak and talk to it ...
So all is working fine. Really nice package, I'm impressed.
Also the advantage of Squeak-serving a bot is portability, where the Cog JIT just-in-time compiler serves as a fast Smalltalk VM.
Regards, David Stes
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
Is there a way to do generally Transcript logging of the requests, being handled by the bot ?
There seems to be a message useDebugging: but I'm unsure this is what I want.
It's more a question of how to maintain a logfile of what the bot is doing.
Anyway it's working fine.
David Stes
beginners@lists.squeakfoundation.org