Discord Sync: sincronize um fórum Discourse com um servidor Discord

:warning: Este plugin é automático; ele não possui nenhum comando. Se você está procurando um framework genérico para bots do Discord, consulte o kit de construção de bots de @merefield aqui, no qual este plugin foi baseado.

Discord Sync Sincronize um fórum Discourse com um servidor Discord :discourse:

Este plugin permite sincronizar certos dados relacionados a usuários entre uma instância do fórum Discourse e um servidor Discord. Ele criará um Bot do Discord para gerenciar todas as permissões e disparar ações no servidor.

Funcionalidades

  • Sincronizar grupos do Discourse com cargos do Discord
    Ele gerenciará automaticamente os cargos no servidor Discord com base nos grupos aos quais um usuário tem acesso no Discourse.

    • Cargo Verificado
      Você pode adicionar um “cargo verificado” que será concedido a todos os usuários do Discord que vincularam uma conta do Discord.

    • Cargos Seguros
      Como este plugin forçará a existência dos mesmos cargos no Discord que os grupos no Discourse, você pode definir uma lista de cargos que o bot ignorará e que você poderá gerenciar manualmente no servidor Discord.

  • Sincronizar nome de usuário do Discourse com apelido no Discord
    Se você deseja reconhecer usuários pelo nome de usuário do fórum, pode forçá-los a ter o mesmo apelido no servidor Discord que o nome de usuário que possuem no Discourse.

Gatilhos

O plugin executará uma sincronização completa do Discourse para o Discord (apelido e cargos) nos seguintes casos:

  • Discourse
    • Usuário é adicionado a um grupo
    • Usuário é removido de um grupo
    • Perfil do usuário é atualizado
      Destinado à sincronização de nome de usuário-apelido
    • Usuário é autenticado
      Será executado apenas se o provedor de autenticação for o Discord, para garantir que uma primeira sincronização seja realizada logo após vincular as contas
  • Discord
    • Usuário entra em um servidor Discord
      Ele buscará no banco de dados um usuário com o ID do Discord fornecido e, em seguida, executará o trabalho de sincronização

Instalação

:exclamation: Este plugin depende do Discord OAuth2 para identificar e vincular contas do Discourse e do Discord. Se você não deseja permitir que os usuários façam login com o Discord, mas deseja manter a vinculação de contas, consulte a solução para este tópico.

Pré-requisitos

Este plugin requer libsodium (necessário pela gem Ruby do Discord). Para instalá-lo, modifique seu arquivo .yml e adicione o seguinte código:

hooks:
    before_code:
       - exec:
              cmd:
                - apt-get update
                - apt-get install -y libsodium-dev

Passos de instalação

  1. Siga o guia padrão em Como instalar um plugin com a URL deste repositório: https://github.com/barreeeiroo/discourse-discord-sync.git
  2. Siga este guia para configurar o Login com Discord na sua instância do Discourse.
  3. No portal de desenvolvedor do Discord, vá para Bot e adicione-o ao seu servidor. Certifique-se de conceder a ele o cargo mais alto possível.
  4. No Discourse, em Configurações do Plugin, defina discord sync token com o token do Bot que aparece no passo anterior.

Opções de configuração

  • discord sync enabled: Ativar ou desativar a integração
  • discord sync token: Token do Bot do Discord
  • discord sync prefix: Prefixo para comandos (apenas !ping por enquanto)
  • discord sync admin channel id: Canal para postar mensagens de registro (mudanças de apelido, mudanças de cargo)
  • discord sync username: Se verdadeiro, sincronizará todos os apelidos do servidor Discord com seus nomes de usuário no Discourse
  • discord sync verified role: Cargo a ser adicionado a todos os usuários que possuem uma conta no Discourse
  • discord sync safe roles: Lista de cargos que o bot ignorará e marcará como concedidos manualmente no Discord

Como fazer

Para vincular contas, se você permitir que os usuários se autentiquem com o Discord, eles podem simplesmente usar esse provedor. Caso contrário, eles deverão acessar suas Preferências de Conta, rolar até Contas Associadas e clicar em Conectar na linha do Discord.

Demonstração ao vivo

Estamos usando este plugin atualmente em nossa instância do Discourse na Comunidade Kodular, com o servidor Discord em kodul.ar/discord:

Agradecimentos

  • Discourse Bot, feito por @merefield
    Muito obrigado ao Robert por fornecer a estrutura deste plugin. Ele certamente ajudou a estabelecer a base de todo este plugin, permitindo executar um bot do Discord em uma instância do Discourse (e parabéns pela sua dica para instalar o libsodium!).

  • Discourse Discord Sync, feito por @angus
    Uma alternativa para sincronizar níveis de confiança com cargos do Discord sem a necessidade de nenhum bot.

  • Login with Discord, feito pela equipe do Discourse
    Este plugin não seria possível sem a integração do Discord OAuth2 (antigo plugin), para vincular contas do Discourse e do Discord.

    • Partially enable login option, feito por @Falco e @Roman
      E obrigado ao Falco e ao Roman por fornecerem uma opção para habilitar um provedor de login apenas para “vincular” contas, sem realmente habilitar a opção de autenticação.
  • discordrb
    Este plugin depende da gem discordrb, que permite conectar à API do Discord usando Ruby.

29 curtidas

