ridiculously cheap. There are not many people interested in this usecase that are willing to pay money for it. It takes time to research these topics, write and maintain the software. That is not for free and if there are not many customers the price reflects that.
The other issue is: the lower the price the more demanding the customers. I just dont have the time to deal with support issues and questions of people that paid 25$ for it.
If you have a suggestion how I can make money and not get hassled while selling at a low pricepoint, please let me know.
Yeah, I remember reaching out about using their plugin, and I can totally see why they would want to charge how much they do. I know that plenty of communities can afford that price point but, it isnât necessarily affordable for smaller communities.
I ended up making my own solution by adding to my Discord bot (Java based since I donât think I could easily do this entirely via a Discourse plugin, at least not yet), which has the added functionality of some bidirectional logic. In the future, I am hoping to make this feature available to the public once my Discord bot is finished, but that will depend on how much free time I have. Hereâs my bot in action in case anyone wants to take a look: https://p185.p2.n0.cdn.getcloudapp.com/items/4guZZEP1/b138570f-071c-4373-ada5-b7ed2cd63b26.mp4
Also, if anyone would be interested in being a beta tester for once I make this public, feel free to send me a DM - I donât have an ETA on when Iâll have something working but, I might consider making this a standalone feature if needed.
You realise a Discourse Discord Bot framework already exists here that you can fork, modify and extend? Discord Bot Construction Kit đ¤. It does 99% of the housekeeping so you can focus on the functional side (it evens runs on your Discourse server so no additional infrastructure is required). The existing features act as a guide to whatever you want to add.
I would also accept PRs if you came up with anything useful to other communities.
I think I did see that - I just am not familiar with Ruby so, I just added the feature directly to my bot that I was already working on for years before using Discourse. I definitely would consider doing a PR for that but, when I wrote this feature for my community I was on a time crunch so learning Ruby was out of the question. Iâd definitely consider taking on Ruby as my next programming language and give this a shot though!
Edit: Also thank you for bringing up that it is easily customizable - I didnât realize that at first. I just got intimidated when I last attempted to modify a Discourse plugin lol
Give Ruby a chance, itâs actually a fun programming language
Iâm having issue while testing this plugin after all setting up during the testing getting some permission error.
Discordrb::Errors::NoPermission (The bot doesnât have the required permission to do this!) lib/promotion.rb:136:in recalculate' app/models/group_user.rb:117:in
recalculate_trust_levelâ
Attaching screenshot for reference:
Could anyone help me here ?
Does your Discord bot have permissions set properly? Youâd need the bot to be above any roles that it would be assigning, and would need to have the Manage Roles
or Administrator
permission on the botâs role.
yes, We have provided all the permission including Administrator, Manage Roles, Manage Nicknames.
Is that role above all other roles that it would be assigning?
This plugin is not enabled on our server, but causing errors in the logs.
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/
yes, we have provided super admin!
Just to check - is this plugin still functional or should I put an unmaintained / broken tag on it?
Iâve added this to my app.yml file but for some reason itâs still not installing libsodium. What am I doing wrong?