telegramdesktop / tdesktop

Telegram Desktop messaging app
https://desktop.telegram.org/
Other
26.45k stars 5.26k forks source link

Add "/me" support #1165

Closed DASPRiD closed 3 years ago

DASPRiD commented 9 years ago

It is a quite common feature among many chat clients to convert messages starting with the "/me" command. This originates from IRC, but is also found in other systems like for instance Skype or XMPP. Originally I wanted to provide a pull request for this, but the source code is quite confusing to me, so instead I just provide a mockup screenshot to demonstate how I imagined it.

When a user types for instance /me does something, it would appear like this for both the sender as well as the recipient:

telegram-me-mockup

From the sender's side, the UI change is minimal, as /me will simply replaced by their own name in bold (and optionally the entire line is kept in the username's color). For the recipient in a normal bi-user chat it would work the same, while on a group chat username which is normally printed at the top of every message would be omitted since it's redundant in this case.

auchri commented 9 years ago

I think this has to be implemented into the Telegram API?

DASPRiD commented 9 years ago

Not necessarily. It could just be sent as-is (like it currently does), and only handled per client. That way it would stay backward compatible.

soren121 commented 9 years ago

Telegram Desktop is considered one of the official Telegram clients. I think it would be rather callous to implement new features and introduce fragmentation among official clients. This really should be brought to the attention of the Telegram API developers and implemented uniformly if at all.

DASPRiD commented 9 years ago

@auchri @soren121 – Is there a Github repository for the API or another way to bring this up?

auchri commented 9 years ago

@DASPRiD The api is not public, but you can suggest the new api feature by the "Ask a question" feature in one of the official apps

stek29 commented 8 years ago

Use @bold *My user* does something? Or create bot which does it automatically.

ZornTaov commented 8 years ago

@stek29 I've tried that markdown, and having to see the "via @bold" at the top of each post is unnecessary for what's being asked for. What was shown in the opening screenshot is exactly what most other chat clients do, and should be a very simple addition to functionality.

Tynach commented 8 years ago

@soren121 typed:

This really should be brought to the attention of the Telegram API developers and implemented uniformly if at all.

Does this even matter at this point? On Telegram Desktop, a user can wrap text inside '`'s to make the wrapped text monospaced, denoting code. A tdesktop user can also use three of them around a multi-line block of text to make a block of monospaced, preformatted text. The text looks correct on Android (and presumably all other platforms), but you can't actually make such posts from Android (and presumably all platforms other than desktop).

So we already have a situation where the desktop app provides functionality that other apps do not. And vice versa, such as being unable to see the ban list of a group you moderate on desktop, but you can on Android; and you also can't even configure who you let see when you were last online from the desktop client, only from Android/mobile (I don't have any Apple products).

Of course, then again, I'm of the strong opinion that you shouldn't try to emulate one platform on another platform, and I think Telegram's insistence on trying to make everything so extremely consistent is in fact detrimental to Telegram.

But the '/me' thing would fall in line with other little things that are different from tdesktop to other platforms' apps, such as the ability to type monospaced text. At the same time, it makes sense on another level: it's very difficult to type '/me' on mobile, and fairly easy to do so on a desktop computer. So if it were to be implemented anywhere first before elsewhere, it makes 100% sense to do so on tdesktop before Android/iOS.

Tynach commented 8 years ago

@auchri, do you think it'd be possible to implement in a way similar to how foo turns into foo on all clients? It may not be possible for other clients to immediately send '/me' posts this way, but can it at least be sent in a way that other clients will see tdesktop's '/me' posts correctly?

Gollam commented 8 years ago

I can only see some interference with the bot commands. A bot can implement a /me command, am I right?

ZornTaov commented 8 years ago

@Gollam yes, a bot COULD implement a /me command, but that's not really what should be relied on. /me is a command that is pretty well ingrained in almost every chatting platform with the only exception that I know now of being steam. YES a bot could be made, but said bot would have to be known about in a global sense like the Markdown Bot is with @bold. However doing, say, "@bold Zorn waves" instead of "/me waves" to accomplish the same line is more work than should be needed, especially if you're stuck with the "via @bold" above the post.

