チャット クライアントがスパムを処理する方法についていくつかの異なるスレッドを読みましたが、この問題を処理するためのどのパスが最良の結果をもたらすかはまだわかりません。
私はこのスレッドから見てきました: C# チャット クライアントのチャット スパム自動ブロックは、DateTime のタイム スタンプを使用し、それらを間隔で比較すると、非常に優れたスパム フィルターを作成できることを示しています。ただし、私は決して熟練したプログラマーではなく、以前の DateTime スタンプと Timer 間隔を比較するという概念を理解するのに苦労しています。または、要点を見逃している可能性があります。
これを念頭に置いて、いくつかの C# コードに手を出しました。タイマー、DateTime スタンプ、またはその両方を使用してこのアイデアを構築するためのより良い方法をお勧めします...
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();
私は現在、学校で別のフルロードのクラスを受けています。仕事、ガールフレンド、クラス、家族の義務の間で、頭が混乱しています。