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

Lächerlich billig. Es gibt nicht viele Leute, die sich für diesen Anwendungsfall interessieren und bereit sind, dafür Geld zu bezahlen. Es braucht Zeit, diese Themen zu recherchieren, die Software zu schreiben und zu warten. Das ist nicht umsonst und wenn es nicht viele Kunden gibt, spiegelt sich das im Preis wider.
Das andere Problem ist: Je niedriger der Preis, desto anspruchsvoller die Kunden. Ich habe einfach keine Zeit, mich mit Support-Problemen und Fragen von Leuten zu befassen, die 25 $ dafür bezahlt haben.
Wenn Sie einen Vorschlag haben, wie ich Geld verdienen kann, ohne belästigt zu werden, während ich zu einem niedrigen Preis verkaufe, lassen Sie es mich bitte wissen.

5 „Gefällt mir“

Ja, ich erinnere mich, dass ich mich wegen der Nutzung ihres Plugins gemeldet habe, und ich kann absolut verstehen, warum sie so viel verlangen wollen. Ich weiß, dass viele Communities sich diesen Preis leisten können, aber er ist nicht unbedingt erschwinglich für kleinere Communities.

Ich habe schließlich meine eigene Lösung entwickelt, indem ich sie zu meinem Discord-Bot hinzugefügt habe (Java-basiert, da ich nicht glaube, dass ich dies einfach vollständig über ein Discourse-Plugin erledigen könnte, zumindest noch nicht), der die zusätzliche Funktionalität einer bidirektionalen Logik bietet. In Zukunft hoffe ich, diese Funktion öffentlich zugänglich zu machen, sobald mein Discord-Bot fertig ist, aber das wird davon abhängen, wie viel Freizeit ich habe. Hier ist mein Bot in Aktion, falls jemand einen Blick darauf werfen möchte: https://p185.p2.n0.cdn.getcloudapp.com/items/4guZZEP1/b138570f-071c-4373-ada5-b7ed2cd63b26.mp4

Außerdem, falls jemand daran interessiert wäre, Beta-Tester zu werden, sobald ich dies öffentlich mache, können Sie mir gerne eine Direktnachricht senden – ich habe keine Schätzung, wann ich etwas Funktionierendes haben werde, aber ich könnte erwägen, dies bei Bedarf zu einer eigenständigen Funktion zu machen.

6 „Gefällt mir“

Ihnen ist bewusst, dass hier bereits ein Discourse Discord Bot Framework existiert, das Sie forken, modifizieren und erweitern können? Discord Bot Construction Kit 🤖. Es erledigt 99 % der Verwaltungsaufgaben, sodass Sie sich auf die funktionale Seite konzentrieren können (es läuft sogar auf Ihrem Discourse-Server, sodass keine zusätzliche Infrastruktur erforderlich ist). Die vorhandenen Funktionen dienen als Leitfaden für alles, was Sie hinzufügen möchten.

Ich würde auch PRs akzeptieren, wenn Sie etwas Nützliches für andere Communities entwickeln würden.

8 „Gefällt mir“

Ich glaube, das habe ich gesehen – ich bin nur nicht mit Ruby vertraut, also habe ich die Funktion direkt zu meinem Bot hinzugefügt, an dem ich schon seit Jahren vor der Nutzung von Discourse gearbeitet habe. Ich würde definitiv in Erwägung ziehen, dafür einen PR zu machen, aber als ich diese Funktion für meine Community schrieb, hatte ich Zeitdruck, sodass das Erlernen von Ruby außer Frage stand. Ich würde definitiv in Erwägung ziehen, Ruby als meine nächste Programmiersprache zu wählen und es stattdessen zu versuchen! :grinning:

Bearbeitung: Danke auch, dass Sie darauf hingewiesen haben, dass es leicht anpassbar ist – das war mir zuerst nicht bewusst. Ich war nur eingeschüchtert, als ich das letzte Mal versucht habe, ein Discourse-Plugin zu modifizieren lol

4 „Gefällt mir“

Gib Ruby eine Chance, es ist eigentlich eine unterhaltsame Programmiersprache :slight_smile:

7 „Gefällt mir“

Ich habe Probleme beim Testen dieses Plugins. Nach der Einrichtung erhalte ich beim Testen eine Berechtigungsfehlermeldung.
Discordrb::Errors::NoPermission (Der Bot hat nicht die erforderliche Berechtigung, dies zu tun!) lib/promotion.rb:136:in recalculate' app/models/group_user.rb:117:in recalculate_trust_level’

