我想制作一个阅读消息的不和谐黑名单机器人,但我不能让他阅读消息

Posted

技术标签:

【中文标题】我想制作一个阅读消息的不和谐黑名单机器人,但我不能让他阅读消息【英文标题】:I want to make a discord blacklister bot that reads messages but i can't make him read the messages 【发布时间】:2017-10-30 02:22:31 【问题描述】:

我想制作一个不和谐的机器人来将某些单词列入黑名单,为此我试图首先阅读用户发送的消息并检查该消息中的单词是否被列入黑名单,然后删除该消息,但我没有不知道如何让机器人读取消息

【问题讨论】:

询问“我从哪里开始”的问题通常过于宽泛,不适合本网站。人们有自己解决问题的方法,因此不可能有正确的答案。好好阅读Where to Start,然后写下你的帖子。 【参考方案1】:

要阅读消息,您需要为 Discord.net 为您提供的 MessageRecieved 事件分配一个回调函数。

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
    


【讨论】:

谢谢你的帮助,但我不知道如何检查邮件是否被列入黑名单并删除它。我知道我必须写下我想用这些括号中的消息,但我不能使用与告诉它在一个人编写的命令中做什么相同的行,所以如果你能再帮助我一次,我将非常感激。【参考方案2】:

好的,所以我做了一些事情,现在我有了这个

 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);
        
    

但是 toBlacklist 是一个包含更多单词的数组,如果我不传入引号中的字符串而不是它,它不会删除消息

【讨论】:

【参考方案3】:

一些非常简单和草率的代码,但它应该可以工作

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();
    

【讨论】:

以上是关于我想制作一个阅读消息的不和谐黑名单机器人,但我不能让他阅读消息的主要内容,如果未能解决你的问题,请参考以下文章

阻止某些消息的不和谐机器人

如何删除我的不和谐机器人在特定频道中发送的先前消息?

我正在尝试制作一个等待用户消息的不和谐机器人,如果提到三个标签,它会给出滴答反应

我将如何制作一个可以指出链接的不和谐机器人?

如何为不和谐服务器制作“!踢”命令消息?

创建一个记录所有消息的不和谐机器人