Gollam commented 8 years ago

@ZornTaov I was not suggesting the creation of a bot for this functionality, and I am aware of the /me command in general :) I was instead thinking about what happens if a bot also introduces a /me command in a chat, and you write /me. What will happen then? Which command will run? To resolve this, bots may be forbid to implement a command named /me, to avoid interference, OR maybe the bot's /me could take priority in this case.

Tynach commented 8 years ago

@Gollam, I feel the latter should be the case - the bot gets precedence. This will likely lead to a lot of people removing the functionality from their bot (as it was probably only included in the bot to make up for the lack of /me support to begin with), but it's one of those cases where they'll likely prefer the new support for the command anyway.

DASPRiD commented 8 years ago

It doesn't seem like there was any official activity on this ticket so far, right?

stek29 commented 8 years ago

Why do you even need /me? Can someone please give me any real example?

ZornTaov commented 8 years ago

@stek29 /me has been a staple command in every single communication client I've come across and is used as a way of role playing with the person or group of people you are talking with. For myself and possibly others, using /me at the start of a post for an action is so ingrained into out habits that we'll keep using it even though the /me will do nothing to the post using the telegram client. this leads to multiple posts that have /me at the start and it ruins the roleplay experience. as it breaks the immersion.

stek29 commented 8 years ago

@ZornTaov Well, centuries ago humans were used to eating raw meat and living in caves. That wasn't so good. But thanks innovations we now have ovens and houses. Sometimes we should drop old unnecessary habits.

ZornTaov commented 8 years ago

@stek29 this wouldn't be a problem if it was a "move from one client to another and stop using the old one" kind of evolution that took place for humans. INSTEAD it's a "still talking to different people on multiple different chat clients because that's the only way to talk to that particular person." And since /me works on everything but one, that habit is going to stay.

ptramsey commented 8 years ago

I don't understand the resistance to this feature. It seems simple to implement, and if the official client does so and people start using the feature from there, other clients will likely rapidly follow suit. Slack supports it, Hangouts supports it, and telegram has a large userbase of people who would rapidly adopt it. It's certainly no more frivolous than stickers and GIFs.

stek29 commented 8 years ago

@ptramsey Telegram now != Telegram one-two years ago. There are much more users who prefer "stickers and GIFs" to /me. Also, Stickers and GIFs don't break bots. They also don't require server/client to parse each message and check if it contains "/me", and change everything in message if it does.

ptramsey commented 8 years ago

I'd be curious to find out whether that's actually true w.r.t. relative importance of stickers/gifs vs. /me to users. And, if this were implemented client-side only.... does the client not already parse each message looking for @user callouts? I can't speak to the question of how easy it would be to do it without breaking bots, but I'd be curious to go find out if there's a way to build it so that the precedence of bot commands vs. the built-in /me makes sense. I'll poke around this weekend :)

stek29 commented 8 years ago

@ptramsey I highly doubt TDesktop would have anything like that implemented on client side only.

gudvinr commented 7 years ago

@stek29 oh, come on. That's not necessarily should be done as /me. It can be long tap/RMB option on send key e.g. Question is more about mention yourself doing something and not about exactly the same behavior. And if use /me as command it can easily be disabled at least for bots or enabled only for groupchats since this is not very useful for single-user dialog.

gentlecolts commented 7 years ago

@stek29 /me is a trivial formatting option and there is no reason why it wouldn't be handled client side. In fact it probably wouldn't even take long to write a simple browser plugin for the web client that replaces messages starting with /me with specifically formatted messages. Almost every chat client out there supports /me and there is no reason why telegram should ignore such a trivial feature, especially since it'd help new users migrate over. Of all of the features on my telegram wishlist, this one is the one that continues to surprise me with its absence since it's such a trivial thing. There is no reason it would break bots...any issue it'd cause with bots probably indicates that either the bot is implemented very poorly or that the way bot commands work is in need of revision

It's such a small thing to implement, but it'd really make a difference in user experience for those who are used to it while having no impact on those that dont use it

cavac commented 7 years ago

Just to take a look on the technical side of this discussion for a moment: Why would anything change for the bots? Wouldn't a bot just get a message that is starting with the string "/me "?