Anbei ein Screenshot als Referenz:

Kann mir hier jemand helfen?

2 „Gefällt mir“

Hat dein Discord-Bot die Berechtigungen richtig eingestellt? Du müsstest den Bot über allen Rollen haben, die er zuweisen würde, und die Berechtigung Rollen verwalten oder Administrator für die Rolle des Bots benötigen.

1 „Gefällt mir“

Ja, wir haben alle Berechtigungen erteilt, einschließlich Administrator, Rollen verwalten, Spitznamen verwalten.

Ist diese Rolle über allen anderen Rollen, die zugewiesen werden würden?

Dieses Plugin ist auf unserem Server nicht aktiviert, verursacht aber Fehler in den Protokollen.

gateway_check Error

discordrb (3.3.0) lib/discordrb/bot.rb:673:in `gateway_check’

discordrb (3.3.0) lib/discordrb/bot.rb:156:in `servers’

plugins/discourse-discord-sync/lib/utils.rb:72:in `sync_user’

plugins/discourse-discord-sync/plugin.rb:42:in `block (3 levels) in activate!’

activesupport (6.1.4.1) lib/active_support/callbacks.rb:427:in `instance_exec’

activesupport (6.1.4.1) lib/active_support/callbacks.rb:427:in `block in make_lambda’

activesupport (6.1.4.1) lib/active_support/callbacks.rb:235:in `block in halting_and_conditional’

activesupport (6.1.4.1) lib/active_support/callbacks.rb:516:in `block in invoke_after’

activesupport (6.1.4.1) lib/active_support/callbacks.rb:516:in `each’

activesupport (6.1.4.1) lib/active_support/callbacks.rb:516:in `invoke_after’

activesupport (6.1.4.1) lib/active_support/callbacks.rb:131:in `block in run_callbacks’

activesupport (6.1.4.1) lib/active_support/callbacks.rb:137:in `run_callbacks’

activesupport (6.1.4.1) lib/active_support/callbacks.rb:824:in `_run_save_callbacks’

activerecord (6.1.4.1) lib/active_record/callbacks.rb:457:in `create_or_update’

activerecord (6.1.4.1) lib/active_record/timestamp.rb:126:in `create_or_update’

activerecord (6.1.4.1) lib/active_record/persistence.rb:474:in `save’

activerecord (6.1.4.1) lib/active_record/validations.rb:47:in `save’

activerecord (6.1.4.1) lib/active_record/transactions.rb:298:in `block in save’

activerecord (6.1.4.1) lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status’

activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/database_statements.rb:318:in `transaction’

activerecord (6.1.4.1) lib/active_record/transactions.rb:350:in `with_transaction_returning_status’

activerecord (6.1.4.1) lib/active_record/transactions.rb:298:in `save’

activerecord (6.1.4.1) lib/active_record/suppressor.rb:44:in `save’

activerecord (6.1.4.1) lib/active_record/persistence.rb:628:in `block in update’

activerecord (6.1.4.1) lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status’

activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/database_statements.rb:318:in `transaction’

activerecord (6.1.4.1) lib/active_record/transactions.rb:350:in `with_transaction_returning_status’

activerecord (6.1.4.1) lib/active_record/persistence.rb:626:in `update’

lib/post_creator.rb:613:in `update_user_counts’

lib/post_creator.rb:214:in `block in create’

lib/post_creator.rb:408:in `block (2 levels) in transaction’

activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction’

activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction’

activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize’

activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt’

activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize’

activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt’

activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize’

activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction’

activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction’

activerecord (6.1.4.1) lib/active_record/transactions.rb:209:in `transaction’

lib/post_creator.rb:407:in `block in transaction’

lib/distributed_mutex.rb:33:in `block in synchronize’

lib/distributed_mutex.rb:29:in `synchronize’

lib/distributed_mutex.rb:29:in `synchronize’

lib/distributed_mutex.rb:14:in `synchronize’

lib/post_creator.rb:406:in `transaction’

lib/post_creator.rb:204:in `create’

lib/new_post_manager.rb:285:in `perform_create_post’

lib/new_post_manager.rb:223:in `perform’

app/controllers/posts_controller.rb:197:in `create’

actionpack (6.1.4.1) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action’

actionpack (6.1.4.1) lib/abstract_controller/base.rb:228:in `process_action’

actionpack (6.1.4.1) lib/action_controller/metal/rendering.rb:30:in `process_action’

