Discord Sync: Synchronisierung eines Discourse-Forums mit einem Discord-Server

:warning: Dieses Plugin ist automatisch; es verfügt über keinen Befehl. Wenn Sie nach einem generischen Discord-Bot-Framework suchen, überprüfen Sie bitte @merefields Bot-Konstruktions-Kit hier, auf dem dieses Plugin basiert.

Discord Sync Synchronisieren Sie ein Discourse-Forum mit einem Discord-Server :discourse:

Dieses Plugin ermöglicht die Synchronisierung bestimmter benutzerbezogener Daten zwischen einer Discourse-Forum-Instanz und einem Discord-Server. Es erstellt einen Discord-Bot, der alle Berechtigungen verwaltet und auf bestimmte Aktionen im Server reagiert.

Funktionen

  • Discourse-Gruppen mit Discord-Rollen synchronisieren
    Es verwaltet automatisch Rollen im Discord-Server basierend auf den Gruppen, auf die ein Benutzer in Discourse Zugriff hat.

    • Verifizierte Rolle
      Sie können eine „verifizierte Rolle" hinzufügen, die allen Discord-Benutzern gewährt wird, die ein Discord-Konto verknüpft haben.

    • Sichere Rollen
      Da dieses Plugin sicherstellt, dass dieselben Rollen in Discord wie Gruppen in Discourse vorhanden sind, können Sie eine Liste von Rollen festlegen, die der Bot ignoriert und die Sie im Discord-Server manuell verwalten können.

  • Discourse-Benutzername mit Discord-Nickname synchronisieren
    Wenn Sie Benutzer an ihrem Forum-Benutzernamen erkennen möchten, können Sie erzwingen, dass ihr Discord-Server-Nickname mit dem Benutzernamen in Discourse übereinstimmt.

Auslöser

Das Plugin führt eine vollständige Synchronisierung von Discourse zu Discord (Nickname und Rollen) in folgenden Fällen durch:

  • Discourse
    • Benutzer wird einer Gruppe hinzugefügt
    • Benutzer wird aus einer Gruppe entfernt
    • Benutzerprofil wird aktualisiert
      Zweck: Synchronisierung von Benutzernamen und Nickname
    • Benutzer wird authentifiziert
      Dies wird nur ausgeführt, wenn der Authentifizierungsanbieter Discord ist, um sicherzustellen, dass eine erste Synchronisierung unmittelbar nach der Verknüpfung der Konten durchgeführt wird.
  • Discord
    • Benutzer tritt einem Discord-Server bei
      Es sucht in der Datenbank nach einem Benutzer mit der angegebenen Discord-ID und führt dann den Synchronisierungsauftrag aus.

Installation

:exclamation: Dieses Plugin erfordert Discord OAuth2 zur Identifizierung und Verknüpfung von Discourse- und Discord-Konten. Wenn Sie nicht möchten, dass sich Benutzer mit Discord anmelden, Sie aber die Kontoverknüpfung beibehalten möchten, lesen Sie bitte die Lösung zu diesem Thema.

Voraussetzungen

Dieses Plugin erfordert libsodium (erforderlich für das Discord Ruby-Gem). Um es zu installieren, bearbeiten Sie Ihre .yml-Datei und fügen Sie folgenden Code hinzu:

hooks:
    before_code:
       - exec:
              cmd:
                - apt-get update
                - apt-get install -y libsodium-dev

Installationsschritte

  1. Befolgen Sie die Standardanleitung unter So installieren Sie ein Plugin mit dieser Repository-URL: https://github.com/barreeeiroo/discourse-discord-sync.git
  2. Befolgen Sie diese Anleitung, um die Anmeldung mit Discord in Ihrer Discourse-Instanz einzurichten.
  3. Gehen Sie im Discord-Entwicklerportal zu „Bot" und fügen Sie ihn Ihrem Server hinzu. Stellen Sie sicher, dass Sie ihm die höchstmögliche Rolle gewähren.
  4. Legen Sie in Discourse unter Plugin-Einstellungen discord sync token mit dem Bot-Token fest, das im vorherigen Schritt angezeigt wird.

