2017-04-22 1 views
1

Avant de me juger pour avoir posté un AUTRE problème NullReferenceException, veuillez lire mon code. Je google des erreurs NullReferenceException depuis un moment maintenant, et cela n'explique pas pourquoi cette section spécifique me donne une erreur. Cependant,e.After.VoiceChannel.Name Discord.NET - Impossible de trouver une erreur nulle

if (e.After.VoiceChannel.Name != null) 

Je l'ai aussi regardé la documentation Discord.NET, qui a n'a rien donné. Voici le fichier entier.

using Discord; 
using Discord.Commands; 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace DiscBot 
{ 
    class myBot 
    { 
     DiscordClient discord; 

     public myBot() 
     { 

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

      discord.UsingCommands(x => 
      { 
       x.PrefixChar = '~'; 
       x.AllowMentionPrefix = true; 
       x.HelpMode = HelpMode.Public; 
      }); 

      var commands = discord.GetService<CommandService>(); 

      commands.CreateCommand("greet") 
       .Description("Does a thing") 
       .Parameter("theGreeted", ParameterType.Unparsed) 
       .Do(async (e)=> 
       { 
        var msgtoRead = e.Channel.DownloadMessages(1); 

        await e.Channel.SendTTSMessage("Hello " + e.GetArg("theGreeted")); 
       }); 

      discord.UserUpdated += async (s, e) => { 
       var channel = e.Server.FindChannels("general", ChannelType.Text).FirstOrDefault(); 
       string usrnm = e.After.Name; 

       // This shouldn't get an error 
       // But when I run the code I 
       // get a Null Reference Exception 

       if (e.After.VoiceChannel.Name != null) 
       { 
        await channel.SendMessage(usrnm + " to " + e.After.VoiceChannel.Name); 
       } 
       else 
       { 

        await channel.SendMessage(usrnm + " exited"); 
       } 
      }; 


      discord.UserJoined += async (s, e) => 
      { 
       var channel = e.Server.FindChannels("mainbois", ChannelType.Text).FirstOrDefault(); 
       var user = e.User; 
       await channel.SendTTSMessage(string.Format("Another human has entered...")); 
      }; 

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

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

Toute aide est très appréciée. Merci d'avance!

P.S. S'il vous plaît châtiez si j'ai fait une simple erreur quelque part. : P

+0

modifier: 'e.After.VoiceChannel' est null. Je ne connais pas assez cet événement pour dire pourquoi. –

Répondre

1

appris que je ne peux pas vérifier

if (e.After.VoiceChannel.Name != null) 

si VoiceChannel est nulle. En d'autres termes, je ne peux pas vérifier une valeur basée sur une valeur nulle (si cela a un sens). Mon nouveau code ressemble à

if (e.After.VoiceChannel != null) 

Merci à tous ceux qui ont pris le temps de regarder mon code. : D