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
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
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:
Siga o guia padrão em Como instalar um plugin com a URL deste repositório: https://github.com/barreeeiroo/discourse-discord-sync.git
Siga este guia para configurar o Login com Discord na sua instância do Discourse.
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.
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.
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.
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.
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):
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.
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.
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.
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.
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)
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.
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.