Konfigurationsoptionen

  • discord sync enabled: Ob die Integration aktiviert werden soll oder nicht
  • discord sync token: Bot-Token von Discord
  • discord sync prefix: Präfix für Befehle (derzeit nur !ping)
  • discord sync admin channel id: Kanal, in dem Protokollierungsnachrichten (Nicknamensänderungen, Rollenänderungen) veröffentlicht werden
  • discord sync username: Wenn true, werden alle Discord-Server-Nicknames mit ihrem Discourse-Benutzernamen synchronisiert
  • discord sync verified role: Rolle, die allen Benutzern mit einem Discourse-Konto hinzugefügt wird
  • discord sync safe roles: Liste der Rollen, die der Bot ignoriert und in Discord als manuell gewährt markiert

Anleitung

Um Konten zu verknüpfen: Wenn Sie Benutzern die Authentifizierung mit Discord erlauben, können sie einfach diesen Anbieter verwenden. Wenn nicht, müssen sie zu ihren Kontoeinstellungen gehen, nach unten zu Verknüpfte Konten scrollen und auf Verbinden in der Discord-Zeile klicken.

Live-Demo

Wir verwenden dieses Plugin derzeit in unserer Discourse-Instanz bei der Kodular-Community, mit dem Discord-Server unter kodul.ar/discord:

Danksagung

  • Discourse Bot, erstellt von @merefield
    Vielen Dank an Robert für die Bereitstellung des Grundgerüsts dieses Plugins. Es hat definitiv dazu beigetragen, die Basis für dieses gesamte Plugin zu schaffen und ermöglicht den Betrieb eines Discord-Bots in einer Discourse-Instanz (und Lob für seinen Trick, libsodium zu installieren!).

  • Discourse Discord Sync, erstellt von @angus
    Eine Alternative zur Synchronisierung von Vertrauensstufen in Discord-Rollen ohne die Notwendigkeit eines Bots.

  • Login with Discord, erstellt vom Discourse-Team
    Dieses Plugin wäre ohne die Discord OAuth2-Integration (früher ein Plugin) nicht möglich gewesen, um sowohl Discourse- als auch Discord-Konten zu verknüpfen.

    • Anmeldeoption teilweise aktivieren, erstellt von @Falco und @Roman
      Und vielen Dank an Falco und Roman für die Bereitstellung einer Option, um einen Anmeldeanbieter nur zum „Verknüpfen" von Konten zu aktivieren, ohne die Authentifizierungsoption tatsächlich zu aktivieren.
  • discordrb
    Dieses Plugin basiert auf dem discordrb-Gem, das eine Verbindung zur Discord-API mit Ruby ermöglicht.

29 „Gefällt mir“

Das ist wirklich toll! Ich bin selbst eher ein Telegram-Fan, aber Discord ist auch großartig! Ich habe das Gefühl, dass Telegram gut zu Discourse passen würde – beide sind bekannte Open-Source-Projekte mit Fokus auf Kommunikation.

Es wäre cool, wenn es eine Cross-Posting-Funktion gäbe. Wenn jemand im Discord-Chat etwas schreibt, würde dies eine Antwort in einem bestimmten Discord-Thread erstellen, der als „Chat-Room-Thread

4 „Gefällt mir“

Ich mag Telegram auch sehr, und wir haben es mit einer öffentlichen Chatgruppe genutzt. Aber vor ein paar Tagen sind wir zu Discord gewechselt, da wir über 1.000 Mitglieder hatten und es ziemlich schwierig ist, eine so große Gruppe zu moderieren. Mit dem Rollensystem von Discord war das sehr einfach umzusetzen.

4 „Gefällt mir“

Gute Arbeit :slight_smile:

Zusätzlich zu @merefields Discord Bot gibt es hier auch ein reines OAuth2-Plugin (ohne Bot) zur Synchronisierung von Discord-Rollen mit Discourse-Gruppen (z. B. Synchronisierung des Vertrauensniveaus 3 mit einer Discord-Rolle):

5 „Gefällt mir“