Isso é realmente legal! Eu sou mais fã do Telegram, mas o Discord também é ótimo! Sinto que o Telegram combinaria bem com o Discourse, já que ambos são projetos de código aberto bem conhecidos focados em comunicação.

Seria muito legal se isso tivesse um recurso de republicação cruzada. Se alguém dissesse algo no chat do Discord, isso criaria uma resposta em um thread específico do Discord conhecido como “thread da sala de chat”. Isso daria um impulso ao SEO do seu site Discourse, graças a todo o novo conteúdo dentro do thread do chat.

4 curtidas

Eu também gosto muito do Telegram, e o usávamos com um grupo de chat público. Mas há alguns dias mudamos para o Discord, porque tínhamos mais de 1 mil membros e é bastante difícil moderar um grupo tão grande. Foi fácil fazer isso no Discord com o sistema de cargos deles.

4 curtidas

Bom trabalho :slight_smile:

Além do Bot do Discord de @merefield, também há um plugin de sincronização entre grupo do Discourse e função do Discord puramente OAuth2 (sem bot) aqui (por exemplo, sincronizar nível de confiança 3 com uma função do Discord):

5 curtidas

Isso sincroniza o Discourse → Discord. No entanto, confiamos mais nos nossos cargos do Discord do que nos grupos do Discourse para identificar os tipos de partes interessadas. Por isso, seria ótimo se esse plugin também pudesse realizar uma sincronização Discord → Discourse, ou seja, adicionar usuários do Discourse a grupos com base nos seus cargos no Discord, conceder emblemas a usuários do Discourse com base nos seus cargos no Discord, alterar o nome de usuário do Discourse para corresponder ao nome de usuário do Discord (e não o contrário), etc.

1 curtida

Seria possível fazer com que isso sincronize no sentido inverso? Ou seja, sincronizar cargos do Discord para grupos do Discourse, apelidos, etc.

Nós gerenciamos cargos e afins no Discord e preferiríamos enviá-los para o Discourse.

2 curtidas

Se você encontrar algo assim, por favor, me avise.

Isso parece muito legal. A única coisa é: como ele faz a correspondência com o grupo no Discord vindo do Discourse? É puramente pelo nome? Se for, você poderia fazer com que definamos qual grupo corresponde a qual função usando o ID da função do Discord? Se não for essa solução, você acha que poderia adicionar uma lista branca de funções? Eu tenho apenas algumas funções que possuem grupos no Discourse, mas utilizo muitas funções no Discord.

1 curtida

Essa funcionalidade em particular é muito importante para nós, já que gerenciamos todas as nossas funções via Discord. Seria ótimo ter uma maneira de sincronizar os grupos do Discord com o Discourse. Mesmo que eles sejam apenas “sincronizados” por nome e as permissões, etc., sejam configuradas posteriormente.

@barreeeiroo: você tem algum plano para algo assim? Ou tem alguma sugestão sobre como proceder? O gerenciamento manual de funções via “Safe Roles” é quase suficiente. Tenho funções com espaços no nome e, portanto, não consigo adicioná-las ao campo Safe Roles. Em vez de atualizar manualmente todas as minhas funções no Discord e adicioná-las sem espaços, existe outro caminho que eu possa seguir?

Seria tão bom ter os grupos do Discord “empurrados” para os grupos do Discourse, se possível.

Obrigado pelo seu trabalho neste plugin!

Edição: A proposta de usar IDs de função em vez de nomes com certeza resolveria muitos dos meus problemas.

1 curtida

Ainda estou com problemas para configurar isso. Para as funções no Discord, ele procura por um ID ou nome? Além disso, em vez de “funções protegidas”, você poderia adicionar a opção de sincronizar apenas funções específicas?

Não conheço Ruby, senão eu ofereceria minha ajuda. Provavelmente vou aprender o básico ou apenas implementar algo via API em Java.

Encontrei meu problema, tinha o nome do canal de administrador em vez de seu ID. Agora só preciso fazer algumas verificações de permissão/função para ver por que nada realmente acontece.

1 curtida

Eu só queria mencionar: eu criei o inverso deste plugin, que sincroniza cargos do Discord com grupos do Discourse: https://www.youtube.com/watch?v=C5paAvTYty4

5 curtidas

Existe alguma forma de sincronizar as funções do Discord com o Discourse, em vez de sincronizar as funções do Discourse com o Discord?

Esse é o objetivo deste plugin? Ele está com defeito? Dê uma olhada também no meu plugin de bot vinculado no OP, que executa discourse → discord (embora usando um comando de bot)

2 curtidas

Todos os plugins aqui, concedem as funções que você tem no Discourse à sua conta do Discord. Ele não concede as suas funções do Discord à sua conta do Discourse.

Essa é a oposto da sua pergunta original?

O plugin do @spirobel faz isso, acredito?

2 curtidas

Não, ele faz um exemplo se você tiver “Community Moderator” no Discourse, ele mudará sua função no Discord.
Mas se você tiver “Community Moderator” no Discord, ele não mudará sua função no Discourse.

2 curtidas

Acho que você pode ter perdido o que eu estava me referindo: Discord Sync: sync a Discourse forum with a Discord server - #17 by spirobel

A você @spirobel

4 curtidas

Perdi isso, o plugin dele é um plugin feito sob medida por 400 dólares.

1 curtida

ele está realmente vendendo isso por 400$? isso é ridículo.

1 curtida