정말 터무니없이 비쌉니다. 이 용도를 위해 돈을 지불할 의사가 있는 사용자는 많지 않습니다. 이러한 주제를 조사하고 소프트웨어를 작성 및 유지보수하는 데 시간이 걸립니다. 이는 무료가 아니며, 고객이 많지 않으면 가격에 그 점이 반영됩니다.
또 다른 문제는 가격이 낮을수록 고객의 요구 사항이 더 까다로워진다는 것입니다. 25달러를 지불한 사람들의 지원 문제와 질문에 대응할 시간이 정말 없습니다.
낮은 가격으로 판매하면서도 골치 아픈 일을 겪지 않으면서 돈을 벌 수 있는 방법이 있다면 알려주세요.
네, 그 플러그인을 사용하려고 문의했던 적이 있는데, 왜 그런 가격을 책정하고 싶은지 충분히 이해가 갑니다. 그 가격대를 감당할 수 있는 커뮤니티가 꽤 많다는 건 알지만, 작은 커뮤니티들에게는 반드시 부담이 없는 가격은 아니죠.
결국 저는 제 Discord 봇(아직 Discourse 플러그인으로만 이걸 완전히 구현하기는 어렵다고 생각해서 Java 기반으로 만들었습니다)에 기능을 추가하여 자체 솔루션을 만들었습니다. 여기에는 양방향 로직이라는 추가 기능도 포함되어 있습니다.将来, Discord 봇 개발이 완료되면 이 기능을 공개할 수 있도록 하기를 희망하지만, 이는 제 여유 시간에 달려 있을 것입니다. 혹시 관심 있으신 분들을 위해 봇이 작동하는 모습을 영상으로 첨부합니다: https://p185.p2.n0.cdn.getcloudapp.com/items/4guZZEP1/b138570f-071c-4373-ada5-b7ed2cd63b26.mp4
또한, 이 기능을 공개하게 되면 베타 테스터로 참여해 주실 분들에게 연락 주시면 감사하겠습니다. 언제까지 작동하는 것을 만들 수 있을지 정확한 일정은 없지만, 필요에 따라 독립적인 기능으로 만들 것을 고려해 볼 수도 있습니다.
여기 이미 포크하고 수정 및 확장할 수 있는 Discourse Discord Bot 프레임워크가 존재한다는 것을 아시나요? Discord Bot Construction Kit 🤖. 이 프레임워크는 99%의 관리 업무를 처리해 주므로, 기능 구현에 집중할 수 있습니다 (Discourse 서버에서 직접 실행되므로 추가 인프라가 필요하지 않음). 기존 기능들은 추가하려는 기능에 대한 가이드 역할을 합니다.
다른 커뮤니티에 유용한 것을 만들어 오시면 PR도 환영합니다.
그걸 봤던 것 같은데, Ruby에 익숙하지 않아서 이미 Discourse를 쓰기 전에 수년간 작업해온 내 봇에 해당 기능을 직접 추가했어요. PR을 보내는 것도 확실히 고려해볼 의향이 있지만, 이 기능을 내 커뮤니티에 구현할 당시 시간이 너무 촉박해서 Ruby를 배우는 건 불가능했거든요. 그래도 Ruby를 다음으로 배울 프로그래밍 언어로 삼고 이걸 시도해볼 생각은 확실히 하고 있어요! ![]()
수정: 쉽게 커스터마이징할 수 있다는 점을 언급해줘서 감사합니다. 처음엔 그걸 몰랐거든요. 지난번에 Discourse 플러그인을 수정하려고 시도했을 때 좀 위축됐었거든요 lol
Ruby를 한번 써보세요. 실제로 꽤 재미있는 프로그래밍 언어입니다 ![]()
이 플러그인을 설정한 후 테스트하는 중에 권한 오류가 발생하고 있습니다.
Discordrb::Errors::NoPermission (봇에 이 작업을 수행할 권한이 없습니다!) lib/promotion.rb:136:in recalculate' app/models/group_user.rb:117:in recalculate_trust_level’
참고로 스크린샷을 첨부합니다:
혹시 도와주실 수 있는 분 계신가요?
디스코드 봇의 권한이 올바르게 설정되어 있나요? 봇이 역할을 부여할 대상보다 높은 위치에 있어야 하며, 봇의 역할에 역할 관리 또는 관리자 권한이 필요합니다.
네, 관리자, 역할 관리, 닉네임 관리 등 모든 권한을 부여했습니다.
그 역할은 할당할 다른 모든 역할보다 우선하는 것인가요?
이 플러그인은 저희 서버에서 활성화되어 있지 않지만, 로그에 오류를 발생시키고 있습니다.
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/
네, 슈퍼 관리자 기능을 제공했습니다!
확인 차 여쭤봅니다 - 이 플러그인이 여전히 정상적으로 작동하는 건가요, 아니면 unmaintained / broken 태그를 붙여야 할까요?
app.yml 파일에 이 내용을 추가했는데, 어떤 이유에서인지 libsodium이 여전히 설치되지 않습니다. 제가 무엇을 잘못하고 있나요?