2016-12-14 2 views
0

Je suis actuellement en train de créer mon propre bot discordant en utilisant C# et l'API Discord.NET, mais comme la documentation est limitée et que je n'ai codé en C# que pour un temps limité, J'ai rencontré un problème.Comment cibler un utilisateur spécifique

J'ai commandé de fermer le bot depuis Discord, mon problème est que tout le monde peut réellement utiliser cette commande pour l'éteindre, et je ne sais pas comment cibler un utilisateur spécifique afin qu'il ne sera pas exécuté lorsque quelqu'un d'autre utilise la commande.

Mon code:

private void RegisterShutdownCommand() 
{ 
    commands.CreateCommand("exit") 
     .Do((e) => 
      { 
       Environment.Exit(0); 
      }); 

} 

Merci à l'avance, s'il y a des informations que j'ai raté qui pourrait être utile pour une solution, demandez-moi. :)

+0

Vous pouvez vérifier l'éther l'ID utilisateur avant d'exécuter la commande ou d'intégrer [autorisations] (http://rtd.discord.foxbot.me/ fr/legacy/features/permissions.html) – Jim

Répondre

0

Si vous êtes OK avec l'aide de la discorde de la personne autorisée ID (4 chiffres), vous pouvez utiliser: e.User.Id.ToString().Equals("####")

0

Puisque vous ne spécifiez pas votre qui vous voulez être en mesure d'utiliser vos commandes seulement, je vais le prendre comme seul vous (le propriétaire du bot) peut être capable d'utiliser la commande.

Tout d'abord, allez copier votre ID utilisateur dans la discorde. Vous pouvez le faire en cliquant droit sur votre nom dans la discorde et cliquez sur « ID copie »: http://prnt.sc/dw9zcw [Assurez-vous que vous avez le mode développeur sous tension afin de le faire]

Ensuite, vous pouvez essayer:

private void RegisterShutdownCommand() 
{ 
    commands.CreateCommand("exit") 
     .Do((e) => 
      { 
       if (e.User.Id != <Your_User_ID>) 
       { 
        /*Code to execute when its not the owner.*/ 
       } 
       else 
       { 
        Environment.Exit(0); 
       } 
      }); 

} 

Fondamentalement, il suffit d'utiliser les instructions if-else pour vérifier si l'ID de l'utilisateur en discord est le propriétaire. Alternativement, ce @chessburgur suggéré fonctionne également dans la condition if.

Espérons que cela répond à votre question.

+0

Merci beaucoup! c'était exactement ce dont j'avais besoin. – HallowedFlux

0

Bien que la réponse par HallowedFlux est bon, vous devriez changer autour de quelque chose comme ça (code propre + facile à réutiliser):

commands.CreateCommand("exit") 
    .AddCheck((command, user, channel) => user.Id == <Your_User_ID>) 
    .Do((e) => 
     { 
      Environment.Exit(0); 
     }); 

Il peut également être utilisé pour la vérification des autorisations, etc. Vous pouvez modifier pour envoyer un message au aswell de chat si nécessaire comme ceci:

commands.CreateCommand("exit") 
    .AddCheck((command, user, channel) => user.Id == <Your_User_ID>, "Only the owner can use this command!") 
    .Do((e) => 
     { 
      Environment.Exit(0); 
     });