Kit de Construção para Discord Bot 🤖

Desculpe, linguagem de fórum da velha guarda, Tópicos do Discourse em vez de Threads do Discord.

Ficarei feliz em pagar por funcionalidades personalizadas, mas acho que encontrei uma solução alternativa apenas movendo o tópico depois que ele é criado :thinking: acho que foi muito simples

Threads do Discord existem há cerca de 2 anos? Caramba, estou ficando velho :laughing: perdendo a noção do tempo

Mas sim, me pergunto se seria fácil adicionar suporte a Imagem e Menção :thinking: ?

me dê um orçamento :wink:

image


1 curtida

Sim, por favor, continue esta conversa aqui no Discourse!

Eu também estou implementando este plugin para sincronizar com um servidor Discord!

Isso significa que os cargos no Discord são copiados para o Discourse? Ou vice-versa? Em última análise, seria melhor permitir ambas as opções de qualquer maneira.

1 curtida

Aguardo seu PR

1 curtida

Como o meu? PR? Que PR?

@merefield Oi! Ótimo trabalho nisso. Como muitos, tenho certeza, encontrei esta postagem tentando procurar plugins ou bots que possam conectar o Discourse e o Discord de uma forma ou de outra.

Neste ponto, eu estava prestes a desistir e contratar um desenvolvedor para cuidar disso para mim, mas sou um crente em código aberto e sou grato por ter tropeçado neste tópico primeiro.

Em uma das comunidades do Discord que ajudo a moderar, existem várias bibliotecas de diferentes autores cujas comunidades se sobrepõem e, portanto, eles usam esse Discord e o canal relevante para suporte técnico nessa biblioteca.

A solução ideal para SEO, construção de base de conhecimento e conveniência seria que todos usassem um fórum Discourse, mas, em igualdade de condições, as pessoas simplesmente preferem postar suas perguntas no Discord e a parte que responde fica encarregada de encontrar alguma solução manual para replicar essa conversa no Discourse.

Na tentativa de combater essa ineficiência sem forçar uma experiência de usuário ruim (por exemplo, “Bem-vindo ao Discord, agora use o Discourse e repita a mesma pergunta novamente”), eu gostaria que o comentário principal de cada canal de biblioteca tivesse o potencial de gerar automaticamente um novo tópico no fórum Discourse. Isso se tornaria spam rapidamente, então eu gostaria que fosse acionado apenas se:

  1. se transformar em um thread (implicando que foi uma pergunta que foi realmente respondida)

  2. foi respondido com um emoji escolhido por uma função autorizada (suporte técnico, moderador, administrador, etc.)

A partir daí, quaisquer comentários de acompanhamento nesse thread do Discord seriam automaticamente seguidos e postados como respostas no mesmo tópico pai do Discourse também. (Nota: Não é importante que existam contas de usuário - enviar como “sistema” ou um bot designado seria aceitável, desde que mencione o nome de usuário de origem no corpo das postagens)

Com base nesses requisitos, tenho algumas perguntas:

  1. o bot em questão neste tópico está pronto para isso?

  2. Se não, quais partes não estão prontas ainda ou ainda não foram planejadas? (Vejo que threads é algo “em andamento”, mas se for uma questão de prioridades financeiras, posso postar uma recompensa saudável para torná-lo realidade)

  3. Se for necessário postar essa recompensa para desenvolvimento, qual é o método apropriado para comissão? Quais são os requisitos e expectativas (custos, prazos, etc.)?

Agradeço o trabalho que você (e todos!) fizeram até agora e aguardo sua resposta oportuna.

~carrot

Olá @carrotcypher,

Este plugin gratuito é mantido por mim (como parte do Pavilion) em regime de melhores esforços.

Não há um roteiro e o trabalho em recursos só acontece quando há um patrocinador externo.

Seu caso de uso é interessante.

Este “bot” depende deste gem Ruby, que é uma dependência crítica.

Ainda não há suporte a Threads em uma versão oficial, no entanto, parece que algum suporte foi adicionado ao branch principal, mas não tenho certeza até que ponto. Isso seria um trabalho em si para descobrir e talvez discutir com eles se eles planejam um lançamento em algum momento. A documentação deles só é atualizada a cada lançamento. Não é suficiente ter suporte no branch principal, eles precisam atualizar o gem, idealmente.

Se você está falando sério sobre este projeto, recomendo que discuta o projeto com a equipe de gerenciamento de projetos do Pavilion em primeira instância, embora você esteja livre para postar em Marketplace, é claro.

Vá aqui e clique em contato e siga as instruções: https://pavilion.tech/solutions/

