我已经阅读了几个关于聊天客户端应如何处理垃圾邮件的不同主题,但我仍然不知道处理此问题的哪个路径会产生最佳结果。
我从这个线程中看到:Chat spam auto block for C# chat client如果你使用来自 DateTime 的时间戳并将它们与间隔进行比较,你可以制作一个非常好的垃圾邮件过滤器。但是,无论如何我都不是专业的程序员,并且很难掌握将以前的 DateTime 标记与 Timer 间隔进行比较的概念;或者我可能错过了重点。
因此,考虑到这一点,我已经涉足了一些 C# 代码,并希望您推荐一种更好的方法来构建这个想法,或者只使用计时器、日期时间标记,或者两者兼而有之……
    private void Post()
    {
        string time = DateTime.Now.ToString("HH:mm:ss");
        string data = UserInput.Text;
        _GetData(time + " " + lUser + PROMPT + data);
        ChatWindow.SetSelected(ChatWindow.Items.Count - 1, true);
        ChatWindow.SetSelected(ChatWindow.Items.Count - 1, false);
        UserInput.Clear();
    }
    System.Timers.Timer resetTimer = new System.Timers.Timer();
    private int MessageCount { get; set; }
    private bool isSpam { get; set; }
    private void SpamEvent(object source, ElapsedEventArgs e)
    {
        if (MessageCount <= 2)
        {
            MessageCount -= 1;
            isSpam = false;
        }
        else
        {
            isSpam = true;
        }
    }
    private void ResetTimer(object source, ElapsedEventArgs e)
    {
        MessageCount = 0;
        btnEnter.Enabled = true;
    }
    private void btnEnter_Click(object sender, EventArgs e)
    {
        MessageCount += 1;
        System.Timers.Timer localtimer = new System.Timers.Timer();
        localtimer.Elapsed += new ElapsedEventHandler(SpamEvent);
        localtimer.Interval = 1000;
        localtimer.Enabled = true;
        if (isSpam == false)
        {
            Post();
        }
        if (isSpam == true)
        {
            MessageBox.Show("No spamming please");
            btnEnter.Enabled = false;
            resetTimer.Interval = 5000;
            resetTimer.SynchronizingObject = this;
            resetTimer.Enabled = true;
            resetTimer.Elapsed += new ElapsedEventHandler(ResetTimer);
        }
    }
或类似的东西:
        List<DateTime> myMessage = new List<DateTime>();
        DateTime local = new DateTime();
        local = DateTime.Now;
        myMessage.Add(local);
        int Messages = myMessage.Count;
        System.Timers.Timer localtimer = new System.Timers.Timer();
我目前正在学校上课。在工作、女朋友、课堂和家庭职责之间,这让我头晕目眩。