I can send that to a bot now. If it fails to parse the input correctly and does something stupid, it is already broken!

So, in effect what you are saying is, you don't want to add a useful feature because you want to "protect" broken software written by people who have not the slightest clue about basics like input validation?

nuclight commented 7 years ago

Come on, people, I see two different things confused and intermixed into one:

1) The need of action-describe in clients and possibly API 2) The problem of interference of "/me" command if done literally as-is with bots

Let's discuss them in order.

The first - need of action-describing thing. Yes, exact words are important, it's correct title is not "/me command" but rather "tool for describing action in 3rd person".

@stek29 you are terribly wrong here. It surely looks that you are neither psychologist nor linguist. The distinction between 1st / 2nd / 3rd person (that is, "I am <verb> / you are <verb> / he is <verb>") is fundamentally built-in into human languages, because this is the way human brains think (and, as you may know, human brain did not changed significantly for ~40 thousands of years, and this is not going to happen in nearest centuries even if science will find a way to do).

You may have seen it in literature/books for hundredths of years: dialogues are distinct in form from describing what a hero is doing, in 3rd person. You wanted real example? Okay, I've many times seen a question in Telegram groupchats about who is doing what right now. And that's how it would look in IRC with actions:

11:00 <jane> hey people, what are you doing right now?
11:01 * john prepares to his exams
11:02 * peter drinks beer
11:03 * Myaw-Myaw бегает по потолку
11:04 * cat purrs
11:05 <jane> okay huys, who wants pizza?
11:06 <peter> I want!
11:06 * john too

Okay, example above was slightly imagined, so here is (a rough translation from Russian) a real phrase from nearest IRC channel:

Thu 19:09:26 <lavros> how badly matching of needed files is done in Git Large File Storage. This is full fuckup. Would be better if they done patterns as in .gitignore, but they've done some hueta.
Thu 19:09:57 * lavros spends second hour for trial-and-error

As you see, people really use, because it is natural. And come on, the /me command is now available even in World of Warcraft! It would be a real marketing benefit for Telegram over WhatApp/Viber/Facebook if it will support /me.

Next. I've chatted today with the inventor of original /me command in IRC, Carl "lynx" von Loesch (see https://groups.google.com/forum/#!msg/alt.irc/fWreRU1ECWM/B0IVwct7I5cJ for original announce in 1991). He told me that concept already existed before, in MUDs (multi-user text-only role playing games with server-bot) of 1980-s, just uncomfortable to use.

He also showed me an example of MUD, and guess what? They had "stickers and GIFs" back in 1980-s! Just that they were pure text ASCII art instead of real pictures :-) but 2nd and 3rd person language's grammar constructs were also used extensively (okay, you don't need 2nd person except when you talk with special RPG bot - but 3rd person you still need, and this entire issue is about 3rd person).

Also he told:

By the way, the /me command was inspired from Shakespeare... «Me thinks the lady doth protest too much.»

(remember what was said about literature/books above?..)

Also @stek29 you're certainly not fair speaking "users prefer stickers and GIFs to /me" - but hey! actually, they have no choice because /me is not implemented, and users are forced to use stickers and GIFs instead of /me. If you want to argue they don't know about /me - come on, even World of Warcraft has /me, surely they know!

And now second question. The bots, API and problems of /me.

You could draw several conclusions from above post to alt.irc. For example, that doesn't have to be exactly /me - Carl von Lynx now experiments with other chat systems, they've used a + char as a command prefix (instead of /) for a long time, for example.

Actually, on Android I would really prefer this action-tool not as difficult to type /me (not only because of slash character, but need to switch keyboard language to English first - I usually chat in Russian - and then back) - but rather as, err... may be a button near smiles and stickers?.. That solves problem with bots completely - people need a tool, it doesn't need to be exactly /me or +me or whatever - just give us a tool.

Another option, as others already mentioned above, would be disable handling of /me for chats with bots (at least when presented with custom keyboard), though I think it's a hack.

