2017-02-05 5 views
2

Ich habe ein Problem mit meinem Bot Beitritt Sprachkanal.Discord Bot (C#) Probleme Beitritt Voice-Kanal

Code:

using Discord; 
    using Discord.Commands; 
    using Discord.Audio; 
    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 

    namespace DodoBot 
    { 
     class MyBot 
     { 
      DiscordClient discord; 
      CommandService commands; 
      Random rand; 
      string[] cats = new string[] 
      { 
       "cate.jpg", 
       "gut.jpg", 
       "meh.jpg", 
       "ugly.jpg", 
       "wow.jpg", 
      }; 

      public MyBot() 
      { 
       rand = new Random(); 
       discord = new DiscordClient(x => 
       { 
        x.LogLevel = LogSeverity.Info; 
        x.LogHandler = Log; 
       }); 

       discord.UsingCommands(x => 
       { 
        x.PrefixChar = '!'; 
        x.AllowMentionPrefix = true; 
       }); 

       commands = discord.GetService<CommandService>(); 

       RegisterHiCommand(); 
       RegisterCatdCommand(); 
       RegisterCatCommand(); 

       OnJoin(); 
       OnLeave(); 

       discord.UsingAudio(x => 
       { 
        x.Mode = AudioMode.Outgoing; 
        RegisterJoinVoiceCommand(); 
       }); 

       discord.ExecuteAndWait(async() => 
       { 
        await discord.Connect("MyToken", TokenType.Bot); 
       }); 
      } 

      private void RegisterJoinVoiceCommand() 
      { 
       commands.CreateCommand("summon") 
        .Do(async (e) => 
        { 
         await e.Channel.SendMessage("```Joining masta!```"); 
         await discord.GetService<AudioService>().Join(discord.FindServers("VoiceChannel").FirstOrDefault().VoiceChannels.FirstOrDefault()); 
        }); 
      } 

      private void RegisterCatdCommand() 
      { 
       commands.CreateCommand("catd") 
        .Do(async (e) => 
        { 
         Message[] msg2Del; 
         msg2Del = await e.Channel.DownloadMessages(1); 
         await e.Channel.DeleteMessages(msg2Del); 
         int imgIndex = rand.Next(cats.Length); 
         await e.Channel.SendFile("Cats/"+cats[imgIndex]); 
        }); 
      } 
      private void RegisterCatCommand() 
      { 
       commands.CreateCommand("cat") 
        .Do(async (e) => 
        { 
         int imgIndex = rand.Next(cats.Length); 
         await e.Channel.SendFile("Cats/" + cats[imgIndex]); 
        }); 
      } 
      private void RegisterHiCommand() 
      { 
       commands.CreateCommand("hi") 
        .Do(async (e) => 
        { 
         await e.Channel.SendMessage("HelloWorld!"); 
        }); 
      } 

      private void OnJoin() 
      { 
       discord.UserJoined += async (s, e) => 
       { 
        var channel = e.Server.FindChannels("general").FirstOrDefault(); 
        var user = e.User.Name; 
        await channel.SendMessage(string.Format("@"+user + " has joined!")); 
       }; 
      } 

      private void OnLeave() 
      { 
       discord.UserLeft += async (s, e) => 
       { 
        var channel = e.Server.FindChannels("general").FirstOrDefault(); 
        var user = e.User.Name; 
        await channel.SendMessage(string.Format("@"+user + " has left!")); 
       }; 
      } 

      private void Log(object sender, LogMessageEventArgs e) 
      { 
       Console.WriteLine(e.Message); 
      } 
     } 
    } 

Ich habe alles getan, wie es in der Dokumentation here geschrieben.

Es führt den SendMessange-Befehl aus, aber es tritt dem Sprachkanal nicht bei.

Aber Visual Studio sagt: here.

Habe ich einen Fehler gemacht?

Vielen Dank für Ihre Antworten.

+0

Verwenden Sie discord.NET 0.9.4? Die Dokumentation ist für diese Version. – WQYeo

+0

Nein, ich bin auf 0.9.6. Aber ich kann die Dokumentation dafür nicht finden. –

+0

Um ehrlich zu sein bin ich nicht so vertraut mit den Audio-Systemen in Discord.NET 0.9.6, können Sie hier bei den Entwicklern des API-Pakets hier suchen: https://discord.gg/JBp6gSN – WQYeo

Antwort

1

Ruft Ihr Server "VoiceChannel" auf?

Wenn nicht, als durch discord.FindServers("VoiceChannel")

Ihr Kunde ruft, höchstwahrscheinlich, gründet nichts (null) statt Sammlung von Servern und versucht, Sprachkanäle von First() von ihnen

zu holen Beispiel: Wenn Ihr Server "Mein Server" heißt und über einen Sprachkanal mit dem Namen "VoiceChannel" verfügt, können Sie diesen Aufbau verwenden, um Ihren Sprachkanal zu erhalten:

Verwandte Themen