private Task ClientOnMessageUpdated(Cacheable <IMessage, ulong> arg1, SocketMessage arg2, ISocketMessageChannel arg3) { if (!(arg2 is SocketUserMessage message)) { return(Task.CompletedTask); } if (message.Source != MessageSource.User) { return(Task.CompletedTask); } if (!Config.Ready) { return(Task.CompletedTask); } if (Garden.TreeState.UsersConnecting.Contains(arg2.Author.Id)) { Garden.Tree.OnUserMessageAsync(arg2, arg2.Channel is SocketDMChannel).Forget(); return(Task.CompletedTask); } try { ChatFilter.OnChatAsync(arg2).Forget(); Garden.LetterMatchGame.OnTextEdit(arg2).Forget(); } catch { } return(Task.CompletedTask); }
public bool AddMessageAdmin(ChatMessage chatMessage) { if (chatMessage == null) { return(false); } DateTime now = DateTime.Now; string compareMessage = ChatFilter.CutOff(chatMessage.Content, " ,.-_():;/\\\'\""); //trong vòng 300s=5p không được gửi tin nhắn có nội dung giống nhau //List<ChatMessage> lst = new List<ChatMessage>(LastMessages.Where(m => m != null && !string.IsNullOrEmpty(m.Content) && ChatFilter.CutOff(m.Content, " ,.-_():;/\\\'\"").Equals(compareMessage) && m.CreatedDate.AddSeconds(ChatController.DUPLICATE_MESSAGE_DURATION) > now)); //if (lst.Count > 0) // return false; if (LastMessages.Count > ChatController.MAX_MESSAGE_IN_CHANNEL) { if (Monitor.TryEnter(LastMessages, 500)) { LastMessages.RemoveRange(0, LastMessages.Count - ChatController.MAX_MESSAGE_IN_CHANNEL); Monitor.Exit(LastMessages); } } LastMessages.Add(chatMessage); return(true); }
/// <summary> /// Creates new chat filter. Returns information about the created chat filter /// </summary> public static Task <ChatFilterInfo> CreateChatFilterAsync( this Client client, ChatFilter filter = default) { return(client.ExecuteAsync(new CreateChatFilter { Filter = filter })); }
/// <summary> /// Edits existing chat filter. Returns information about the edited chat filter /// </summary> public static Task <ChatFilterInfo> EditChatFilterAsync( this Client client, int chatFilterId = default, ChatFilter filter = default) { return(client.ExecuteAsync(new EditChatFilter { ChatFilterId = chatFilterId, Filter = filter })); }
/// <summary> /// Returns default icon name for a filter. Can be called synchronously /// </summary> public static Task <Text> GetChatFilterDefaultIconNameAsync( this Client client, ChatFilter filter = default) { return(client.ExecuteAsync(new GetChatFilterDefaultIconName { Filter = filter })); }
private bool RunCommand(string message, out string notice) { string username = AccountSession.AccountName; bool ret = false; notice = null; if (ADMINS.Contains(username)) { string[] pars = message.Split(' '); if (pars.Length > 1) { string cmd = pars[0]; string par = pars[1]; string args = ""; if (pars.Length > 2) { for (int i = 2; i < pars.Length; i++) { args += pars[i] + " "; } } if (cmd.Equals("/banuser")) { string reason = "Tài khoản {0} bị treo nick, lí do: tuyên truyền website hack"; if (!string.IsNullOrEmpty(args)) { reason = args; } ret = ChatFilter.BanUser(par); notice = string.Format(reason, par); } else if (cmd.Equals("/addbadlink")) { ret = ChatFilter.AddBadLink(par); } else if (cmd.Equals("/addbadword")) { if (pars.Length > 2) { for (int i = 2; i < pars.Length; i++) { par += " " + pars[i]; } } ret = ChatFilter.AddBadWord(par); } else if (cmd.Equals("/message")) { notice = par + " " + args; ret = true; } } } return(ret); }
/// <summary> /// Adds a new filter to the available filters. /// </summary> /// <param name="newFilter"></param> public void RegisterFilter(ChatFilter newFilter) { if (newFilter == null) { return; } lock (this.availableFilters) { this.availableFilters.Add(newFilter); } }
/// <summary> /// Tries to remove the given filter from the available filters. /// </summary> /// <param name="filter"></param> public void UnregisterFilter(ChatFilter filter) { if (filter == null) { return; } lock (this.availableFilters) { this.availableFilters.Remove(filter); } }
public static async Task MessageReceived(SocketMessage message) { SocketUser user = message.Author; using (VooperContext context = new VooperContext(VoopAI.DBOptions)) { User userData = context.Users.FirstOrDefault(u => u.discord_id == user.Id); if (userData != null && userData.Id == "u-be323eec-014a-420c-afd5-cddfe308b8c4") { message.AddReactionAsync(yeahok); } if (!(message.Channel is SocketDMChannel)) { if (userData != null) { userData.discord_message_count += 1; if (!message.Author.IsBot) { // In this case it's been a minute since the last message if (DateTime.Now.Minute != userData.discord_last_message_minute) { // Give message XP userData.discord_message_xp++; userData.discord_last_message_minute = DateTime.Now.Minute; userData.Discord_Last_Message_Time = DateTime.UtcNow; } } await context.SaveChangesAsync(); } } } if (message.Channel.Id == VoopAI.botChannel.Id) { //VoopAI.logger.LogInformation("Recieved message in Bot channel."); await OnMessageBotChannel(message); } else if (message.Channel.GetType() == typeof(SocketDMChannel)) { //VoopAI.logger.LogInformation("Recieved message in DM."); await OnMessageDM(message); } await OnMessageChannel(message); await ChatFilter.FilterMessage(message); }
private Task MessageReceived(SocketMessage rawMessage) { Task.Run(async() => { // Ignore system messages and messages from bots if (!(rawMessage is SocketUserMessage message)) { return; } if (message.Source != MessageSource.User) { return; } if (!Config.Ready) { return; } if (Garden.TreeState.UsersConnecting.Contains(rawMessage.Author.Id)) { Garden.Tree.OnUserMessageAsync(rawMessage, rawMessage.Channel is SocketDMChannel).Forget(); return; } if (rawMessage.Channel.Id == 725059963566817372) { await Garden.LetterMatchGame.OnText(rawMessage); return; } int argPos = 0; if (await ChatFilter.OnChatAsync(rawMessage)) { if (message.HasStringPrefix(Config.Prefix, ref argPos)) { var context = new SocketCommandContext(_discord, message); var result = await _commands.ExecuteAsync(context, argPos, _provider).ConfigureAwait(false); if (result.Error.HasValue && result.Error.Value != CommandError.UnknownCommand) { await context.Channel.SendMessageAsync(result.ToString()).ConfigureAwait(false); } } } }); return(Task.CompletedTask); }
public void Start() { // subscribe to input fields update InputFieldChat.onValueChanged.AddListener(OnInputFieldChatValueChanged); // Create all the required channel toggles InitToggles(); // Make sure the window and channel panel start disabled chatInputWindow.SetActive(false); //channelPanel.gameObject.SetActive(false); EventManager.AddHandler(Event.UpdateChatChannels, OnUpdateChatChannels); chatFilter = GetComponent <ChatFilter>(); }
public void Configuration(IAppBuilder app) { // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888 var hubConfiguration = new HubConfiguration { // You can enable JSONP by uncommenting line below. // JSONP requests are insecure but some older browsers (and some // versions of IE) require JSONP to work cross domain EnableJSONP = true }; app.MapSignalR(hubConfiguration); ChatFilter.Init(); GameManager.Init(); }
public static ChatFilterIcon ParseFilter(ChatFilter filter) { var iconName = filter.IconName; if (string.IsNullOrEmpty(iconName)) { var text = Client.Execute(new GetChatFilterDefaultIconName(filter)) as Text; if (text != null) { iconName = text.TextValue; } } return(ParseFilter(iconName)); }
public bool AddMessage(string channelId, ChatMessage chatMessage) { DateTime now = DateTime.Now; if (LastMessages.Count > 0) { if (DateTime.Compare(LastMessageSentTime.AddSeconds(ChatController.TWO_MESSAGE_DURATION), now) > 0) { return(false); } if (LastMessages.Count > 100) { int pos = LastMessages.Count - 100; if (LastMessages.ElementAt(pos).CreatedDate.AddSeconds(ChatController.TEN_MESSAGE_DURATION) > now) { return(false); } } string compareMessage = ChatFilter.CutOff(chatMessage.Content, " ,.-_():;/\\\'\""); List <ChatMessage> lst = new List <ChatMessage>(LastMessages.Where(m => m != null && !string.IsNullOrEmpty(m.Content) && ChatFilter.CutOff(m.Content, " ,.-_():;/\\\'\"").Equals(compareMessage) && m.CreatedDate.AddSeconds(ChatController.GLOBAL_TEN_SAME_MESSAGE_DURATION) > now)); if (lst.Count > 120) { return(false); } if (LastMessages.Count > 1200) { if (Monitor.TryEnter(LastMessages, 50000)) { LastMessages.RemoveRange(0, LastMessages.Count - 1200); Monitor.Exit(LastMessages); } } } LastActivity = now; LastMessageSentTime = now; LastMessages.Add(chatMessage); return(true); }
public void Text(string message) { if (string.IsNullOrEmpty(message)) { return; } bool flag = false; var msg = ChatFilter.RemoveBadWords(message, out flag); ChatMessage msgChat; var account = Lddb.Instance.GetAccountInfo(AccountSession.AccountID); int result = GameManager.CheckEnableChat(account.AccountID, account.DisplayName, AccountSession.UserType, msg, out msgChat); NLogManager.LogMessage($"{account.AccountID}|{ account.DisplayName}|{AccountSession.UserType} => {JsonConvert.SerializeObject(msgChat)}"); if (result == -1) { msgChat = new ChatMessage { T = 1, //M = "Tổng đặt trong 5 ngày ít nhất 50.000 vàng mới có thể chat", Chanh M = "Tổng tiền đặt trong 5 ngày của bạn phải tối thiểu 20.000 vàng chat", U = "System Admin" }; Clients.Caller.Msg(msgChat); } else if (result == -2) { msgChat = new ChatMessage { T = 1, M = "Bạn đã bị chặn chat, vui lòng liên hệ admin", U = "System Admin" }; Clients.Caller.Msg(msgChat); } else if (result == 0) { Lddb.Instance._userNameChatReal[account.AccountID] = account.DisplayName; Clients.All.Msg(msgChat); } }
public async Task <PagedResult <List <PersonalizedChat>, PersonalizedChat> > RetrievePersonalizedPage(Guid userId, ChatFilter <ChatUserFilter, MessageFilter> filter, PagingOptions pagingOptions) { await Task.Yield(); IEnumerable <PersonalizedChat> query = Store.Chats .Select(r => Store.Personalize(r.Value, userId)) .Where(r => filter.Search == null || r.Name.Contains(filter.Search) || filter.SearchInDescription && r.Description.Contains(filter.Search)) .Where(r => r.Participants.Any(p => filter.UserFiltersList.Any(uFilter => (uFilter.UserId == null || uFilter.UserId == p.UserId) && (uFilter.ChatPrivacyMode == null || uFilter.ChatPrivacyMode == r.PrivacyMode) && (uFilter.ParticipantStatus == null || uFilter.ParticipantStatus == p.ChatParticipantStatus) && (uFilter.ParticipantType == null || uFilter.ParticipantType == p.ChatParticipantType)))) .OrderByDescending(r => r.LastTimestamp); if (!int.TryParse(pagingOptions?.Cursor, out var skip)) { skip = 0; } var take = pagingOptions?.Limit ?? ServicesConfiguration.DefaultChatsPageSize; query = query.Skip(skip).Take(take); var prev = Math.Max(skip - take, 0); return(new PagedResult <List <PersonalizedChat>, PersonalizedChat>(query.ToList(), skip == 0 ? null : prev.ToString(), $"{skip + take}")); }
public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary <string, object> state) { ChatFilter filter = null; if (parameter is int id) { var response = await ProtoService.SendAsync(new GetChatFilter(id)); if (response is ChatFilter result) { Id = id; Filter = result; filter = result; } else { // TODO } } else { Id = null; Filter = null; filter = new ChatFilter(); filter.PinnedChatIds = new List <long>(); filter.IncludedChatIds = new List <long>(); filter.ExcludedChatIds = new List <long>(); } if (filter == null) { return; } if (state != null && state.TryGet("included_chat_id", out long includedChatId)) { filter.IncludedChatIds.Add(includedChatId); } _pinnedChatIds = filter.PinnedChatIds ?? new List <long>(); _iconPicked = !string.IsNullOrEmpty(filter.IconName); Title = filter.Title; Icon = Icons.ParseFilter(filter); Include.Clear(); Exclude.Clear(); if (filter.IncludeContacts) { Include.Add(new FilterFlag { Flag = ChatListFilterFlags.IncludeContacts }); } if (filter.IncludeNonContacts) { Include.Add(new FilterFlag { Flag = ChatListFilterFlags.IncludeNonContacts }); } if (filter.IncludeGroups) { Include.Add(new FilterFlag { Flag = ChatListFilterFlags.IncludeGroups }); } if (filter.IncludeChannels) { Include.Add(new FilterFlag { Flag = ChatListFilterFlags.IncludeChannels }); } if (filter.IncludeBots) { Include.Add(new FilterFlag { Flag = ChatListFilterFlags.IncludeBots }); } if (filter.ExcludeMuted) { Exclude.Add(new FilterFlag { Flag = ChatListFilterFlags.ExcludeMuted }); } if (filter.ExcludeRead) { Exclude.Add(new FilterFlag { Flag = ChatListFilterFlags.ExcludeRead }); } if (filter.ExcludeArchived) { Exclude.Add(new FilterFlag { Flag = ChatListFilterFlags.ExcludeArchived }); } foreach (var chatId in filter.PinnedChatIds.Union(filter.IncludedChatIds)) { var chat = CacheService.GetChat(chatId); if (chat == null) { continue; } Include.Add(new FilterChat { Chat = chat }); } foreach (var chatId in filter.ExcludedChatIds) { var chat = CacheService.GetChat(chatId); if (chat == null) { continue; } Exclude.Add(new FilterChat { Chat = chat }); } UpdateIcon(); }
/// <summary> /// Write a Minecraft-Like formatted string to the standard output, using §c color codes /// See minecraft.gamepedia.com/Classic_server_protocol#Color_Codes for more info /// </summary> /// <param name="str">String to write</param> /// <param name="acceptnewlines">If false, space are printed instead of newlines</param> /// <param name="displayTimestamps"> /// If false, no timestamp is prepended. /// If true, "hh-mm-ss" timestamp will be prepended. /// If unspecified, value is retrieved from EnableTimestamps. /// </param> public static void WriteLineFormatted(string str, bool acceptnewlines = true, bool?displayTimestamp = null) { if (ChatFilter.chatFilter(str)) { return; } if (!String.IsNullOrEmpty(str)) { if (!acceptnewlines) { str = str.Replace('\n', ' '); } if (displayTimestamp == null) { displayTimestamp = EnableTimestamps; } if (displayTimestamp.Value) { int hour = DateTime.Now.Hour, minute = DateTime.Now.Minute, second = DateTime.Now.Second; ConsoleIO.Write(String.Format("{0}:{1}:{2} ", hour.ToString("00"), minute.ToString("00"), second.ToString("00"))); } if (BasicIO) { Console.WriteLine(str); return; } string[] parts = str.Split(new char[] { '§' }); if (parts[0].Length > 0) { ConsoleIO.Write(parts[0]); } for (int i = 1; i < parts.Length; i++) { if (parts[i].Length > 0) { switch (parts[i][0]) { case '0': Console.ForegroundColor = ConsoleColor.Gray; break; //Should be Black but Black is non-readable on a black background case '1': Console.ForegroundColor = ConsoleColor.DarkBlue; break; case '2': Console.ForegroundColor = ConsoleColor.DarkGreen; break; case '3': Console.ForegroundColor = ConsoleColor.DarkCyan; break; case '4': Console.ForegroundColor = ConsoleColor.DarkRed; break; case '5': Console.ForegroundColor = ConsoleColor.DarkMagenta; break; case '6': Console.ForegroundColor = ConsoleColor.DarkYellow; break; case '7': Console.ForegroundColor = ConsoleColor.Gray; break; case '8': Console.ForegroundColor = ConsoleColor.DarkGray; break; case '9': Console.ForegroundColor = ConsoleColor.Blue; break; case 'a': Console.ForegroundColor = ConsoleColor.Green; break; case 'b': Console.ForegroundColor = ConsoleColor.Cyan; break; case 'c': Console.ForegroundColor = ConsoleColor.Red; break; case 'd': Console.ForegroundColor = ConsoleColor.Magenta; break; case 'e': Console.ForegroundColor = ConsoleColor.Yellow; break; case 'f': Console.ForegroundColor = ConsoleColor.White; break; case 'r': Console.ForegroundColor = ConsoleColor.Gray; break; } if (parts[i].Length > 1) { ConsoleIO.Write(parts[i].Substring(1, parts[i].Length - 1)); } } } Console.ForegroundColor = ConsoleColor.Gray; } ConsoleIO.Write('\n'); }
/// <summary> /// Gửi message chat /// </summary> /// <param name="hubCallerContext"></param> /// <param name="message"></param> /// <param name="channelId"></param> /// <returns></returns> public bool SendMessage(HubCallerContext hubCallerContext, string message, string channelId) { NLogManager.LogMessage(">>Start SendMessage"); try { if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["CloseChatServer"].ToString())) { return(false); } if (MAX_MESSAGE_LENGTH < message.Length) { broadcastMessage(hubCallerContext.ConnectionId, string.Format("Nội dung chát không quá {0} kí tự!", MAX_MESSAGE_LENGTH)); return(false); } //NLogManager.LogMessage(string.Format(">>Statr chat:{0}", channelId)); LoadListAdmin(); LoadTimeSendMessage(); long accountId = GetAccountId(hubCallerContext); if (accountId < 1) { NLogManager.LogMessage(string.Format("Sending message: not authenticated accountId: {0} - channel: {1} - content={2}", accountId, channelId, message)); return(false); } ChatChannel chatChannel = GetChannel(channelId); if (chatChannel == null) { NLogManager.LogMessage(string.Format("Sending message: accountId: {0} - not has channel: {1} - content={2}", accountId, channelId, message)); return(false); } if (message.IndexOf('/') == 0) { string notice; bool ret = RunCommand(message, out notice); if (!string.IsNullOrEmpty(notice)) { Instance.ClientSystemMessage(channelId, notice, 0); } if (ret) { NLogManager.LogMessage(string.Format("Account: {0} - run command: {1}", accountId, message)); return(true); } } ChatUser chatUser = GetUser(accountId); if (chatUser == null) { NLogManager.LogMessage(string.Format("Sending message: not chat user: {0} in channel={1} - content={2}", accountId, channelId, message)); return(false); } if (CMSAllGame != "1") { if (!ADMINS.Contains(chatUser.UserName)) { try { object level = CacheHandler.Get(chatUser.UserName + "_" + channelId); if (level == null) { SetCacheLevel(chatUser.UserName, (int)chatUser.AccountID, channelId); } else if (int.Parse(level.ToString()) == 0) { NLogManager.LogMessage(string.Format("Tổng đặt trong 7 ngày của bạn chưa đủ 2.000.000 Sao để tham gia chat!: {0} ", chatUser.UserName)); broadcastMessage(hubCallerContext.ConnectionId, string.Format("Tổng đặt trong 7 ngày của bạn chưa đủ 2.000.000 Sao để tham gia chat!")); return(false); } } catch (Exception ex) { NLogManager.LogMessage(string.Format("{0} Null Cache level", chatUser.UserName)); SetCacheLevel(chatUser.UserName, (int)chatUser.AccountID, channelId); } } } string filteredMessage = message; string tempFilteredMessage = message; bool flag = false; //WaitCallback callBack = new WaitCallback(InsertChat); //var chatchat = new Insert_Chat(); //chatchat.AccountID = int.Parse(chatUser.AccountID.ToString()); //chatchat.UserName = string.Format("{0}({1})", chatUser.UserName, chatUser.NickName); //chatchat.channelId = channelId; //chatchat.filteredMessage = filteredMessage; //ThreadPool.QueueUserWorkItem(callBack, chatchat); //khong phai admin thi loc bad link if (!ADMINS.Contains(chatUser.UserName)) { ChatFilter.RemoveBadLinks(tempFilteredMessage, out flag); } //Check thời gian chát theo quy định if (!ADMINS.Contains(chatUser.UserName)) { try { object value = CacheHandler.Get(chatUser.UserName); if (value == null) { CacheHandler.Add(chatUser.UserName, DateTime.Now.ToString()); } else { if (DateTime.Now != DateTime.Parse(value.ToString())) { var lastTime = (DateTime.Now - DateTime.Parse(value.ToString())).TotalSeconds; var a = MIN_MESSAGE_TIME_SECOND; if (lastTime < int.Parse(MIN_MESSAGE_TIME_SECOND)) { broadcastMessage(hubCallerContext.ConnectionId, string.Format("Chưa hết thời gian chờ {0}s, t/g chờ còn {1}s", MIN_MESSAGE_TIME_SECOND, System.Math.Round((int.Parse(MIN_MESSAGE_TIME_SECOND) - lastTime), 2))); return(false); } } CacheHandler.Add(chatUser.UserName, DateTime.Now.ToString()); } } catch (Exception ex) { NLogManager.LogMessage(string.Format("{0} Null Cache TimeChat", chatUser.UserName)); CacheHandler.Add(chatUser.UserName, DateTime.Now.ToString()); } } if (CheckBanUsers(chatUser.UserName)) { NLogManager.LogMessage(string.Format(">> {0} - Tài khoản đang bị Block! ", chatUser.UserName)); broadcastMessage(hubCallerContext.ConnectionId, ReturnCheckBanUsers(chatUser.UserName)); return(false); } //nếu nội dung chat có bad links thì block gói tin và ghi log if (flag) { chatUser.CountBadLinks += 1; filteredMessage = "***"; if (chatUser.CountBadLinks > 5) { ChatFilter.BanUser(chatUser.UserName); } NLogManager.LogMessage(string.Format("User sent bad link: accountId={0}, username={1} - channelId={2} - content={3} - \n\rAgent: {4}", chatUser.AccountID, chatUser.UserName, channelId, message, chatUser.UserAgent)); } else { //khong phai admin thi loc bad word if (!ADMINS.Contains(chatUser.UserName)) { filteredMessage = ChatFilter.RemoveBadWords(message, out flag); } NLogManager.LogMessage(flag ? string.Format( "User sent bad word: accountId={0}, username={1} - channelId={2} - content={3}", chatUser.AccountID, chatUser.UserName, channelId, message) : string.Format("User sent message: accountId={0}, username={1} - channelId={2} - content={3}", chatUser.AccountID, chatUser.UserName, channelId, message)); } //khong phai admin thi loc bad word if (!ADMINS.Contains(chatUser.UserName)) { filteredMessage = RemoveBadWords(message, out flag); } //Thay thế từ khóa if (!ADMINS.Contains(chatUser.UserName)) { filteredMessage = ReplaceKeyword(filteredMessage); } //admin thì text chat màu đỏ ChatMessage chatMessage = new ChatMessage(channelId, chatUser.AccountID, !ADMINS.Contains(chatUser.UserName) ? chatUser.NickName : string.Format("<span style='color:red; font-weight:bold'>ADMIN ({0})</span>", chatUser.NickName), !ADMINS.Contains(chatUser.UserName) ? filteredMessage : string.Format("{0}", filteredMessage)); bool canSend; if (!ADMINS.Contains(chatUser.UserName)) { canSend = chatChannel.AddMessage(chatMessage); } else { canSend = chatChannel.AddMessageAdmin(chatMessage); } if (canSend) { canSend = chatUser.AddMessage(channelId, chatMessage); } if (canSend) { ClientReceiveMessage(chatMessage); return(true); } } catch (Exception ex) { NLogManager.PublishException(ex); } NLogManager.LogMessage(string.Format(">>Gửi tin nhắn không thành công! ")); return(false); }
private string ConvertTitle(ChatFilter filter) { return(filter == null ? Strings.Resources.FilterNew : filter.Title); }
public OnPrivateMessageEvent(PresenceService ps, ChatFilter filter) { _ps = ps; _filter = filter; }
public int CheckEnableChat(long accountId, string accountName, string message, int userType, out ChatMessage msg) { ChatUser user; msg = null; if (_users.TryGetValue(accountId, out user)) { //if (user.TotalRecentBetting < _chatGoldLimit) // return -1; if (ChatFilter.CheckBanned(accountName)) { return(-2); } if (TimeSpan.FromTicks(DateTime.Now.Ticks - user.LastSpamTime).TotalMinutes <= 5) { return(-3); } if (user.DetectSpam(message)) { return(-4); } } else { //long recentBetting = Lddb.Instance.GetRecentBetting(accountId); //if (recentBetting < 0) // return -1; user = new ChatUser { AccountId = accountId, AccountName = accountName, //TotalRecentBetting = recentBetting, LastActiveTime = DateTime.Now.Ticks, }; _users.AddOrUpdate(accountId, user, (k, v) => v = user); //if (recentBetting < _chatGoldLimit) // return -1; if (ChatFilter.CheckBanned(accountName)) { return(-2); } if (TimeSpan.FromTicks(DateTime.Now.Ticks - user.LastSpamTime).TotalMinutes <= 5) { return(-3); } if (user.DetectSpam(message)) { return(-4); } } int uType = 4; if (userType >= 3) { uType = 3; } if (Monitor.TryEnter(_lockmsg, 5000)) { try { msg = new ChatMessage { T = uType, M = message, U = accountName }; _msgs.Add(msg); if (_msgs.Count > 100) { _msgs.RemoveAt(0); } } finally { Monitor.Exit(_lockmsg); } } return(0); }
public OnPublicMessageEvent(ChannelService cs, ChatFilter filter) { _cs = cs; _filter = filter; }