public static bool RegisterGroup(Message message) { if (CacheData.Groups.ContainsKey(message.Chat.Id)) { return(false); } BusinessLogic.Group.TelegramGroupLogic telegramGroupLogic = new BusinessLogic.Group.TelegramGroupLogic(); TelegramGroup registered = telegramGroupLogic.Add( message.Chat.Id, message.Chat.Title, TelegramGroup.Status.Active, configuration: Newtonsoft.Json.JsonConvert.SerializeObject(CacheData.GroupDefaultConfigs), welcomeText: CacheData.GetTranslation("en", "message_welcome_default"), chatLanguage: "en", settingsLanguage: "en", reportChatId: CacheData.ControlChatId, rulesText: "No rules defined yet by the group admins. Just... be nice!", callerId: -2); if (registered == null) { return(false); } CacheData.Groups.Add(message.Chat.Id, registered); CacheData.GroupConfigs.Add(message.Chat.Id, CacheData.GroupDefaultConfigs); if (MessageQueueManager.AddGroupIfNotPresent(registered)) { Manager.BotClient.SendTextMessageAsync( chatId: message.Chat.Id, parseMode: ParseMode.Markdown, text: CacheData.GetTranslation("en", "message_group_first_join"), disableWebPagePreview: true ); Manager.BotClient.SendTextMessageAsync( chatId: CacheData.ControlChatId, parseMode: ParseMode.Markdown, text: String.Format( "*[Log]*\n" + "New group has chosen unified/ban 🥳\n" + "\nChat: {0}" + "\nChatId: {1}" + "\n\n*hash_code:* #UB{2}-{3}", message.Chat.Title, message.Chat.Id, message.Chat.Id.ToString().Replace("-", ""), Guid.NewGuid()) ); } return(true); }
public static void AddMissingConfiguration(long telegramGroupId) { var diff = new List <ConfigurationParameter>(); foreach (ConfigurationParameter configurationParameter in CacheData .GroupDefaultConfigs) { var exists = CacheData.GroupConfigs[telegramGroupId] .SingleOrDefault(x => x.ConfigurationParameterId == configurationParameter.ConfigurationParameterId); if (exists == null) { diff.Add(configurationParameter); } } if (diff.Count == 0) { return; } Data.Utils.Logging.AddLog(new Models.SystemLog() { LoggerName = CacheData.LoggerName, Date = DateTime.Now, Function = "Unifiedban Terminal Startup", Level = Models.SystemLog.Levels.Warn, Message = $"Adding missing configuration to chat {telegramGroupId}", UserId = -2 }); foreach (ConfigurationParameter parameter in diff) { CacheData.GroupConfigs[telegramGroupId].Add(parameter); } BusinessLogic.Group.TelegramGroupLogic telegramGroupLogic = new BusinessLogic.Group.TelegramGroupLogic(); telegramGroupLogic.UpdateConfiguration( telegramGroupId, JsonConvert.SerializeObject(CacheData.GroupConfigs[telegramGroupId]), -2); }
public static void MigrateToChatId(Message message) { if (!CacheData.Groups.ContainsKey(message.Chat.Id)) { return; } BusinessLogic.Group.TelegramGroupLogic telegramGroupLogic = new BusinessLogic.Group.TelegramGroupLogic(); TelegramGroup updated = telegramGroupLogic.UpdateChatId(message.Chat.Id, message.MigrateToChatId, -2); // TODO - log operation if (updated == null) { return; } CacheData.Groups.Add(updated.TelegramChatId, updated); MessageQueueManager.AddGroupIfNotPresent(updated); MessageQueueManager.RemoveGroupIfNotPresent(message.Chat.Id); CacheData.Groups.Remove(message.Chat.Id); }
public static void LoadCacheData() { Data.Utils.Logging.AddLog(new Models.SystemLog() { LoggerName = CacheData.LoggerName, Date = DateTime.Now, Function = "Unifiedban Terminal Startup", Level = Models.SystemLog.Levels.Info, Message = "Loading cache", UserId = -2 }); Data.Utils.Logging.AddLog(new Models.SystemLog() { LoggerName = CacheData.LoggerName, Date = DateTime.Now, Function = "Unifiedban Terminal Startup", Level = Models.SystemLog.Levels.Info, Message = "Get translations", UserId = -2 }); CacheData.ControlChatId = Convert.ToInt64(CacheData.SysConfigs .Single(x => x.SysConfigId == "ControlChatId") .Value); if (!InitializeTranslations()) { CacheData.FatalError = true; return; } LoadPlugins(); LoadFiltersData(); Data.Utils.Logging.AddLog(new Models.SystemLog() { LoggerName = CacheData.LoggerName, Date = DateTime.Now, Function = "Unifiedban Terminal Startup", Level = Models.SystemLog.Levels.Info, Message = "Get default group configuration parameters", UserId = -2 }); BusinessLogic.Group.ConfigurationParameterLogic configurationParameterLogic = new BusinessLogic.Group.ConfigurationParameterLogic(); CacheData.GroupDefaultConfigs = new List <Models.Group.ConfigurationParameter>(configurationParameterLogic.Get()); Data.Utils.Logging.AddLog(new Models.SystemLog() { LoggerName = CacheData.LoggerName, Date = DateTime.Now, Function = "Unifiedban Terminal Startup", Level = Models.SystemLog.Levels.Info, Message = "Get registered groups", UserId = -2 }); BusinessLogic.Group.TelegramGroupLogic telegramGroupLogic = new BusinessLogic.Group.TelegramGroupLogic(); foreach (Models.Group.TelegramGroup group in telegramGroupLogic.Get()) { CacheData.Groups.Add(group.TelegramChatId, group); try { CacheData.GroupConfigs.Add( group.TelegramChatId, JsonConvert .DeserializeObject < List <Models.Group.ConfigurationParameter> >(group.Configuration)); AddMissingConfiguration(group.TelegramChatId); /* * To be used to enable messages to Group's Control Chat/Channel * Bot.MessageQueueManager.AddChatIfNotPresent( * Convert.ToInt64(CacheData.GroupConfigs[group.TelegramChatId] * .SingleOrDefault(x => x.ConfigurationParameterId == "ControlChatId").Value)); */ } catch (Exception ex) { Data.Utils.Logging.AddLog(new Models.SystemLog() { LoggerName = CacheData.LoggerName, Date = DateTime.Now, Function = "Unifiedban Terminal Startup", Level = Models.SystemLog.Levels.Error, Message = $"Impossible to load group {group.TelegramChatId} " + $"configuration:\n {ex.Message}", UserId = -1 }); } Bot.MessageQueueManager.AddGroupIfNotPresent(group); } Data.Utils.Logging.AddLog(new Models.SystemLog() { LoggerName = CacheData.LoggerName, Date = DateTime.Now, Function = "Unifiedban Terminal Startup", Level = Models.SystemLog.Levels.Info, Message = "Get banned users", UserId = -2 }); BusinessLogic.User.BannedLogic bannedLogic = new BusinessLogic.User.BannedLogic(); CacheData.BannedUsers = new List <Models.User.Banned>(bannedLogic.Get()); Data.Utils.Logging.AddLog(new Models.SystemLog() { LoggerName = CacheData.LoggerName, Date = DateTime.Now, Function = "Unifiedban Terminal Startup", Level = Models.SystemLog.Levels.Info, Message = "Get night schedule", UserId = -2 }); BusinessLogic.Group.NightScheduleLogic nsl = new BusinessLogic.Group.NightScheduleLogic(); foreach (NightSchedule nightSchedule in nsl.Get()) { CacheData.NightSchedules.Add(nightSchedule.GroupId, nightSchedule); } Data.Utils.Logging.AddLog(new Models.SystemLog() { LoggerName = CacheData.LoggerName, Date = DateTime.Now, Function = "Unifiedban Terminal Startup", Level = Models.SystemLog.Levels.Info, Message = "Get trust points", UserId = -2 }); BusinessLogic.User.TrustFactorLogic tfl = new BusinessLogic.User.TrustFactorLogic(); foreach (TrustFactor trustFactor in tfl.Get()) { if (!CacheData.TrustFactors.ContainsKey(trustFactor.TelegramUserId)) { CacheData.TrustFactors.Add(trustFactor.TelegramUserId, trustFactor); } } Data.Utils.Logging.AddLog(new Models.SystemLog() { LoggerName = CacheData.LoggerName, Date = DateTime.Now, Function = "Unifiedban Terminal Startup", Level = Models.SystemLog.Levels.Info, Message = "Cache loaded", UserId = -2 }); }