From an API point of view, 1 (that is, one) bit in message flags is enough (you already have free bits in message flags field in schema, aren't you?) - and as older clients don't support this bit, they simply render message as usual message, just with a little strange wording for human - but other users in groupchat would (sooner or later) notice this and just tell those losers to update their app to render properly :)

This could be just-in-client handling (in IRC, CTCP is Client-to-Client Protocol, ACTION is it's part, other parts were used for e.g. file transfer - not relevant to us); as Telegram don't need real CTCP, it could be done not by /me string but by e.g. special Unicode symbol/smiley (what will older clients see). But it looks like an even worse hack to me.

The most important thing is - how this would be displayed. It surely must be clearly different in look from usual message (but probably not very different). And it must describe user's action in 3rd person, as from side view.

Do we have something like that in present Telegram already? Yes! These are grayed messages about events happened, like:

John Smith added Jane Doe (to this groupchat)

or

January 19 (day changed)

...that is, actions in IRC were modelled after mesages about events ('* nick joined #chan'), too - and they differentiated later by colour of text. Thus, in Telegram those action should look not so-regular left-justified or right-justified message, but somewhat center-aligned looking in-between regular message and grey events. But this (design) part should be yet discussed, of course.

The main final point to progress is - /me-like actions must be implemented somehow.

symlynX commented 7 years ago

Heya! I'd guess Telegram would do itself good to satisfy the needs of its geek minority as they are very influential in the public opinion of Telegram's cryptographic safety etc etc. It's (unfortunately) been a winning strategy for both Google (fonts and scripts included in websites, this way enabling bulk tracking of users…) and Facebook (onion support, open sourcing cloud technology…).

In this case it is even really easy for Telegram: All you need to do is add an ACTION message type to the protocol (oh, these days it's just an API, how humble) and make all clients display it in a neat way. Then you can let desktop and indie implementations add /me or whatever they like (how those messages are generated does not need to be identical on all platforms as long as the encoding and display is consistent) while mobile phone app doesn't even provide a way to generate such messages.

Then you can observe how phone users react when they see action messages on their screens. Will they want to be able to make them, too? Or will they not care at all? If they don't care you can deprecate the message type again. Then you were right, it's just a geek minority thing. My experience is, you will probably be wrong and people will love it. Not the majority maybe, but a meaningful respectable minority. Just like there is a minority that hates emoji from the heart.

This bug report reminds me a bit of Ableton who refused to integrate MP3 support for years. Now a whole generation of remixers throws mp3 files into Ableton all the time, because you can't always have AIFF. A company can't always know what users want, and in this case it's even easy to just try it out.

Myself I stopped using Telegram since it cannot be accessed from Tor. I actually believe its secret chats are more trustworthy than Signal, simply because Telegram is in F-Droid – and the excuses for Signal not to be are lame and questionable.

akaWolf commented 7 years ago

Hello. I'm sorry, but I was unable to see the official comments at this 1.5-year-old issue. Are there such comments?

john-preston commented 7 years ago

@akaWolf There are no plans on adding such thing right now. Also, Telegram Desktop is trying to keep up with mobile apps in features so it will be considered here only if it will be added in the mobile apps first.

Emulator000 commented 7 years ago

I think that this requested feature is a bit more "global", in fact, could be extended to all commands starting with /.

I'ts obvious that /command is a command so, why show commands in public? Like in supergroups, groups etc? Commands should be private or seen only by admins.

Example: Me: /command Response: Error: command not found

This message "Error: command not found" or whatever else, is currently displayed to ALL members of the group. Imagine a command like /help, all users will see a lot of spam text to their client because all messages and commands are public. A private response per user in supergroup or group is needed here.

If someone want a public command, should type something like !command and not /command and then, handle the reply to public or privately but still in the chat not contacting the bot privately.

This is directly attached to this feature, a bot should be able to handle privately the "/me message" command and show to the public in whatever format.

gentlecolts commented 7 years ago

they could just do what skype and basically every other chat program to ever exist does and have system messages be local only. While that seems like it'd be a nice bot feature, there's no need for bots to be involved in processing this command

grigoryvp commented 7 years ago

As a long time IRC user I completely agree that it's a useful communication feature. And Skype supports it, too.

bseishen commented 6 years ago

+1 for this feature. I look a little bit special typing /me currently.

pavel-odintsov commented 6 years ago

Even HipChat supports it! Please add it! :)

lastsky commented 6 years ago

+1 for this feature! please implement this! even Skype support this.

jchook commented 6 years ago

Blown away that this is not implemented by THE chat solution of the future.

@DASPRiD already solved most of your problems in comment 2 ITT.

Lonami commented 6 years ago

With the latest alpha you can add a t.me link to yourself, e.g. "Lonami does something". It won't mention, but it will take you to the user ¯\_(ツ)_/¯ (I just can't see the benefits to why this should even remain open, Telegram is not IRC).

