Das Bearbeiten von Beiträgen löst eine Benachrichtigung aus

Hello,

I have been updated some featured/pinned topics and they seem to be sending out updates every time that I update them. Is there a way to disable this? “Watch first Post” shouldn’t trigger if the post is just slightly edited as far as I can tell?

Thanks!

What you’re describing is not really possible.

What do you mean by “I have been updated”? What exactly did you do, step by step? Describe it in detail? Your question is unanswerable until you provide this information.

Edits don’t alert anyone in Discourse… ever, that I can think of. You will be notified if someone else edits your post by default, using the typical Discourse notifications.

Edits notify the original author. I get notifications when @codinghorror fixes my posts with alarming frequency. (I don’t think it’s what this person is describing, but it is edits giving notifications)

Edit: oops

As I said above, already…

Sorry fort he lack of clarity.
For some reason, editing a post that I created would notify other users of the edit. It appears that it occurred in topics that used the tagging of a group and that group would be notified (even if the tag was not a new one).

  1. Create a post with multiple tags of groups of members
  2. Let it propagate and send notifications. Wait whatever number of minutes is needed for it to send out to any current watch lists/etc.
  3. Come back to the post and edit it.
  4. Add something useless, like the word unicorn and note that the right hand side of the edit window alerts that you will notify the groups in the post despite not having added or edited anything to do with those tags.
  5. Save
  6. Check the logs and note that all members in those groups are now notified of the edit (though the notifications appear as a New Topic notification.

Interesting so this is specific to group mentions? Perhaps you can try to repro this when you have time @jomaxro

It appears to be on my end at least.

I have not been able to repro this. I tested it on try, with 3 users. In one post I mentioned all of them individually, in the other I mentioned a group all 3 were in. They all received the initial mention notification, they did not receive further notifications on edit.




I’m unsure about the type of notification here. Are you referring to a notification that appears on your user profile, i.e., as an extra entry in the list that appears when you click on your avatar up right?

Or is it a small blue dot next to the topic title in the topic list?

Ich beobachte dieses Verhalten auf einer unserer Seiten.

Beim Bearbeiten eines Beitrags, der eine Gruppe erwähnt, erhalte ich folgende Warnung:

Ich kann zudem bestätigen, dass die Personen in dieser Gruppe eine neue Benachrichtigung erhalten, sobald die Änderung gespeichert wird.

Können wir das @tshenry nachstellen?

Hmm @Grayden_Shand, ich gehe davon aus, dass der Beitrag den Gruppenhinweis bereits vor der Bearbeitung erwähnt hat? Ich weiß, dass bei einem neuen Hinweis in einem Beitrag durch eine Bearbeitung dieser Benutzer/diese Gruppe benachrichtigt wird.

Ich habe zwei Szenarien getestet:

  1. Wenn du eine „Ninja-Bearbeitung

Ja, die Gruppenerwähnung war bereits im Beitrag enthalten, bevor er bearbeitet wurde. Außerdem war der Benutzer, der die Bearbeitung vorgenommen hat, ein anderer als der, dem das Thema gehörte.

Ich werde heute versuchen, das Problem in meiner Dev-Umgebung nachzustellen und mich melden, wenn ich erfolgreich war.

Ich habe es herausgefunden…

Die Benachrichtigung wird an Benutzer gesendet, die der Gruppe beigetreten sind, nachdem der Beitrag ursprünglich erstellt wurde.

Für die Benutzer, die die Benachrichtigung erhalten, ist es also das erste Mal, dass SIE eine Erwähnungsbenachrichtigung erhalten, aber nicht das erste Mal, dass JEDERMANN eine Benachrichtigung erhält.

Menschen, die von Anfang an in der Gruppe waren (und die ursprüngliche Erwähnungsbenachrichtigung erhalten haben), erhalten jedoch keine zusätzliche Benachrichtigung durch die Bearbeitung.

Schritte zur Reproduktion (erfordert zwei Benutzer)

  1. Eine neue Gruppe erstellen
  2. Einen neuen Beitrag oder ein neues Thema erstellen, das diese Gruppe erwähnt
  3. Einen neuen Benutzer erstellen
  4. Diesen Benutzer zur Gruppe hinzufügen
  5. Den Beitrag bearbeiten – Zu diesem Zeitpunkt erhält der neue Benutzer eine Benachrichtigung.
  6. Den Beitrag erneut bearbeiten – Der neue Benutzer erhält für weitere Bearbeitungen keine zusätzlichen Benachrichtigungen.

Ich bin mir nicht sicher, welches das korrekte Verhalten hier sein sollte… Ich tendiere eher dazu, Erwähnungsbenachrichtigungen bei Bearbeitungen überhaupt nicht zu senden, aber ich bin mir nicht sicher, wie kompliziert das in der Implementierung ist.

Außerdem eine weitere Anmerkung: Die Meldung „Sie stehen kurz davor, X Personen in der Gruppe zu benachrichtigen

Ah ha, danke dafür! Ich sehe definitiv das gleiche Verhalten.

Das Versenden von Erwähnungsbenachrichtigungen über eine Beitragsbearbeitung ist eine wichtige Funktion, die ich und andere gelegentlich nutzen. Daher möchten wir, dass dies erhalten bleibt, aber die Funktionsweise in Bezug auf Gruppen wirkt seltsam.

Meiner Meinung nach sollte eine Gruppe nur einmal pro Beitrag benachrichtigt werden. Benutzer, die nach einer ersten Gruppenerwähnung der Gruppe beigetreten sind, sollten keine Gruppenerwähnungsbenachrichtigung als Folge nachfolgender Beitragsbearbeitungen erhalten. Der JIT-Bildungsbanner über die Benachrichtigung der Gruppe sollte nicht während der Bearbeitung eines Beitrags angezeigt werden, wenn es seit der letzten Speicherung des Beitrags keine neuen Gruppenerwähnungen gibt.

Wenn eine Gruppe, die zuvor nicht erwähnt wurde, in einer Bearbeitung erwähnt wird, sollten sie benachrichtigt werden. So funktioniert es bei Benutzerverweisen. Wir sollten auch den entsprechenden Bildungsbanner sehen, wenn eine neue Gruppe erwähnt wird.

Ich denke, wir können einfach eine bedingte Logik basierend auf dem Vorhandensein eines Datensatzes in der Tabelle group_mentions hinzufügen. Wir erstellen einen Datensatz zum Zeitpunkt des Speicherns eines Beitrags.

Was hältst du davon, @codinghorror?

Ich verstehe, aber sollten wir das wirklich als einen Bug betrachten, den wir beheben wollen?

Wenn wir alle @group-Benachrichtigungen bei Änderungen vollständig unterdrücken, führt das Bearbeiten einer neuen @group dazu, dass keine Erwähnungsbenachrichtigung erfolgt. Das wäre eine erhebliche Änderung gegenüber dem bisherigen Funktionsweise von Benachrichtigungen und würde viele überraschen.

Wenn wir es komplizierter machen und nur neue @groups bei Änderungen benachrichtigen, landen wir bei komplexem Code, der durch Diffs wandern und viel mehr Verwaltungsaufwand erfordern würde.

Mir fällt jedenfalls keine einfache Lösung dafür ein.

Stell dir also einen Beitrag mit drei verschiedenen Gruppenerwähnungen vor. Er wird bearbeitet, und eine vierte Erwähnung wird hinzugefügt.

Beim Speichern der Bearbeitung können wir eine Abfrage wie diese verwenden, um die aktuelle Liste der Gruppenerwähnungen für diesen Beitrag zu ermitteln.

-- [Parameter]
-- text :post_id

select gm.group_id, g.name
from group_mentions gm
join groups g on (gm.group_id = g.id)
where post_id = :post_id

Dann können wir, indem wir die Ergebnisse der Abfrage mit der Liste der im Beitrag erwähnten Gruppen vergleichen, die neuen Erwähnung(en) finden.

Das scheint keine allzu große Berechnung zu sein, aber vielleicht übersehe ich etwas Offensichtliches. Das klingt auch nach etwas, das als Hintergrundtask erledigt werden könnte.

Was das JIT-Banner zur Benachrichtigung der Gruppe(n) betrifft, könnte diese Logik vielleicht über einen API-Endpunkt (/post/<id>/mentions.json) exponiert werden, um diese Daten asynchron abzurufen.

Wäre es nicht einfacher, einen neuen Beitrag zu erstellen und die Leute auf diese Weise zu benachrichtigen? Ich habe ein wenig Angst davor, hier einen riesigen Turm an Komplexität aufzubauen, nur um einen relativ seltenen Sonderfall zu unterstützen.

Ich möchte nichts zu komplex machen.

Ich habe mir etwas von dem Code dafür angesehen (danke an @tshenry für den Link), und es scheint nicht so kompliziert zu sein.

Die Gruppen-Erwähnungen werden aktuell hier (L78–80) ausgelöst. Die Funktion expand_group_mentions() ist ein Generator, der die Benutzer ausgibt, die Gruppen-Erwähnungs-Benachrichtigungen erhalten sollen (unter Beachtung von Richtlinien wie SiteSetting.max_users_notified_per_group_mention).

Das scheint ein natürlicher Ort zu sein, um diese Logik unterzubringen.

In der Funktion create_notification unterdrücken wir Benachrichtigungen für alle, die bereits eine Benachrichtigung desselben Typs erhalten haben. Deshalb löst das Bearbeiten eines Beitrags mit einer Gruppen-Erwähnung eine Benachrichtigung für neue Gruppenmitglieder aus – es wird zwar eine Benachrichtigung für alle Benutzer der Gruppe generiert, aber für Personen, die die Benachrichtigung bereits erhalten haben, unterdrückt.

Ich schlage etwas Ähnliches vor, indem ich die Funktion expand_group_mentions() so anpasse, dass sie auch Gruppen herausfiltert, die bereits einen Eintrag in der Tabelle group_mentions haben.

Etwas in der Art (bitte entschuldigt mein mangelndes Wissen über Ruby-Syntax):

  def expand_group_mentions(groups, post)
    return unless post.user && groups

    Group.mentionable(post.user, include_public: false).where(id: groups.map(&:id)).each do |group|
      next if group.user_count >= SiteSetting.max_users_notified_per_group_mention

      # Prüfen, ob die Gruppe bereits erwähnt wurde
      next if GroupMentions.where(group_id: group.id, post_id: post.id).length > 0

      yield group, group.users
    end

  end

Das löst jedoch das JIT-Warnungsproblem nicht.

Ich versuche, dabei zu helfen, das Problem zu lösen. Sagt mir gerne, ob ich nur nervig bin… :slight_smile:

Ich wollte gerade eine neue Support-Frage stellen, habe aber dieses Thema gefunden.

Es scheint damit zusammenzuhängen.

Wenn ich eine Nachricht poste und feststelle, dass ich einige Personen hätte benachrichtigen sollen, die ich nicht benachrichtigt habe – was ist dann die beste Option?

  1. Den Beitrag bearbeiten und eine Gruppe oder mehrere Personen explizit mit @ erwähnen?

  2. Eine neue Nachricht verfassen, um sie mit @ zu benachrichtigen? Dann müsste ich jedoch viele Informationen wiederholen oder einen Link zum ursprünglichen Beitrag einfügen.

Option 1 wäre meine bevorzugte (sauberere) Methode, falls möglich.

Könnte mir bitte jemand bestätigen: Benachrichtigt das explizite @-Erwähnen von Personen oder Gruppen bei einer Bearbeitung auch dann, wenn sie bisher noch nicht benachrichtigt wurden? Falls nicht, wäre das eine nützliche Funktion, sofern die Umsetzung nicht zu aufwendig ist?

PS: Wenn ich etwas vergesse, nutze ich manchmal das konfigurierbare Zeitfenster zum Bearbeiten des Beitrags, bevor die Benachrichtigungen versendet werden. Bis man jedoch so weit ist, ist man sich nie ganz sicher, ob man es rechtzeitig schafft. Man erfährt erst, ob es als Bearbeitung angezeigt wird, wenn die Bearbeitung veröffentlicht ist.

Ich nutze diese Bearbeitung, um zu testen, ob ich eine Benachrichtigung erhalte @Rhidian @codinghorror

Anscheinend nicht :confused: