Пример #1
0
        private static void BanUserForPositiveFilter(Message message, Filters.FilterResult result)
        {
            int limitTime = 3;

            Models.Group.ConfigurationParameter configValue = CacheData.GroupConfigs[message.Chat.Id]
                                                              .Where(x => x.ConfigurationParameterId == "SpamActionLimitTime")
                                                              .SingleOrDefault();
            if (configValue != null)
            {
                int.TryParse(configValue.Value, out limitTime);
            }
            RemoveMessageForPositiveFilter(message, result);

            Bot.Manager.BotClient.KickChatMemberAsync(message.Chat.Id, message.From.Id,
                                                      DateTime.UtcNow.AddMinutes(-5));
            UserTools.AddPenalty(message.Chat.Id, message.From.Id,
                                 Models.TrustFactorLog.TrustFactorAction.ban, Bot.Manager.MyId);

            Bot.Manager.BotClient.KickChatMemberAsync(message.Chat.Id, message.From.Id,
                                                      DateTime.UtcNow.AddMinutes(-5));

            UserTools.AddPenalty(message.Chat.Id, message.From.Id,
                                 Models.TrustFactorLog.TrustFactorAction.ban, Bot.Manager.MyId);

            string author = message.From.Username == null
                ? message.From.FirstName + " " + message.From.LastName
                : "@" + message.From.Username;
            string logMessage = String.Format(
                "*[Report]*\n" +
                "User banned as per group _Spam Action_ preference.\n" +
                "⚠ do not open links you don't know ⚠\n" +
                "\nControl: `{0}`" +
                "\nChat: `{1}`" +
                "\nAuthor: `{2}`" +
                "\nUserId: `{3}`" +
                "\n\n*hash_code:* #UB{4}-{5}",
                result.CheckName,
                message.Chat.Title,
                author,
                message.From.Id,
                message.Chat.Id.ToString().Replace("-", ""),
                Guid.NewGuid());

            MessageQueueManager.EnqueueLog(new ChatMessage()
            {
                ParseMode = ParseMode.Markdown,
                Text      = logMessage
            });

            LogTools.AddActionLog(new ActionLog()
            {
                GroupId      = CacheData.Groups[message.Chat.Id].GroupId,
                UtcDate      = DateTime.UtcNow,
                ActionTypeId = "autoBan",
                Parameters   = logMessage,
            });
        }
Пример #2
0
        private static void LimitUserForPositiveFilter(Message message, Filters.FilterResult result)
        {
            int limitTime = 3;

            Models.Group.ConfigurationParameter configValue = CacheData.GroupConfigs[message.Chat.Id]
                                                              .Where(x => x.ConfigurationParameterId == "SpamActionLimitTime")
                                                              .SingleOrDefault();
            if (configValue != null)
            {
                int.TryParse(configValue.Value, out limitTime);
            }
            RemoveMessageForPositiveFilter(message, result);
            Bot.Manager.BotClient.RestrictChatMemberAsync(
                message.Chat.Id,
                message.From.Id,
                new ChatPermissions()
            {
                CanSendMessages       = false,
                CanAddWebPagePreviews = false,
                CanChangeInfo         = false,
                CanInviteUsers        = false,
                CanPinMessages        = false,
                CanSendMediaMessages  = false,
                CanSendOtherMessages  = false,
                CanSendPolls          = false
            },
                DateTime.UtcNow.AddMinutes(limitTime));

            string author = message.From.Username == null
                ? message.From.FirstName + " " + message.From.LastName
                : "@" + message.From.Username;
            string logMessage = String.Format(
                "*[Report]*\n" +
                "User limited as per group _Spam Action_ preference.\n" +
                "⚠ do not open links you don't know ⚠\n" +
                "\nControl: `{0}`" +
                "\nChat: `{1}`" +
                "\nAuthor: `{2}`" +
                "\nUserId: `{3}`" +
                "\n\n*hash_code:* #UB{4}-{5}",
                result.CheckName,
                message.Chat.Title,
                author,
                message.From.Id,
                message.Chat.Id.ToString().Replace("-", ""),
                Guid.NewGuid());

            MessageQueueManager.EnqueueLog(new ChatMessage()
            {
                ParseMode = ParseMode.Markdown,
                Text      = logMessage
            });

            LogTools.AddActionLog(new ActionLog()
            {
                GroupId      = CacheData.Groups[message.Chat.Id].GroupId,
                UtcDate      = DateTime.UtcNow,
                ActionTypeId = "autoLimit",
                Parameters   = logMessage,
            });
        }
Пример #3
0
        private static void RemoveMessageForPositiveFilter(Message message, Filters.FilterResult result)
        {
            try
            {
                Bot.Manager.BotClient.DeleteMessageAsync(message.Chat.Id, message.MessageId);
                string author = message.From.Username == null
                    ? message.From.FirstName + " " + message.From.LastName
                    : "@" + message.From.Username;
                string logMessage = String.Format(
                    "*[Report]*\n" +
                    "Message deleted due to filter *{0}* provided positive result.\n" +
                    "⚠ do not open links you don't know ⚠\n" +
                    "\nChat: `{1}`" +
                    "\nAuthor: `{3}`" +
                    "\nUserId: `{4}`" +
                    "\nOriginal message:\n```{2}```" +
                    "\n\n*hash_code:* #UB{5}-{6}",
                    result.CheckName,
                    message.Chat.Title,
                    message.Text,
                    author,
                    message.From.Id,
                    message.Chat.Id.ToString().Replace("-", ""),
                    Guid.NewGuid());
                MessageQueueManager.EnqueueLog(new ChatMessage()
                {
                    ParseMode = ParseMode.Markdown,
                    Text      = logMessage
                });

                LogTools.AddActionLog(new ActionLog()
                {
                    GroupId      = CacheData.Groups[message.Chat.Id].GroupId,
                    UtcDate      = DateTime.UtcNow,
                    ActionTypeId = "autoDelete",
                    Parameters   = logMessage,
                });
            }
            catch (Exception ex)
            {
                Data.Utils.Logging.AddLog(new SystemLog()
                {
                    LoggerName = CacheData.LoggerName,
                    Date       = DateTime.Now,
                    Function   = "Unifiedban.Terminal.Controls.Manager.RemoveMessageForPositiveFilter",
                    Level      = SystemLog.Levels.Error,
                    Message    = ex.Message,
                    UserId     = -1
                });
                if (ex.InnerException != null)
                {
                    Data.Utils.Logging.AddLog(new SystemLog()
                    {
                        LoggerName = CacheData.LoggerName,
                        Date       = DateTime.Now,
                        Function   = "Unifiedban.Terminal.Controls.Manager.RemoveMessageForPositiveFilter",
                        Level      = SystemLog.Levels.Error,
                        Message    = ex.InnerException.Message,
                        UserId     = -1
                    });
                }
            }
        }