我已經閱讀了幾條不同的線索,介紹聊天客戶端如何處理垃圾郵件,但我仍然不知道處理此問題的哪條路徑會獲得最佳結果。聊天客戶端垃圾郵件過濾器返工和建議
我從這個帖子中看到:Chat spam auto block for C# chat client如果您使用DateTime中的時間戳並將它們與間隔進行比較,您可以製作一個相當不錯的垃圾郵件過濾器。然而,我不是一個專業的程序員,並且很難理解比較以前的DateTime郵票和計時器間隔的概念;或者我可能會忽略這一點。
考慮到這一點我已經涉足了一些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();
我目前在學校正在接受另一個滿負荷的班。工作之間,女朋友,班級和家庭責任之間的關係使我頭腦發熱。
本地定時器僅作爲Post()方法執行時間的看門狗定時器服務器。因此,如果Post()的執行時間超過1秒,垃圾郵件將被標記。這不是你想要的,對吧? – elgonzo
對,如果垃圾郵件方法爲假,我將稍後添加一些代碼以減少郵件計數。或者你認爲別的東西應該完全使用? – gh0st
請參閱我的回答,瞭解您的代碼應實現的一般控制流程... – elgonzo