Dies synchronisiert Discourse → Discord. Da wir jedoch für die Identifizierung von Stakeholder-Typen mehr auf unsere Discord-Rollen als auf Discourse-Gruppen setzen, wäre es großartig, wenn dieses Plugin auch eine Synchronisierung von Discord → Discourse durchführen könnte. Das bedeutet beispielsweise: Discourse-Benutzer basierend auf ihren Discord-Rollen zu Gruppen hinzufügen, Discourse-Benutzern basierend auf ihren Discord-Rollen Abzeichen zuweisen, den Discourse-Nutzernamen an den Discord-Nutzernamen anpassen (und nicht umgekehrt) usw.

1 „Gefällt mir“

Wäre es möglich, dies so einzurichten, dass die Synchronisation in umgekehrter Richtung erfolgt? D. h. Rollen von Discord in Discourse-Gruppen, Nicknames usw. zu übertragen.

Wir verwalten Rollen und Ähnliches über Discord und würden diese lieber nach Discourse übertragen.

2 „Gefällt mir“

Wenn du so etwas findest, lass es mich bitte wissen.

Das sieht wirklich cool aus. Die einzige Frage ist: Wie stimmt es mit der Gruppe auf Discord aus Discourse überein? Geschieht das ausschließlich über den Namen? Wenn ja, könntest du es so gestalten, dass wir festlegen, welche Gruppe zu welcher Rolle gehört, indem wir die Rollen-ID von Discord verwenden? Falls diese Lösung nicht in Frage kommt, denkst du, du könntest eine Whitelist für Rollen hinzufügen? Ich habe nur wenige Rollen, die Gruppen auf Discourse haben, aber viele Rollen auf Discord nutzen.

1 „Gefällt mir“

Diese spezielle Funktion ist uns sehr wichtig, da wir alle unsere Rollen über Discord verwalten. Es wäre schön, eine Möglichkeit zu haben, die Gruppen von Discord mit Discourse zu synchronisieren. Selbst wenn sie nur „synchronisiert

1 „Gefällt mir“

Ich habe immer noch Probleme bei der Einrichtung. Sucht das System bei Discord-Rollen nach einer ID oder einem Namen? Könntest du außerdem statt „geschützter Rollen

Ich habe mein Problem gefunden, ich hatte den Namen des Admin-Kanals anstelle seiner ID. Jetzt muss ich nur noch einige Berechtigungs-/Rollenprüfungen durchführen, um zu sehen, warum nichts passiert.

1 „Gefällt mir“

Ich wollte nur erwähnen: Ich habe das Gegenteil dieses Plugins gebaut, das Discord-Rollen mit Discourse-Gruppen synchronisiert: https://www.youtube.com/watch?v=C5paAvTYty4

5 „Gefällt mir“

Gibt es eine Möglichkeit, die Discord-Rollen mit Discourse zu synchronisieren, anstatt die Discourse-Rollen mit Discord zu synchronisieren?

Das ist der Sinn dieses Plugins? Ist es kaputt? Schau dir auch mein Bot-Plugin an, das im OP verlinkt ist und Discourse → Discord durchführt (wenn auch über einen Bot-Befehl).

2 „Gefällt mir“

Alle Plugins hier, geben Ihnen die Rollen, die Sie in Discourse haben, für Ihr Discord-Konto. Es gibt Ihnen nicht Ihre Discord-Rollen in Ihrem Discourse-Konto.

Das ist das Gegenteil deiner ursprünglichen Frage?

Ich glaube, das Plugin von @spirobel macht das?

2 „Gefällt mir“

Nein, es ist ein Beispiel dafür, dass wenn du „Community Moderator“ in Discourse hast, es deine Discord-Rolle ändert.
Aber wenn du „Community Moderator“ in Discord hast, ändert es deine Rolle in Discourse nicht.

2 „Gefällt mir“

Ich glaube, Sie haben übersehen, worauf ich mich bezog: Discord Sync: sync a Discourse forum with a Discord server - #17 by spirobel

An Ihnen, @spirobel

4 „Gefällt mir“

Das habe ich verpasst, sein Plugin ist ein maßgeschneidertes Plugin für 400 USD.

1 „Gefällt mir“

Verkauft er das wirklich für 400$? Das ist doch lächerlich.

1 „Gefällt mir“