gentlecolts commented 6 years ago

@Lonami because it seems like a reasonably simple feature to add and people seem to want it. It's a good, common shorthand for adding formatting that indicates having done an action, and as many people have noted in this thread, is quite useful for chatting. IRC isn't even the only thing that supports it, Skype does too, for example, and it seems Discord also supports it, even if their implementation is just a basic shorthand for adding italics to the whole message.

shirishag75 commented 6 years ago

just re-sharing the gist, although comment 2 and others have already shared the meat of it long time ago.

https://www.livinginternet.com/r/ra_action.htm

SmartManoj commented 6 years ago

Workaround using ahk and python

mkahvi commented 5 years ago

Steam was mentioned not having it, but they actually had it previously and they re-added it, probably due to popular demand.

It's kinda weird, but this is actually one of the bigger reasons why my friends refuse to use Telegram, because it's so necessary for fluent communication. We mostly communicate on desktops, not mobile, so.. I guess that's moot in face of the declared mobile focus.

imukai commented 5 years ago

The "telegram isn't IRC" might be accurate but it is also rediculous. Every major chat platform since IRC has supported some sort of emotes because -- whether you do or not -- a good base of users like to roleplay. If not roleplay it's handy to add expressiveness outside of putting things in asterisks or bolding it or whatever. 2019 -- add the support.

akaWolf commented 5 years ago

@imukai don't think we should use SW, authors of what seems don't care needs of people et all.

issue is 4 years old...

RememberTheAir commented 5 years ago

I only now figured out that typing "@me" will make tdesktop suggest you to mention yourself (if you don't have an username, it will mention your display name instead).

Not really what the OP is asking for:

/me will simply replaced by their own name in bold (and optionally the entire line is kept in the username's color)

...but comes close

fireton commented 5 years ago

I moved my chat group from IRC and badly need this feature in Telegram. Please implement it. (cat_from_shrek.jpg)

:)

EccoBlackfin commented 5 years ago

Adding my vote for this issue. It's really the only feature missing from Telegram, and needs to be implemented protocol-wide.

nuclight commented 5 years ago

According to TL scheme, this is doable for at least twenty layers already:

messageActionCustomAction#fae69f56 message:string = MessageAction;

@auchri so this is not API issue anymore @john-preston any ideas of when to wait implementation?

john-preston commented 5 years ago

@nuclight Only the server side can create those messages for some events, no way to send such message by the client.

Tynach commented 5 years ago

@john-preston, perhaps the client could send a post to the server instructing the server in how the action message should look, and the server could then create them? Not exactly ideal, though... And it sounds kinda hacky.

Additionally, I feel like the messages shouldn't look the same as server messages - server-side actions should not be spoofable, in my opinion. Such issues are why Steam chat got rid of /me support in the past, before rewriting their entire chat system (at which point they added it back in).

Ideally, there'd be some sort of flag indicating whether the name should be styled as in-line with the body of the content (and if so, make it visible on their post regardless of whether the previous post is also theirs), or if the name should be separate from the post (and use the current behavior for whether or not to show the name).

I also think the color, font, styling, etc. and click-behavior of the name should be the same as it currently is.

SmartManoj commented 5 years ago

I only now figured out that typing "@me" will make tdesktop suggest you to mention yourself (if you don't have an username, it will mention your display name instead).

Not really what the OP is asking for:

/me will simply replaced by their own name in bold (and optionally the entire line is kept in the username's color)

...but comes close

Isn't this enough ?