private void LoadData() { ChatSetting setting = ChatSettings.GetSetting(UserSession.LoginUser, _organizationID); if (setting == null) { return; } imgAvailable.ImageUrl = String.Format("../dc/{0}/images/chat/chat_available", _organizationID.ToString()); imgUnavailable.ImageUrl = String.Format("../dc/{0}/images/chat/chat_unavailable", _organizationID.ToString()); imgLogo.ImageUrl = String.Format("../dc/{0}/images/chat/chat_logo", _organizationID.ToString()); textChatIntro.Text = Settings.OrganizationDB.ReadString("ChatIntroMessage", "Welcome to our live chat!"); if (UserSession.LoginUser.GetOrganization().ProductType != ProductType.HelpDesk) { cbChatTOKScreenEnabled.Checked = Settings.OrganizationDB.ReadBool("ChatTOKScreenEnabled", false); cbChatTOKVoiceEnabled.Checked = Settings.OrganizationDB.ReadBool("ChatTOKVoiceEnabled", false); cbChatTOKVideoEnabled.Checked = Settings.OrganizationDB.ReadBool("ChatTOKVideoEnabled", false); } else { cbChatTOKScreenEnabled.Enabled = false; cbChatTOKVoiceEnabled.Enabled = false; cbChatTOKVideoEnabled.Enabled = false; } cbChatTicketDeflectionEnabled.Checked = Settings.OrganizationDB.ReadBool("ChatTicketDeflectionEnabled", false); cbChatAvatars.Checked = Settings.OrganizationDB.ReadBool("ChatAvatarsEnabled", false); }
public static string GetChatSetting(RestCommand command, int organizationID) { ChatSetting chatSetting = ChatSettings.GetChatSetting(command.LoginUser, organizationID); if (chatSetting.OrganizationID != command.Organization.OrganizationID) { throw new RestException(HttpStatusCode.Unauthorized); } return(chatSetting.GetXml("ChatSetting", true)); }
public async Task <NewChatMembers> CheckNewChatMembers( long chatId, User[] users, Func <CallbackAnswer, Task <CallbackResult> > funcCallbackAnswer ) { _chatSetting = await _settingsService.GetSettingsByGroup(chatId); var newChatMembers = new NewChatMembers { AllNewChatMembers = users.AsEnumerable() }; _logger.LogDebug("Parsing new {Length} members..", users.Length); foreach (var user in users) { var callbackAnswerParam = new CallbackAnswer(); var userId = user.Id; var banResult = await _antiSpamService.CheckSpam(chatId, userId); callbackAnswerParam.TargetUserId = userId; if (banResult.IsAnyBanned) { newChatMembers.NewKickedChatMembers.Add(user); callbackAnswerParam.CallbackAnswerModes.Add(CallbackAnswerMode.KickMember); } else { if (_chatSetting.EnableHumanVerification) { newChatMembers.NewPassedChatMembers.Add(user); callbackAnswerParam.CallbackAnswerModes.Add(CallbackAnswerMode.MuteMember); callbackAnswerParam.CallbackAnswerModes.Add(CallbackAnswerMode.ScheduleKickMember); } newChatMembers.NewPassedChatMembers.Add(user); } await funcCallbackAnswer(callbackAnswerParam); } newChatMembers.AllNewChatMembersStr = users.Select(user => user.GetNameLink()); newChatMembers.NewPassedChatMembersStr = newChatMembers.NewPassedChatMembers.Select(user => user.GetNameLink()); newChatMembers.NewNoUsernameChatMembers = users.Where(user => user.Username.IsNullOrEmpty()); newChatMembers.NewNoUsernameChatMembersStr = newChatMembers.NewNoUsernameChatMembers.Select(user => user.GetNameLink()); newChatMembers.NewBotChatMembers = users.Where(user => user.IsBot); newChatMembers.NewBotChatMembersStr = newChatMembers.NewBotChatMembers.Select(user => user.GetNameLink()); return(newChatMembers); }
public async Task <bool> InsertIfNotFoundAsync(string chatId, ChatSetting chatSetting) { var found = _lineDB.Find(context => context.ChatId == chatId).FirstOrDefault(); if (found == null) { await _lineDB.InsertOneAsync(chatSetting); return(true); } return(false); }
public async Task NewMember() { Log.Debug( "New Members on ChatId {Id} arrived: {@NewChatMembers}", Chat.Id, RawUpdate.Message.NewChatMembers ); _settings = await _settingsService.GetSettingsByGroup(Chat.Id); if (!_settings.EnableWelcomeMessage) { Log.Information("Welcome Message is disabled on ChatId {Id}", Chat.Id); return; } var welcomeButton = _settings.WelcomeButton; var newMembers = RawUpdate.Message.NewChatMembers; var passedMember = await ScanMembersAsync(Chat.Id, newMembers); if (passedMember.Count < 1) { Log.Information("Welcome Message is disabled because no member passed!"); return; } var messageText = await BuildWelcomeMessage(passedMember); var replyMarkup = _settings.WelcomeButton.ToReplyMarkup(); if (_settings.EnableHumanVerification) { Log.Information("Human verification is enabled!"); Log.Information("Adding verify button.."); var userId = newMembers[0].Id; // var verifyButton = $"Saya Manusia!|verify {userId}"; var verifyButton = $"Saya Manusia!|human-verify"; var withVerifyArr = new[] { welcomeButton, verifyButton }; var withVerify = string.Join(",", withVerifyArr); replyMarkup = withVerify.ToReplyMarkup(2); } // var htmlMsg = new HtmlBuilder() // .TextBr(""); await SendMessageTextAsync(messageText, replyMarkup : replyMarkup); }
private void RegisterChatKeybind(ChatSetting chat) { if (string.IsNullOrEmpty(chat.Key)) { return; } var accelerator = keyboardProvider.ToElectronAccelerator(chat.Key); if (string.IsNullOrEmpty(accelerator)) { return; } ElectronNET.API.Electron.GlobalShortcut.Register(accelerator, GetChatKeybindAction(accelerator, chat)); }
public async Task <bool> OnUpdate() { var sw = Stopwatch.StartNew(); _logger.LogDebug("New Update: {@RawUpdate}", RawUpdate); _chatSetting = await _settingsService.GetSettingsByGroup(ChatId); var checkAntiSpamTask = CheckAntiSpam(); var checkScanMessageTask = CheckScanMessageAsync(); var checkMentionTask = CheckMention(); var checkRestrictionTask = CheckChatRestricted(); var fireMessageTask = CheckFireMessage(); await Task.WhenAll( checkAntiSpamTask, checkScanMessageTask, fireMessageTask, checkRestrictionTask ); var checkAntiSpam = await checkAntiSpamTask; var checkScanMessage = await checkScanMessageTask; var checkMention = await checkMentionTask; var checkRestriction = await checkRestrictionTask; var fireMessageCheck = await fireMessageTask; _logger.LogDebug( "User {@From} has No Username? {NoUsername}", From.ToString(), NoUsername ); var shouldNext = !checkAntiSpam.IsAnyBanned && !checkRestriction && HasUsername; _logger.LogDebug( "Should to Next handler? {ShouldNext}. Elapsed. {Elapsed}", shouldNext, sw.Elapsed ); sw.Stop(); return(shouldNext); }
private Action GetChatKeybindAction(string accelerator, ChatSetting chat) { return(() => { ElectronNET.API.Electron.GlobalShortcut.Unregister(accelerator); Thread.Sleep(1); var handler = serviceProvider.GetService <ChatKeybindHandler>(); if (handler.IsValid()) { Task.Run(() => handler.Execute(chat.Command, chat.Submit)); } else { keyboardProvider.PressKey(chat.Key); } ElectronNET.API.Electron.GlobalShortcut.Register(accelerator, GetChatKeybindAction(accelerator, chat)); }); }
private void LoadChat(int organzationID) { Organization organization = Organizations.GetOrganization(UserSession.LoginUser, UserSession.LoginUser.OrganizationID); ChatSetting setting = ChatSettings.GetSetting(UserSession.LoginUser, organzationID); StringBuilder builder = new StringBuilder(); //builder.Append("<table cellpadding=\"0\" cellspacing=\"5\" border=\"0\">"); //builder.Append("<tr>"); //builder.Append("<td>Available Image:</td>"); builder.Append("<div><strong>Customer Chat Link:</strong></div>"); builder.Append("<div>"); string script = string.Format("window.open('{1}/Chat/ChatInit.aspx?uid={0}', 'TSChat', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,copyhistory=no,resizable=no,width=450,height=575'); return false;", organization.ChatID.ToString(), SystemSettings.GetAppUrl()); string link = string.Format("<a href=\"#\" onclick=\"{0}\"><img src=\"{2}/dc/{1}/chat/image\" border=\"0\" /></a>", script, organization.OrganizationID, SystemSettings.GetAppUrl()); textChatCode.Text = link; builder.Append(string.Format("<a href=\"#\" onclick=\"{0}\">Test</a>", script)); builder.Append("</div>"); divChatProperties.InnerHtml = builder.ToString(); }
private void UpdateUserSetting(PublicMessageEventArgs e, string settingKey, string settingValue) { var coll = DB.GetCollection <ChatSetting>(); var kvp = coll.Find(x => x.ChatID == e.Message.Chat.ID && x.Key == settingKey).FirstOrDefault(); if (null == kvp) { kvp = new ChatSetting { ChatID = e.Message.Chat.ID, Key = settingKey, Value = settingValue, }; coll.Insert(kvp); } else { kvp.Value = settingValue; coll.Update(kvp); } }
public MsgGreet(LiplisTone Tone, ChatSetting chat, int AllocationId) { try { this.message = new MsgTopic(Tone, chat.sentence, chat.sentence, chat.GetEmotion(), chat.GetEmotion(), true, AllocationId); //Chatに設定があれば、時間範囲を設定する if (chat.rangeStart != "" || chat.rangeEnd != "") { //スタート時刻をセット string[] start = chat.rangeStart.Split(':'); this.SrtTime = DateUtil.CreateDatetime(int.Parse(start[0]), int.Parse(start[1]), 0); //終了時刻をセット string[] end = chat.rangeEnd.Split(':'); this.EndTime = DateUtil.CreateDatetime(int.Parse(end[0]), int.Parse(end[1]), 0); } } catch { //エラーでも処理を継続 } }
public object this[long chatId, ChatSetting key] { //get => GetValueOrDefault<object>(chatId + key, null); set => AddOrUpdateValue(ConvertToKey(chatId, key), value);
/// <summary> /// Checks the spam. /// </summary> /// <param name="chatId"></param> /// <param name="userId">The user id.</param> /// <param name="funcAntiSpamResult"></param> /// <returns>A Task.</returns> public async Task <AntiSpamResult> CheckSpam( long chatId, long userId, Func <AntiSpamResult, Task> funcAntiSpamResult = null ) { var spamResult = new AntiSpamResult { UserId = userId }; var isIgnored = _chatService.CheckUserIdIgnored(userId); if (isIgnored) { return(spamResult); } _chatSetting = await _settingsService.GetSettingsByGroup(chatId); var getChatMemberTask = _chatService.GetChatMemberAsync(chatId, userId); var checkSpamWatchTask = CheckSpamWatch(userId); var checkCasBanTask = CheckCasBan(userId); var checkEs2BanTask = CheckEs2Ban(userId); await Task.WhenAll( checkSpamWatchTask, checkCasBanTask, checkEs2BanTask, getChatMemberTask ); var chatMember = getChatMemberTask.Result; var swBan = checkSpamWatchTask.Result; var casBan = checkCasBanTask.Result; var es2Ban = checkEs2BanTask.Result; var anyBan = swBan || casBan || es2Ban; if (!anyBan) { Log.Information("UserId {UserId} is passed on all Fed Ban", userId); return(spamResult); } var banMessage = _localizationService.GetLoc( langCode: _chatSetting.LanguageCode, enumPath: GlobalBan.BanMessage, placeHolders: new List <(string placeholder, string value)>() { ("UserId", userId.ToString()), ("FullName", chatMember.User.GetNameLink()) } ); var htmlMessage = HtmlMessage.Empty .TextBr(banMessage); if (es2Ban) { htmlMessage.Url("https://t.me/WinTenDev", "- ES2 Global Ban").Br(); } if (casBan) { htmlMessage.Url($"https://cas.chat/query?u={userId}", "- CAS Fed").Br(); } if (swBan) { htmlMessage.Url("https://t.me/SpamWatchSupport", "- SpamWatch Fed"); } spamResult = new AntiSpamResult() { MessageResult = htmlMessage.ToString(), IsAnyBanned = anyBan, IsEs2Banned = es2Ban, IsCasBanned = casBan, IsSpamWatched = swBan }; if (funcAntiSpamResult != null) { await funcAntiSpamResult(spamResult); } Log.Debug("AntiSpam Result {@Result}", spamResult); return(spamResult); }
public async Task HandleAsync(IUpdateContext context, UpdateDelegate next, CancellationToken cancellationToken) { var msg = context.Update.Message; _telegramService = new TelegramService(context); _settingsService = new SettingsService(msg); _globalBanService = new GlobalBanService(context.Update.Message); await _telegramService.DeleteAsync(msg.MessageId) .ConfigureAwait(false); Log.Information("New Chat Members..."); var chatSettings = _telegramService.CurrentSetting; Settings = chatSettings; if (!chatSettings.EnableWelcomeMessage) { Log.Information("Welcome message is disabled!"); return; } var newMembers = msg.NewChatMembers; var isBootAdded = await newMembers.IsBotAdded().ConfigureAwait(false); if (isBootAdded) { var isRestricted = await _telegramService.EnsureChatRestrictionAsync() .ConfigureAwait(false); if (isRestricted) { return; } var botName = BotSettings.GlobalConfiguration["Engines:ProductName"]; var sendText = $"Hai, perkenalkan saya {botName}" + $"\nFYI saya di bangun ulang menggunakan .NET." + $"\n\nAku adalah bot pendebug dan grup manajemen yang di lengkapi dengan alat keamanan. " + $"Agar saya berfungsi penuh, jadikan saya admin dengan level standard. " + $"\n\nAku akan menerapkan konfigurasi standard jika aku baru pertama kali masuk kesini. " + $"\n\nUntuk melihat daftar perintah bisa ketikkan /help"; await _telegramService.SendTextAsync(sendText).ConfigureAwait(false); await _settingsService.SaveSettingsAsync(new Dictionary <string, object>() { { "chat_id", msg.Chat.Id }, { "chat_title", msg.Chat.Title } }).ConfigureAwait(false); if (newMembers.Length == 1) { return; } } var parsedNewMember = await ParseMemberCategory(newMembers).ConfigureAwait(false); var allNewMember = parsedNewMember.AllNewMember; var allNoUsername = parsedNewMember.AllNoUsername; var allNewBot = parsedNewMember.AllNewBot; if (allNewMember.Length > 0) { var chatTitle = msg.Chat.Title; var greet = Time.GetTimeGreet(); var memberCount = await _telegramService.GetMemberCount() .ConfigureAwait(false); var newMemberCount = newMembers.Length; Log.Information("Preparing send Welcome.."); if (chatSettings.WelcomeMessage.IsNullOrEmpty()) { chatSettings.WelcomeMessage = $"Hai {allNewMember}" + $"\nSelamat datang di kontrakan {chatTitle}" + $"\nKamu adalah anggota ke-{memberCount}"; } var sendText = chatSettings.WelcomeMessage.ResolveVariable(new { allNewMember, allNoUsername, allNewBot, chatTitle, greet, newMemberCount, memberCount }); InlineKeyboardMarkup keyboard = null; if (!chatSettings.WelcomeButton.IsNullOrEmpty()) { keyboard = chatSettings.WelcomeButton.ToReplyMarkup(2); } if (chatSettings.EnableHumanVerification) { Log.Information("Human verification is enabled!"); Log.Information("Adding verify button.."); var userId = newMembers[0].Id; var verifyButton = $"Saya Manusia!|verify {userId}"; var withVerifyArr = new string[] { chatSettings.WelcomeButton, verifyButton }; var withVerify = string.Join(",", withVerifyArr); keyboard = withVerify.ToReplyMarkup(2); } var prevMsgId = chatSettings.LastWelcomeMessageId.ToInt(); var sentMsgId = -1; if (chatSettings.WelcomeMediaType != MediaType.Unknown) { var mediaType = (MediaType)chatSettings.WelcomeMediaType; sentMsgId = (await _telegramService.SendMediaAsync( chatSettings.WelcomeMedia, mediaType, sendText, keyboard).ConfigureAwait(false)).MessageId; } else { sentMsgId = (await _telegramService.SendTextAsync(sendText, keyboard) .ConfigureAwait(false)).MessageId; } if (!chatSettings.EnableHumanVerification) { await _telegramService.DeleteAsync(prevMsgId).ConfigureAwait(false); } await _settingsService.SaveSettingsAsync(new Dictionary <string, object>() { { "chat_id", msg.Chat.Id }, { "chat_title", msg.Chat.Title }, { "members_count", memberCount }, { "last_welcome_message_id", sentMsgId } }).ConfigureAwait(false); await _settingsService.UpdateCache().ConfigureAwait(false); } else { Log.Information("Welcome Message ignored because User is Global Banned."); } }
public async Task Update(string chatId, ChatSetting chatSetting) => await _lineDB.ReplaceOneAsync(context => context.ChatId == chatId, chatSetting);
public async Task InsertAsync(ChatSetting chatSetting) => await _lineDB.InsertOneAsync(chatSetting);