本文整理汇总了C#中Winter.WinterBot.Timeout方法的典型用法代码示例。如果您正苦于以下问题:C# WinterBot.Timeout方法的具体用法?C# WinterBot.Timeout怎么用?C# WinterBot.Timeout使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Winter.WinterBot
的用法示例。
在下文中一共展示了WinterBot.Timeout方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ClearChat
private void ClearChat(WinterBot sender, TwitchUser user, string clearReason, int minTimeout=1)
{
bool shouldMessage = !string.IsNullOrEmpty(clearReason);
var now = DateTime.Now;
TimeoutCount timeout;
if (!m_timeouts.TryGetValue(user, out timeout))
{
timeout = m_timeouts[user] = new TimeoutCount(now);
}
else
{
shouldMessage &= (DateTime.Now > timeout.LastTimeout) && (DateTime.Now - timeout.LastTimeout).TotalMinutes > 60;
timeout.Count = GetEffectiveCount(timeout) + 1;
}
timeout.LastTimeout = now;
if (!m_chatOptions.ShouldTimeout(user))
timeout.Count = 1;
if (minTimeout < 1)
minTimeout = 1;
int duration = 0;
switch (timeout.Count)
{
case 1:
case 2:
duration = 1;
break;
case 3:
shouldMessage = !string.IsNullOrEmpty(clearReason);
duration = 5 * 60;
break;
case 4:
shouldMessage = !string.IsNullOrEmpty(clearReason);
duration = 10 * 60;
break;
case 5:
shouldMessage = !string.IsNullOrEmpty(clearReason);
duration = 8 * 60 * 60;
break;
}
if (duration < minTimeout)
duration = minTimeout;
if (shouldMessage)
{
if (duration == 1)
sender.Send(MessageType.Timeout, Importance.Med, "{0}: {1} (This is not a timeout.)", user.Name, clearReason);
else if (duration < 60)
sender.Send(MessageType.Timeout, Importance.High, "{0}: {1}", user.Name, clearReason);
else if (duration < 3600)
sender.Send(MessageType.Timeout, Importance.High, "{0}: {1} ({2} minute timeout.)", user.Name, clearReason, duration / 60);
else
sender.Send(MessageType.Timeout, Importance.High, "{0}: {1} ({2} hour timeout.)", user.Name, clearReason, duration / 3600);
}
sender.Timeout(user, duration);
timeout.LastTimeout = now.AddSeconds(duration);
}
示例2: CheckAndTimeoutSpam
private bool CheckAndTimeoutSpam(WinterBot bot, TwitchUser user, string text)
{
if (user.IsSubscriber)
return false;
if (String.IsNullOrWhiteSpace(m_clearMsg))
return false;
if (text.ToLower().Contains(m_clearMsg))
{
if (m_spamTimeout == null)
bot.Ban(user);
else
bot.Timeout(user, (int)m_spamTimeout);
return true;
}
return false;
}
示例3: ClearChat
private void ClearChat(WinterBot sender, TwitchUser user, string clearReason)
{
bool shouldMessage = !string.IsNullOrEmpty(clearReason);
var now = DateTime.Now;
TimeoutCount timeout;
if (!m_timeouts.TryGetValue(user, out timeout))
{
timeout = m_timeouts[user] = new TimeoutCount(now);
}
else
{
shouldMessage &= (DateTime.Now > timeout.LastTimeout) && (DateTime.Now - timeout.LastTimeout).TotalMinutes > 60;
int curr = timeout.Count;
int diff = (int)(now - timeout.LastTimeout).TotalMinutes / 15;
if (diff > 0)
curr -= diff;
if (curr < 0)
curr = 0;
timeout.Count = curr + 1;
}
timeout.LastTimeout = now;
if (!m_chatOptions.ShouldTimeout(user))
timeout.Count = 1;
int duration = 0;
switch (timeout.Count)
{
case 1:
case 2:
if (shouldMessage)
sender.Send(MessageType.Timeout, "{0}: {1} (This is not a timeout.)", user.Name, clearReason);
sender.ClearChat(user);
break;
case 3:
duration = 5;
sender.Send(MessageType.Timeout, "{0}: {1} ({2} minute timeout.)", user.Name, clearReason, duration);
sender.Timeout(user, duration * 60);
timeout.LastTimeout = now.AddMinutes(duration);
break;
case 4:
duration = 10;
sender.Send(MessageType.Timeout, "{0}: {1} ({2} minute timeout.)", user.Name, clearReason, duration);
sender.Timeout(user, duration * 60);
timeout.LastTimeout = now.AddMinutes(duration);
break;
default:
Debug.Assert(timeout.Count > 0);
sender.Send(MessageType.Timeout, "{0}: {1} (8 hour timeout.)", user.Name, clearReason);
sender.Timeout(user, 8 * 60 * 60);
timeout.LastTimeout = now.AddHours(8);
break;
}
}
示例4: Purge
public void Purge(WinterBot sender, TwitchUser user, string c, string value)
{
var cmd = value.ParseArguments(sender);
int time = cmd.GetIntFlag("time", 0);
value = cmd.GetString();
if (string.IsNullOrWhiteSpace(value))
return;
value = value.ToLower();
var users = from msg in m_lastMsgs
where msg != null && msg.Item2 != null
where msg.Item2.Contains(value)
select msg.Item1;
foreach (var usr in users.Distinct())
sender.Timeout(usr, time > 0 ? time : 1);
}
示例5: Purge
public void Purge(WinterBot sender, TwitchUser user, string cmd, string value)
{
value = value.Trim().ToLower();
if (string.IsNullOrWhiteSpace(value))
return;
var users = from msg in m_lastMsgs
where msg != null && msg.Item2 != null
where msg.Item2.Contains(value)
select msg.Item1;
foreach (var usr in users.Distinct())
sender.Timeout(usr, 1);
}