ridiculamente barato. Não há muitas pessoas interessadas neste caso de uso que estejam dispostas a pagar por ele. Leva tempo para pesquisar esses tópicos, escrever e manter o software. Isso não é de graça e, se não houver muitos clientes, o preço reflete isso.
A outra questão é: quanto menor o preço, mais exigentes os clientes. Eu simplesmente não tenho tempo para lidar com problemas de suporte e perguntas de pessoas que pagaram US$ 25 por isso.
Se você tiver uma sugestão de como posso ganhar dinheiro e não ser incomodado ao vender a um preço baixo, por favor, me diga.
Sim, lembro-me de ter entrado em contato sobre o uso do plugin deles, e posso totalmente entender por que eles cobrariam o valor que cobram. Sei que muitas comunidades podem pagar esse preço, mas não é necessariamente acessível para comunidades menores.
Acabei criando minha própria solução adicionando ao meu bot do Discord (baseado em Java, já que não acho que conseguiria fazer isso facilmente apenas com um plugin do Discourse, pelo menos não ainda), que tem a funcionalidade adicional de alguma lógica bidirecional. No futuro, espero disponibilizar esse recurso ao público assim que meu bot do Discord estiver pronto, mas isso dependerá de quanto tempo livre eu tiver. Aqui está meu bot em ação caso alguém queira dar uma olhada: https://p185.p2.n0.cdn.getcloudapp.com/items/4guZZEP1/b138570f-071c-4373-ada5-b7ed2cd63b26.mp4
Além disso, se alguém tiver interesse em ser um beta tester quando eu tornar isso público, sinta-se à vontade para me enviar uma mensagem direta - não tenho uma previsão de quando terei algo funcionando, mas posso considerar tornar isso um recurso independente, se necessário.
Você percebe que um framework de bot do Discord para Discourse já existe aqui que você pode fazer fork, modificar e estender? Discord Bot Construction Kit 🤖. Ele cuida de 99% da manutenção para que você possa se concentrar no lado funcional (ele até roda no seu servidor Discourse, então nenhuma infraestrutura adicional é necessária). Os recursos existentes servem como um guia para o que você quiser adicionar.
Eu também aceitaria PRs se você criasse algo útil para outras comunidades.
Eu acho que vi isso - só não estou familiarizado com Ruby, então adicionei o recurso diretamente ao meu bot no qual já estava trabalhando há anos antes de usar o Discourse. Eu definitivamente consideraria fazer um PR para isso, mas, quando escrevi esse recurso para minha comunidade, estava com pouco tempo, então aprender Ruby estava fora de questão. Eu definitivamente consideraria adotar Ruby como minha próxima linguagem de programação e tentar isso! ![]()
Edição: Também obrigado por mencionar que é facilmente personalizável - eu não percebi isso no início. Fiquei intimidado quando tentei modificar um plugin do Discourse da última vez lol
Dê uma chance ao Ruby, é uma linguagem de programação divertida ![]()
Estou tendo problemas ao testar este plugin após toda a configuração, obtendo um erro de permissão durante o teste.
Discordrb::Errors::NoPermission (O bot não tem a permissão necessária para fazer isso!) lib/promotion.rb:136:in recalculate' app/models/group_user.rb:117:in recalculate_trust_level’
Anexando captura de tela como referência:
Alguém poderia me ajudar aqui?
Seu bot do Discord tem as permissões configuradas corretamente? Você precisaria que o bot estivesse acima de quaisquer cargos que ele fosse atribuir e precisaria ter a permissão Gerenciar Cargos ou Administrador no cargo do bot.
Sim, concedemos todas as permissões, incluindo Administrador, Gerenciar Cargos e Gerenciar Apelidos.
Essa função está acima de todas as outras que seriam atribuídas?
Este plugin não está habilitado em nosso servidor, mas está causando erros nos logs.
gateway_check Erro
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/
Sim, nós fornecemos super admin!
Só para verificar - este plugin ainda está funcional ou devo colocar uma tag de unmaintained / broken nele?
Adicionei isso ao meu arquivo app.yml, mas por algum motivo ele ainda não está instalando o libsodium. O que estou fazendo de errado?