At the moment there is a discrepancy between some apps on how the behaviour of a "https://t.me/<botname>?start" link works, I think that the only app that handles it well is the macOS one, the other clients have a glitchy flow which hinders the user experience.
On most apps when clicking on that link, the user is redirected to the bot's chat and the start command is stored in memory waiting for the user input to press on the start button, this is perfectly fine if the user chat history with the bot is empty.
The problem arises when using this link when the chat history is NOT empty, what happens is that after clicking on it, the start button pops out of nowhere and the user is forced to click on the start button to make that start command effective, this makes the UX harder on the user since for each one of these links clicked he has to click again on the start button.
These are my suggestions:
Make all apps work like the macOS one, where if the chat history is empty then the start button is shown, but if the chat history is NOT empty then the start command gets executed instantly without going through the hassle of clicking that pesky start button each time
Add a clean way to trigger a command through a link, there was a good suggestion made in April here Send command to itself via link #3901, keyboards and whatnots are not enough to handle certain scenarios, so that we are not forced to use the ?start=<payload> trick to trigger commands through links
An example of why the current API is limited is this:
Let's say I have a list of 100 words to show to the user
I want to see the synonyms of each word by clicking on it
Now with the current API I would be forced to paginate them and send them either as inline keyboard buttons or create something like this https://core.telegram.org/bots/2-0-intro#updating-messages which just wastes characters since I have to show a command for each word explicitly
But everything would be a lot easier if I could make those words links that send a command with their name as payload, no need to waste characters on the commands or implement boring pagination logic
If security is a concern, we can just make it so that these links can be executed instantly ONLY if they are run by the user inside the bot's chat, the apps know this so it won't be a problem.
Let me know what you think and thanks for reading this.
I'm adding a little detail now, I've just found out an article from 2018 which talks about this and suggests more or less the same things that I have in this thread.
I really see no reason why telegram has not yet implemented this, other than not putting it in priority or the issue itself not getting enough visibility, it's also something really trivial to implement compared to the big stuff that telegram is delivering lately and would improve drastically the UX of many bots.
I really see no reason why telegram has not yet implemented this, other than not putting it in priority or the issue itself not getting enough visibility, it's also something really trivial to implement compared to the big stuff that telegram is delivering lately and would improve drastically the UX of many bots.
https://telegra.ph/Why-deep-linked-URLs-must-start-immediately-03-16