Discord 동기화: Discourse 포럼과 Discord 서버를 동기화합니다

정말 터무니없이 비쌉니다. 이 용도를 위해 돈을 지불할 의사가 있는 사용자는 많지 않습니다. 이러한 주제를 조사하고 소프트웨어를 작성 및 유지보수하는 데 시간이 걸립니다. 이는 무료가 아니며, 고객이 많지 않으면 가격에 그 점이 반영됩니다.
또 다른 문제는 가격이 낮을수록 고객의 요구 사항이 더 까다로워진다는 것입니다. 25달러를 지불한 사람들의 지원 문제와 질문에 대응할 시간이 정말 없습니다.
낮은 가격으로 판매하면서도 골치 아픈 일을 겪지 않으면서 돈을 벌 수 있는 방법이 있다면 알려주세요.

5개의 좋아요

네, 그 플러그인을 사용하려고 문의했던 적이 있는데, 왜 그런 가격을 책정하고 싶은지 충분히 이해가 갑니다. 그 가격대를 감당할 수 있는 커뮤니티가 꽤 많다는 건 알지만, 작은 커뮤니티들에게는 반드시 부담이 없는 가격은 아니죠.

결국 저는 제 Discord 봇(아직 Discourse 플러그인으로만 이걸 완전히 구현하기는 어렵다고 생각해서 Java 기반으로 만들었습니다)에 기능을 추가하여 자체 솔루션을 만들었습니다. 여기에는 양방향 로직이라는 추가 기능도 포함되어 있습니다.将来, Discord 봇 개발이 완료되면 이 기능을 공개할 수 있도록 하기를 희망하지만, 이는 제 여유 시간에 달려 있을 것입니다. 혹시 관심 있으신 분들을 위해 봇이 작동하는 모습을 영상으로 첨부합니다: https://p185.p2.n0.cdn.getcloudapp.com/items/4guZZEP1/b138570f-071c-4373-ada5-b7ed2cd63b26.mp4

또한, 이 기능을 공개하게 되면 베타 테스터로 참여해 주실 분들에게 연락 주시면 감사하겠습니다. 언제까지 작동하는 것을 만들 수 있을지 정확한 일정은 없지만, 필요에 따라 독립적인 기능으로 만들 것을 고려해 볼 수도 있습니다.

6개의 좋아요

여기 이미 포크하고 수정 및 확장할 수 있는 Discourse Discord Bot 프레임워크가 존재한다는 것을 아시나요? Discord Bot Construction Kit 🤖. 이 프레임워크는 99%의 관리 업무를 처리해 주므로, 기능 구현에 집중할 수 있습니다 (Discourse 서버에서 직접 실행되므로 추가 인프라가 필요하지 않음). 기존 기능들은 추가하려는 기능에 대한 가이드 역할을 합니다.

다른 커뮤니티에 유용한 것을 만들어 오시면 PR도 환영합니다.

8개의 좋아요

그걸 봤던 것 같은데, Ruby에 익숙하지 않아서 이미 Discourse를 쓰기 전에 수년간 작업해온 내 봇에 해당 기능을 직접 추가했어요. PR을 보내는 것도 확실히 고려해볼 의향이 있지만, 이 기능을 내 커뮤니티에 구현할 당시 시간이 너무 촉박해서 Ruby를 배우는 건 불가능했거든요. 그래도 Ruby를 다음으로 배울 프로그래밍 언어로 삼고 이걸 시도해볼 생각은 확실히 하고 있어요! :grinning:

수정: 쉽게 커스터마이징할 수 있다는 점을 언급해줘서 감사합니다. 처음엔 그걸 몰랐거든요. 지난번에 Discourse 플러그인을 수정하려고 시도했을 때 좀 위축됐었거든요 lol

4개의 좋아요

Ruby를 한번 써보세요. 실제로 꽤 재미있는 프로그래밍 언어입니다 :slight_smile:

7개의 좋아요

이 플러그인을 설정한 후 테스트하는 중에 권한 오류가 발생하고 있습니다.
Discordrb::Errors::NoPermission (봇에 이 작업을 수행할 권한이 없습니다!) lib/promotion.rb:136:in recalculate' app/models/group_user.rb:117:in recalculate_trust_level’

참고로 스크린샷을 첨부합니다:

혹시 도와주실 수 있는 분 계신가요?

2개의 좋아요

디스코드 봇의 권한이 올바르게 설정되어 있나요? 봇이 역할을 부여할 대상보다 높은 위치에 있어야 하며, 봇의 역할에 역할 관리 또는 관리자 권한이 필요합니다.

1개의 좋아요

네, 관리자, 역할 관리, 닉네임 관리 등 모든 권한을 부여했습니다.

그 역할은 할당할 다른 모든 역할보다 우선하는 것인가요?

이 플러그인은 저희 서버에서 활성화되어 있지 않지만, 로그에 오류를 발생시키고 있습니다.

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 태그를 붙여야 할까요?

2개의 좋아요

app.yml 파일에 이 내용을 추가했는데, 어떤 이유에서인지 libsodium이 여전히 설치되지 않습니다. 제가 무엇을 잘못하고 있나요?