reactiflux / discord-irc

Connects Discord and IRC channels by sending messages back and forth.
MIT License
1.2k stars 293 forks source link

Discord reply support #573

Open StepS- opened 3 years ago

StepS- commented 3 years ago

The bridge will need to account for Discord users replying to other messages. At the moment, IRC users will not see the person being replied to and the original message, just the reply message.

Possible syntaxes (tag + quoting the first few words of the original message):

Condensed:

<User1> I think that's a great idea, what do you think?
<Bridge> [DiscordUser] @User1 "I think that's a great idea..." yeah agreed

Multi-line (tag first):

<User1> I think that's a great idea, what do you think?
<Bridge> [DiscordUser] @User1 "I think that's a great idea..."
<Bridge> [DiscordUser] yeah agreed

Multi-line (tag last, mimic blockquotes):

<User1> I think that's a great idea, what do you think?
<Bridge> [DiscordUser] > I think that's a great idea...
<Bridge> [DiscordUser] @User1 yeah agreed
CelticMinstrel commented 3 years ago

I would propose an alternative syntax (which could also be applied to quotes, as they run together with the reply in a bad way right now):

<Bridge> [DiscordUser] @User1 > I think that's a great idea...
<Bridge> [DiscordUser] yeah agreed
Vortikai commented 3 years ago

I also would like this. StepS's format is easier for me to read, though.

CelticMinstrel commented 3 years ago

I don't terribly mind StepS's format but if that's settled on as easier to read then I would definitely like to see it applied to quotes as well, if that's possible. I realize quotes probably use the > character in the markup but it should be possible to process that away?

Vortikai commented 3 years ago

I think what I misunderstand is that StepS- is using one distinct user function from another that you're talking about. StepS's is when someone quotes or replies to a previous message in the Discord server.

<IRCUser1> I think that's a great idea, what do you think?

DiscordUser clicks on the reply button from this message in Discord and types:

yeah agreed

Which outputs to IRC when entered in one line:

<Bridge> [DiscordUser] @IRCUser1 "I think that's a great idea..." yeah agreed

The Discord block quote, >, to indicate quotations, e.g. from something outside of previous Discord messages, is also a good idea. This is your proposal for that function:

<Bridge> [DiscordUser] @User1 > I think that's a great idea...
<Bridge> [DiscordUser] yeah agreed

But could also probably be the Discord block quote > before a message uses one line in IRC.

When DiscordUser types in the message field

> Doctors, nurses, infectious disease experts and hospital leaders have united in warning Americans against traveling or gathering in large groups for Thanksgiving, a US holiday traditionally marked by bringing extended family and friends around a dinner table.

It can output this when entered in IRC: <Bridge> [DiscordUser] "Doctors, nurses, infectious disease experts and hospital leaders have united in warning Americans against traveling or gathering in large groups for Thanksgiving, a US holiday traditionally marked by bringing extended family and friends around a dinner table."

Or I could be stupid and misunderstanding the whole thing

CelticMinstrel commented 3 years ago

You're basically correct, but I also thought it made sense to present the two features in the way, which is why I brought it up on an otherwise unrelated issue report. Both reply and block quote are quoting something after all, just in different ways.

Throne3d commented 3 years ago

This project is in maintenance mode, so it's unlikely that we'll add this feature any time soon! I'm also not sure if this is exposed by the discord.js library yet, so it may not be technically possible in the near future. If someone came up with an especially complete PR that addressed this, I could be convinced to merge it.

I'd expect most attempts to address this to be controversial in some fashion, especially if they reformat the underlying quote, especially as this bot is used with non-English languages. If someone were to implement this, I'd recommend sticking with something simple (e.g. the two-message format, with the first message prefixed by >) or making it configurable. I don't think reformatting the regular quote markdown from Discord makes sense at this stage – only the special built-in Reply feature.

StepS- commented 3 years ago

discord.js got the support for this merged a few days ago: https://github.com/discordjs/discord.js/pull/4874

For the format, I don't mind which one gets picked, but I've updated the OP with more possible variants. Though, if we do split it into multiple messages, there's one downside where IRC anti-flood has a higher chance to trigger (depending on the volume of messages). Or a race condition where someone sends a message in-between. In most cases this is negligible, but good to keep in mind. There's also the issue with !command passthrough where it would probably have to send 3 messages unless combined in a way.

fuzzy76 commented 3 years ago

FWIW, I'd actually prefer just prefixing the message with the name of the user being replied to. The rest can usually be inferred from context. And it feels more "IRC like" (which is a more terse medium).