actionpack (6.1.4.1) lib/abstract_controller/callbacks.rb:42:in `block in process_action’

activesupport (6.1.4.1) lib/active_support/callbacks.rb:117:in `block in run_callbacks’

app/controllers/application_controller.rb:387:in `block in with_resolved_locale’

i18n (1.9.1) lib/i18n.rb:328:in `with_locale’

app/controllers/application_controller.rb:387:in `with_resolved_locale’

activesupport (6.1.4.1) lib/active_support/callbacks.rb:126:in `block in run_callbacks’

activesupport (6.1.4.1) lib/active_support/callbacks.rb:137:in `run_callbacks’

actionpack (6.1.4.1) lib/abstract_controller/callbacks.rb:41:in `process_action’

actionpack (6.1.4.1) lib/action_controller/metal/rescue.rb:22:in `process_action’

actionpack (6.1.4.1) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action’

activesupport (6.1.4.1) lib/active_support/notifications.rb:203:in `block in instrument’

activesupport (6.1.4.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument’

activesupport (6.1.4.1) lib/active_support/notifications.rb:203:in `instrument’

actionpack (6.1.4.1) lib/action_controller/metal/instrumentation.rb:33:in `process_action’

actionpack (6.1.4.1) lib/action_controller/metal/params_wrapper.rb:249:in `process_action’

activerecord (6.1.4.1) lib/active_record/railties/controller_runtime.rb:27:in `process_action’

actionpack (6.1.4.1) lib/abstract_controller/base.rb:165:in `process’

actionview (6.1.4.1) lib/action_view/rendering.rb:39:in `process’

rack-mini-profiler (2.3.3) lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method’

actionpack (6.1.4.1) lib/action_controller/metal.rb:190:in `dispatch’

actionpack (6.1.4.1) lib/action_controller/metal.rb:254:in `dispatch’

actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:50:in `dispatch’

actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:33:in `serve’

actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:50:in `block in serve’

actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `each’

actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `serve’

actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:842:in `call’

lib/middleware/omniauth_bypass_middleware.rb:71:in `call’

rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call’

rack (2.2.3) lib/rack/conditional_get.rb:40:in `call’

rack (2.2.3) lib/rack/head.rb:12:in `call’

actionpack (6.1.4.1) lib/action_dispatch/http/permissions_policy.rb:22:in `call’

lib/content_security_policy/middleware.rb:12:in `call’

lib/middleware/anonymous_cache.rb:356:in `call’

rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context’

rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call’

actionpack (6.1.4.1) lib/action_dispatch/middleware/cookies.rb:689:in `call’

actionpack (6.1.4.1) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call’

activesupport (6.1.4.1) lib/active_support/callbacks.rb:98:in `run_callbacks’

actionpack (6.1.4.1) lib/action_dispatch/middleware/callbacks.rb:26:in `call’

actionpack (6.1.4.1) lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call’

actionpack (6.1.4.1) lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call’

actionpack (6.1.4.1) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call’

logster (2.10.1) lib/logster/middleware/reporter.rb:43:in `call’

railties (6.1.4.1) lib/rails/rack/logger.rb:37:in `call_app’

railties (6.1.4.1) lib/rails/rack/logger.rb:28:in `call’

config/initializers/100-quiet_logger.rb:23:in `call’

config/initializers/100-silence_logger.rb:31:in `call’

actionpack (6.1.4.1) lib/action_dispatch/middleware/remote_ip.rb:81:in `call’

actionpack (6.1.4.1) lib/action_dispatch/middleware/request_id.rb:26:in `call’

lib/middleware/enforce_hostname.rb:23:in `call’

rack (2.2.3) lib/rack/method_override.rb:24:in `call’

actionpack (6.1.4.1) lib/action_dispatch/middleware/executor.rb:14:in `call’

rack (2.2.3) lib/rack/sendfile.rb:110:in `call’

actionpack (6.1.4.1) lib/action_dispatch/middleware/host_authorization.rb:92:in `call’

rack-mini-profiler (2.3.3) lib/mini_profiler/

Ja, wir haben Super-Admin bereitgestellt!

Nur zur Überprüfung – ist dieses Plugin noch funktionsfähig oder soll ich ein unmaintained / broken Tag darauf setzen?

2 „Gefällt mir“

Ich habe dies zu meiner app.yml-Datei hinzugefügt, aber aus irgendeinem Grund wird libsodium immer noch nicht installiert. Was mache ich falsch?