mautrix / discord

A Matrix-Discord puppeting bridge
https://go.mau.fi/mautrix-discord
GNU Affero General Public License v3.0
247 stars 21 forks source link

Support for Forum Channels #101

Open lepras opened 1 year ago

lepras commented 1 year ago

I don't see any mention of forum channels on the issues or the roadmap so here it goes.

Discordgo seems to have the support seeing this PR and their docs.

You can learn more about discord forums here.

We can use matrix threads for bridging this type of content and messages.

jameshi16 commented 1 year ago

If it helps in any way, here is a hacky fork I made to join threads in a forum channel: https://github.com/jameshi16/mautrix-discord

The particular file the hack is in can be found here: https://github.com/jameshi16/mautrix-discord/blob/edf071cdaa3abd7084bc32324750b70e447e33fd/commands.go#L707

To then send / receive messages from a thread in a forum channel, both the forum channel ID and the thread ID needs to be bridged. Thereafter, interacting with the thread works as if interacting with a normal Matrix channel.

yeah-mike commented 6 months ago

If it helps in any way, here is a hacky fork I made to join threads in a forum channel: https://github.com/jameshi16/mautrix-discord

The particular file the hack is in can be found here: https://github.com/jameshi16/mautrix-discord/blob/edf071cdaa3abd7084bc32324750b70e447e33fd/commands.go#L707

To then send / receive messages from a thread in a forum channel, both the forum channel ID and the thread ID needs to be bridged. Thereafter, interacting with the thread works as if interacting with a normal Matrix channel.

Is there any way to use your fork as a drop-in replacement in a docker deployment?

jameshi16 commented 6 months ago

If it helps in any way, here is a hacky fork I made to join threads in a forum channel: https://github.com/jameshi16/mautrix-discord The particular file the hack is in can be found here: https://github.com/jameshi16/mautrix-discord/blob/edf071cdaa3abd7084bc32324750b70e447e33fd/commands.go#L707 To then send / receive messages from a thread in a forum channel, both the forum channel ID and the thread ID needs to be bridged. Thereafter, interacting with the thread works as if interacting with a normal Matrix channel.

Is there any way to use your fork as a drop-in replacement in a docker deployment?

@yeah-mike, yep, I have been doing so. Just take note of the instructions (bridge forum channel ID, then the thread ID)

I've been using it like this in my docker-compose.yml:

services:
    conduit:
        image: matrixconduit/matrix-conduit
        environment:
            CONDUIT_SERVER_NAME: "xxx"
            CONDUIT_DATABASE_BACKEND: "rocksdb"
            CONDUIT_ALLOW_REGISTRATION: "false" # set to false once ready
            CONDUIT_MAX_CONCURRENT_REQUESTS: "100"
            CONDUIT_LOG: "warn"
        ports:
          - "8008:6167"
        volumes:
            - ./conduit:/var/lib/matrix-conduit/
        depends_on:
            - proxy
        networks:
            - conduit-network
    appservice-discord:
        build: https://github.com/jameshi16/mautrix-discord.git
        volumes:
            - ./discord:/data
        depends_on:
            - conduit
        networks:
            - conduit-network
        ports:
            - "29934"

networks:
    conduit-network:
erkinalp commented 1 month ago

Forum threads should be bridged as "threads as rooms".