1 curtida

@merefield Olá, instalei o plugin mas não consigo fazer o bot responder a comandos no meu servidor.
Ele exibe corretamente a mensagem “O bot administrador do Discourse iniciou o turno!”, mas depois disso ele não reage a nada.

Estranhamente, ele funciona quando envio uma mensagem direta para ele no Discord. Verifiquei as permissões no servidor e elas parecem estar configuradas corretamente (dei ao bot permissões de administrador).

Estranho, eu verifiquei isso na versão mais recente do Discourse e está funcionando.

O que acontece quando você digita Ping! no Discord (maiúsculas são importantes)?

Verifique seus logs, vê alguma mensagem de erro?

não reage ao Ping! (mas funciona em mensagens diretas)

logs

Bem, está com problemas com o token nas suas configurações de alguma forma.

Você colocou algum caractere estranho nele ou não o inseriu?

image

Desisti. Acho que não era a ferramenta certa para o meu caso de uso de qualquer maneira.
Não sei por que não funcionou. Fiz tudo com cuidado, várias vezes.
Talvez o Discord esteja agindo de forma estranha?
De qualquer forma, obrigado por tentar me ajudar.

1 curtida

O que você estava tentando fazer funcionalmente?

Sim, boa solução, e o comando necessário é este:

::DiscordBot::Bot.discord_bot.stop

Isso irá parar o bot adicional na sessão do console do Rails e deixar o servidor principal atual em execução.

@satonotdead, você pode gostar desta solução.

Adicionei esta informação ao OP.

2 curtidas

Desculpe, apenas revisando as postagens aqui e notei que dei um conselho incorreto e desde então implementei hooks que respondem a eventos do Discourse que podem agir no Discord. Algumas dessas podem já ser úteis para você e essa técnica pode ser estendida para outros eventos:

1 curtida

Com agradecimentos ao meu patrocinador e com ajuda adicional de @RGJ, trago algumas atualizações importantes:

  • RECURSO; Adiciona a capacidade de copiar facilmente Threads discretas do Discord para o Discourse, estendendo e aprimorando o comando existente !disccopy
  • MELHORIA: Atualiza o plugin com o código mais recente do discordrb (3.5.0)
  • RECURSO: Adiciona suporte a multisite (obrigado @RGJ!!)
  • RECURSO: Reinicia a thread do bot se o token for alterado ou se ele for habilitado (para que você não precise reiniciar o servidor host) (obrigado novamente @RGJ!!)

@klausagnoletti, @Fma965 com esta atualização da API, finalmente temos a capacidade de interagir com Threads do Discord via API, que são essencialmente apenas “canais” adicionais.

2 curtidas

Ah, finalmente!

Uma verificação funcional para evitar que o bot seja iniciado em pontos inadequados do processo*!

Você não iniciará um novo bot mais quando:

  • migrando alterações no banco de dados
  • abrindo o console do rails (portanto, não há mais necessidade de pará-lo).

Como resultado, o bate-papo do bot de reconstrução é reduzido em pelo menos 50%, então ele agora só deve anunciar a si mesmo duas vezes :sweat_smile:

Me avise se você tiver algum problema com esta última alteração.

Crédito a @RGJ pela sugestão! :pray:

*principalmente! :slight_smile:

1 curtida

Só para dizer que recentemente:\n\n* CORREÇÃO: Sincronização automática de mensagens Discord → Discourse, que aparentemente estava quebrada desde a última atualização!!\n* RECURSO: Adicionado um nível de suporte para sincronização automática de Discord Embeds.\n\nAproveitem!

Olá, bom trabalho no script! obrigado por fazer isso. Tive algumas perguntas… com que frequência o bot sincroniza os membros nas funções? Acabei de configurar o Discourse e este foi um dos primeiros plugins que instalei. Criei um grupo no www, me adicionei e se eu digitar manualmente !discsync ele adicionará a tag do Discord ao meu nome normalmente, agora se eu me remover do grupo no www, ou adicionar outra pessoa… nada acontece a menos que eu digite manualmente !discsync no Discord. Isso está como pretendido ou deveria estar sincronizando a cada poucos minutos, a cada 10 minutos?

É manual.
Você pode dar uma olhada neste fork: Discord Sync: sync a Discourse forum with a Discord server, mas acredito que ele não é mantido e está quebrado (eu também pedi para essa pessoa fazer um PR, mas enfim!).
Sinta-se à vontade para fazer um PR de uma solução mais automatizada ou você pode me contratar para trabalhar nisso, ou Marketplace
Afinal, é um “kit de construção” :slight_smile: