示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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
            });
        }