ridiculement bon marché. Il n’y a pas beaucoup de gens intéressés par ce cas d’utilisation qui sont prêts à payer pour cela. Il faut du temps pour rechercher ces sujets, écrire et maintenir le logiciel. Cela n’est pas gratuit et s’il n’y a pas beaucoup de clients, le prix le reflète.
L’autre problème est : plus le prix est bas, plus les clients sont exigeants. Je n’ai tout simplement pas le temps de m’occuper des problèmes de support et des questions des personnes qui ont payé 25 $ pour cela.
Si vous avez une suggestion sur la façon dont je peux gagner de l’argent sans être harcelé tout en vendant à un prix bas, faites-le moi savoir.
Oui, je me souviens avoir contacté pour utiliser leur plugin, et je comprends tout à fait pourquoi ils voudraient facturer ce prix. Je sais que de nombreuses communautés peuvent se permettre ce prix, mais ce n’est pas nécessairement abordable pour les communautés plus petites.
J’ai fini par créer ma propre solution en l’ajoutant à mon bot Discord (basé sur Java, car je ne pense pas que je pourrais facilement faire cela entièrement via un plugin Discourse, du moins pas encore), qui a la fonctionnalité supplémentaire d’une certaine logique bidirectionnelle. À l’avenir, j’espère rendre cette fonctionnalité accessible au public une fois mon bot Discord terminé, mais cela dépendra du temps libre dont je dispose. Voici mon bot en action au cas où quelqu’un voudrait y jeter un œil : https://p185.p2.n0.cdn.getcloudapp.com/items/4guZZEP1/b138570f-071c-4373-ada5-b7ed2cd63b26.mp4
De plus, si quelqu’un serait intéressé par un testeur bêta une fois que je rendrai cela public, n’hésitez pas à m’envoyer un message privé - je n’ai pas de date estimée pour savoir quand j’aurai quelque chose qui fonctionne, mais je pourrais envisager d’en faire une fonctionnalité autonome si nécessaire.
Vous réalisez qu’un framework de bot Discord Discourse existe déjà ici que vous pouvez forker, modifier et étendre ? Discord Bot Construction Kit 🤖. Il gère 99 % des tâches administratives afin que vous puissiez vous concentrer sur l’aspect fonctionnel (il fonctionne même sur votre serveur Discourse, donc aucune infrastructure supplémentaire n’est requise). Les fonctionnalités existantes servent de guide pour tout ce que vous souhaitez ajouter.
J’accepterais également des PRs si vous trouviez quelque chose d’utile pour d’autres communautés.
Je pense que je l’ai vu - je ne connais juste pas le Ruby, donc j’ai ajouté la fonctionnalité directement à mon bot sur lequel je travaillais déjà depuis des années avant d’utiliser Discourse. J’envisagerais certainement de faire une PR pour cela, mais quand j’ai écrit cette fonctionnalité pour ma communauté, j’étais sous pression, donc apprendre le Ruby était hors de question. J’envisagerais certainement de prendre le Ruby comme mon prochain langage de programmation et d’essayer cela ! ![]()
Edit : Merci aussi d’avoir mentionné qu’il est facilement personnalisable - je ne m’en étais pas rendu compte au début. J’ai juste été intimidé la dernière fois que j’ai essayé de modifier un plugin Discourse lol
Donnez une chance à Ruby, c’est une langue de programmation vraiment amusante ![]()
J’ai un problème lors du test de ce plugin après avoir tout configuré, j’obtiens une erreur de permission lors des tests.
Discordrb::Errors::NoPermission (Le bot n’a pas la permission requise pour faire cela !) lib/promotion.rb:136:in recalculate' app/models/group_user.rb:117:in recalculate_trust_level’
Je joins une capture d’écran pour référence :
Quelqu’un pourrait-il m’aider ici ?
Votre bot Discord a-t-il les autorisations correctement configurées ? Vous auriez besoin que le bot soit placé au-dessus de tous les rôles qu’il attribuerait, et qu’il ait l’autorisation Gérer les rôles ou Administrateur sur le rôle du bot.
Oui, nous avons accordé toutes les autorisations, y compris Administrateur, Gérer les rôles, Gérer les surnoms.
Ce rôle est-il supérieur à tous les autres rôles qu’il attribuerait ?
Ce plugin n’est pas activé sur notre serveur, mais il provoque des erreurs dans les journaux.
Erreur gateway_check
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/
oui, nous avons fourni un super administrateur !
Juste pour vérifier - ce plugin est-il toujours fonctionnel ou dois-je y ajouter une étiquette unmaintained / broken ?
J’ai ajouté cela à mon fichier app.yml mais pour une raison quelconque, il n’installe toujours pas libsodium. Qu’est-ce que je fais de mal ?