Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

83
Visualizações
El uso de SlashCommandAttribute no funciona con Discord.Net

Los comandos de barra se han agregado a Discord.Net junto con Interaction Framework.

Al revisar la documentación, descubrí que podemos usar SlashCommandAttribute dentro de un módulo que hereda de InteractionModuleBase . Más información se puede encontrar aquí .

Tenga en cuenta que ya he tenido este bot funcionando durante más de un año, por lo que funciona completamente con comandos básicos, y estoy tratando de actualizarlo para que funcione con comandos de barra ahora.

Lo que he probado son los siguientes pasos:

  1. Dentro de mi método principal, escuché el evento listo para el cliente:

     _client.Ready += _client_Ready;
  2. Dentro de la función _client_Ready, puede encontrar el siguiente código:

     private async Task _client_Ready() { _interactionService = new InteractionService(_client); await _interactionService.AddModulesAsync(Assembly.GetEntryAssembly(), _serviceProvider); await _interactionService.RegisterCommandsToGuildAsync(_guildId); }
  3. Creé un módulo que hereda de InteractionModuleBase de la siguiente manera:

     public class TestingSlashCommandModule : InteractionModuleBase<SocketInteractionContext> { [SlashCommand("test-slash", "Echo an input")] public async Task Echo(string input) { await RespondAsync(input); } }

Cuando ejecuto el bot y voy a mi servidor de discordia, puedo ver el comando de barra registrado:

Imagen que muestra el comando de barra

Sin embargo, cuando trato de usarlo, aparece un error en Discord que dice que la aplicación no respondió y que el punto de interrupción dentro de la función Echo no se está alcanzando en absoluto.

No estoy seguro de si así es como se pretende usar los comandos de barra porque aparentemente hay otra forma de hacerlo, pero no se ve tan limpio como los módulos con los atributos.

¿Alguien ha podido usar comandos de barra dentro de los módulos usando SlashCommandAttribute y cómo?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Pude arreglar eso después de encontrar una sección en la documentación llamada Ejecución de comandos

Tuve que agregar un detector de eventos a InteractionCreated en _client dentro del evento _client_Ready :

 private async Task _client_Ready() { _interactionService = new InteractionService(_client); await _interactionService.AddModulesAsync(Assembly.GetEntryAssembly(), _serviceProvider); await _interactionService.RegisterCommandsToGuildAsync(_guildId); _client.InteractionCreated += async interaction => { var scope = _serviceProvider.CreateScope(); var ctx = new SocketInteractionContext(_client, interaction); await _interactionService.ExecuteCommandAsync(ctx, scope.ServiceProvider); }; }

Después de hacer esto, los comandos de barra se ejecutan dentro de los módulos y puedo ver el resultado.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda