2017-05-29 4 views
-4

Je veux faire un bot discord pour mettre certains mots en liste noire et pour cela j'essayais de lire d'abord un message qui a été envoyé par un utilisateur et vérifiez si un mot de ce message est sur la liste noire, puis supprimez le message mais je ne sais pas comment faire le bot lire les messagesJe veux faire un discord blacklister bot qui lit les messages mais je ne peux pas lui faire lire les messages

+0

Les questions qui demandent "par où commencer" sont généralement trop larges et ne conviennent pas à ce site. Les gens ont leur propre méthode pour aborder le problème et pour cette raison, il ne peut pas y avoir de réponse correcte. Donnez une bonne lecture sur [** Où commencer **] (https://softwareengineering.meta.stackexchange.com/questions/6366/where-to-start/6367#6367), puis adressez votre message. – rene

Répondre

0

Pour lire les messages, vous devez affecter une fonction de rappel à l'événement MessageRecieved Discord.net vous fournit.

public class Program { 

    public static DiscordClient client; 

    static void Main(string[] args) { 

     // Create a discord client 
     client = new DiscordClient(x => { 

       x.AppName = "Your App Name"; 

       x.AppUrl = ""; 

       x.MessageCacheSize = 0; 

       x.UsePermissionsCache = true; 

       x.EnablePreUpdateEvents = true; 

       x.LogLevel = LogSeverity.Debug; 

       x.LogHandler = OnLogMessage; 

       }); 

     // Assign a callback to the MessageRecieved event on client 
     client.MessageReceived += OnMessageRecieved; 

    } 

    // Our MessageRecieved callback 
    public static void OnMessageRecieved(object sender, MessageEventArgs args) { 
     // Your code to handle messages here, the message string can be accessed by args.Message.Text 
    } 

} 
+0

merci un peu aidé mais je ne peux pas comprendre la façon de vérifier si le message est sur la liste noire et l'effacer si elle est.Je comprends que je dois écrire ce que je veux faire avec le message entre parenthèses, mais je peux N'utilisez pas les mêmes lignes que pour lui dire quoi faire dans une commande écrite par une personne, alors si vous pouviez m'aider une fois de plus, je serais très reconnaissant. – ComxT

0

Ok donc je fait quelque chose et maintenant je cette

public static async void OnMessageReceived(object sender, MessageEventArgs e) 
    { 
     if (e.Message.Text.Contains(toBlacklist.ToString())) 
     { 
      Message[] blacklistedMessagesToDelete; 
      blacklistedMessagesToDelete = await e.Channel.DownloadMessages(1); 

      await e.Channel.DeleteMessages(blacklistedMessagesToDelete); 
     } 
    } 

mais le toBlacklist est un tableau avec des mots plus en elle et si je ne passe pas dans une chaîne entre guillemets au lieu de , il ne supprimera pas le message

0

Une partie du code très facile et bâclée, mais il devrait fonctionner

public static async void OnMessageReceived(object sender, MessageEventArgs e) 
{ 
    bool found = false; //temporary bool, most likely unneeded 
    foreach (var word in toBlacklist) 
    { 
     if (e.Message.RawText.ToLower().Contains(word.ToLower())) 
     { 
      found = true; 
     } 
    } 
    if (found) 
    { 
     await e.Message.Delete(); 
    } 
}