Exemple #1
0
        private static async Task BanAllUnbanAllMethod1Async(RestrictAction restrictAction,
                                                             string finalTarget,
                                                             MessageEventArgs e, TelegramBotAbstract sender, string lang, string username, DateTime?until)
        {
            if (string.IsNullOrEmpty(finalTarget))
            {
                var lang2 = new Language(new Dictionary <string, string>
                {
                    { "en", "We can't find the target." },
                    { "it", "Non riusciamo a trovare il bersaglio" }
                });
                await sender.SendTextMessageAsync(e.Message.From.Id, lang2, ChatType.Private,
                                                  lang, ParseMode.Default, username : username,
                                                  replyMarkupObject : new ReplyMarkupObject(ReplyMarkupEnum.REMOVE));

                return;
            }

            var done =
                await RestrictUser.BanAllAsync(sender, e, finalTarget, restrictAction, until);

            var text2 = done.Item1.GetLanguage(restrictAction, finalTarget, done.Item3);

            await SendMessage.SendMessageInPrivate(sender, e.Message.From.Id,
                                                   e.Message.From.LanguageCode,
                                                   e.Message.From.Username, text2,
                                                   ParseMode.Default,
                                                   e.Message.MessageId);

            await SendReportOfSuccessAndFailures(sender, e, done);
        }
        public async Task <IActionResult> Restrict(RestrictUser user)
        {
            if (!ModelState.IsValid)
            {
                return(View(user));
            }
            ApplicationUser foundUser = await _userManager.FindByEmailAsync(user.Email);

            if (foundUser != null)
            {
                bool ifAnAdmin = await _userManager.IsInRoleAsync(foundUser, "Admin");

                if (!ifAnAdmin)
                {
                    _userRepo.restrict(foundUser.Id, true);
                    ViewBag.restrict = "done";
                }
                else
                {
                    ViewBag.restrict = "admin";
                }
            }
            else
            {
                ViewBag.restrict = "not found";
            }
            return(View(user));
        }
        private static async Task UnbanAllAsync(TelegramBotAbstract sender, MessageEventArgs e, string target)
        {
            var done = await RestrictUser.BanAllAsync(sender, e, target, false);

            var text2 = new Language(new Dictionary <string, string>
            {
                { "en", "Target unbanned from " + done.Count + " groups" },
                { "it", "Target sbannato da " + done.Count + " gruppi" }
            });
            await SendMessage.SendMessageInPrivate(sender, e, text2);
        }
Exemple #4
0
        private static async Task SendUsernameWarning(TelegramBotAbstract telegramBotClient,
                                                      bool username, bool name, string lang, string usernameOfUser,
                                                      long chatId, int userId, int?messageId, ChatType messageChatType,
                                                      string firstName, string lastName)
        {
            var s1I = "Imposta un username e un nome più lungo dalle impostazioni di telegram\n";

            if (username && !name)
            {
                s1I = "Imposta un username dalle impostazioni di telegram\n";
            }
            else if (!username && name)
            {
                s1I = "Imposta un nome più lungo " +
                      "dalle impostazioni di telegram\n";
            }


            var s1E = "Set an username and a longer first name from telegram settings";

            if (username && !name)
            {
                s1E = "Set an username from telegram settings";
            }
            else if (!username && name)
            {
                s1E = "Set a longer first name from telegram settings";
            }


            var s2 = new Language(new Dictionary <string, string>
            {
                { "it", s1I },
                { "en", s1E }
            });
            await SendMessage.SendMessageInPrivateOrAGroup(telegramBotClient, s2, lang,
                                                           usernameOfUser, userId, firstName, lastName, chatId, messageChatType);

            await RestrictUser.Mute(60 * 5, telegramBotClient, chatId, userId);

            if (messageId != null)
            {
                await telegramBotClient.DeleteMessageAsync(chatId, messageId.Value, messageChatType);
            }
        }
        public ActionResult userRistrictedView()
        {
            Database1Entities1 db = new Database1Entities1();

            UserCrudServices service = new UserCrudServices();

            string username = (string)(Session["username"]);

            User user = service.findByString(username);

            RestrictUser rUser = new RestrictUser();

            rUser.allusers = service.findAllUsers();
            rUser.edit     = user.option_edit;
            rUser.delete   = user.option_delete;

            return(View(rUser));
        }
        private static async Task BanAllAsync(TelegramBotAbstract sender, MessageEventArgs e,
                                              IReadOnlyList <string> target, string lang, string username)
        {
            if (e.Message.ReplyToMessage == null)
            {
                if (target.Count < 2)
                {
                    var lang2 = new Language(new Dictionary <string, string>
                    {
                        { "en", "We can't find the target." },
                        { "it", "Non riusciamo a trovare il bersaglio" }
                    });
                    await sender.SendTextMessageAsync(e.Message.From.Id, lang2, ChatType.Private,
                                                      lang, ParseMode.Default, username : username,
                                                      replyMarkupObject : new ReplyMarkupObject(ReplyMarkupEnum.REMOVE));
                }
                else
                {
                    var done = await RestrictUser.BanAllAsync(sender, e, target[1], true);

                    var text2 = new Language(new Dictionary <string, string>
                    {
                        { "en", "Target banned from " + done.Count + " groups" },
                        { "it", "Target bannato da " + done.Count + " gruppi" }
                    });
                    await SendMessage.SendMessageInPrivate(sender, e, text2);
                }
            }
            else
            {
                var done = await RestrictUser.BanAllAsync(sender, e, e.Message.ReplyToMessage.From.Id.ToString(), true);

                var text3 = new Language(new Dictionary <string, string>
                {
                    { "en", "Target banned from " + done.Count + " groups" },
                    { "it", "Target bannato da " + done.Count + " gruppi" }
                });
                await SendMessage.SendMessageInPrivate(sender, e, text3);
            }
        }
Exemple #7
0
        private static async Task <SuccessWithException> BanUserAsync(
            TelegramBotAbstract sender, MessageEventArgs e,
            string[] stringInfo)
        {
            var r =
                await Groups.CheckIfAdminAsync(e.Message.From.Id, e.Message.From.Username, e.Message.Chat.Id, sender);

            if (!r.IsSuccess())
            {
                return(r);
            }

            if (e.Message.ReplyToMessage == null)
            {
                var userIdFound = await Info.GetTargetUserIdAsync(stringInfo[1], sender);

                if (userIdFound == null)
                {
                    var e2 = new Exception("Can't find userid (1)");
                    await NotifyUtil.NotifyOwners(new ExceptionNumbered(e2), sender);

                    return(new SuccessWithException(false, e2));
                }

                var targetId = userIdFound.GetID();
                if (targetId == null)
                {
                    var e2 = new Exception("Can't find userid (2)");
                    await NotifyUtil.NotifyOwners(new ExceptionNumbered(e2), sender);

                    return(new SuccessWithException(false, e2));
                }

                return(await RestrictUser.BanUserFromGroup(sender, e, targetId.Value, e.Message.Chat.Id, null));
            }

            var targetInt = e.Message.ReplyToMessage.From.Id;

            return(await RestrictUser.BanUserFromGroup(sender, e, targetInt, e.Message.Chat.Id, stringInfo));
        }
        private static async Task <bool> BanUserAsync(TelegramBotAbstract sender, MessageEventArgs e,
                                                      string[] stringInfo)
        {
            var r = await Groups.CheckIfAdminAsync(e.Message.From.Id, e.Message.Chat.Id, sender);

            if (!r)
            {
                return(false);
            }

            if (e.Message.ReplyToMessage == null)
            {
                var targetInt = await Info.GetTargetUserIdAsync(stringInfo[1], sender);

                return(targetInt != null &&
                       await RestrictUser.BanUserFromGroup(sender, e, targetInt.Value, e.Message.Chat.Id, null));
            }
            else
            {
                var targetInt = e.Message.ReplyToMessage.From.Id;
                return(await RestrictUser.BanUserFromGroup(sender, e, targetInt, e.Message.Chat.Id, stringInfo));
            }
        }
Exemple #9
0
        private static async Task <object> BanUserHistoryAsync(TelegramBotAbstract sender, MessageEventArgs e)
        {
            var r = Owners.CheckIfOwner(e.Message.From.Id);

            if (!r)
            {
                return(r);
            }

            var query = "SELECT DISTINCT T1.target FROM " +
                        "(SELECT * FROM Banned WHERE banned_true_unbanned_false = 83 ORDER BY when_banned DESC) AS T1, " +
                        "(SELECT * FROM Banned WHERE banned_true_unbanned_false != 83 ORDER BY when_banned DESC) AS T2 " +
                        "WHERE (T1.target = T2.target AND T1.when_banned >= T2.when_banned AND T1.target IN (SELECT target FROM(SELECT target FROM Banned WHERE banned_true_unbanned_false != 83 ORDER BY when_banned DESC))) OR (T1.target NOT IN (SELECT target FROM (SELECT target FROM Banned WHERE banned_true_unbanned_false != 83 ORDER BY when_banned DESC)))";
            var x = SqLite.ExecuteSelect(query);

            if (x == null || x.Rows == null || x.Rows.Count == 0)
            {
                var text3 = new Language(new Dictionary <string, string>
                {
                    { "en", "There are no users to ban!" }
                });
                await sender.SendTextMessageAsync(e.Message.From.Id, text3, ChatType.Private,
                                                  e.Message.From.LanguageCode, ParseMode.Html, null, e.Message.From.Username, e.Message.MessageId);

                return(false);
            }

            var groups = SqLite.ExecuteSelect("Select id From Groups");

            /*
             * if(e.Message.Text.Length !=10)
             * {
             *  Language text2 = new Language(new Dictionary<string, string>() {
             *      {"en", "Group not found (1)!"}
             *  });
             *  await sender.SendTextMessageAsync(e.Message.From.Id, text2, ChatType.Private, e.Message.From.LanguageCode, ParseMode.Html, null, e.Message.From.Username, e.Message.MessageId, false);
             *  return false;
             * }
             */
            var counter = 0;
            var channel = Regex.Match(e.Message.Text, @"\d+").Value;

            if (groups.Select("id = " + "'" + channel + "'").Length != 1)
            {
                var text2 = new Language(new Dictionary <string, string>
                {
                    { "en", "Group not found! (2)" }
                });
                await sender.SendTextMessageAsync(e.Message.From.Id, text2, ChatType.Private,
                                                  e.Message.From.LanguageCode, ParseMode.Html, null, e.Message.From.Username, e.Message.MessageId);

                return(false);
            }

            foreach (DataRow element in x.Rows)
            {
                var userToBeBanned = Convert.ToInt64(element.ItemArray[0]);
                await RestrictUser.BanUserFromGroup(sender, e, userToBeBanned, Convert.ToInt64(channel), null);

                counter++;
            }

            var text = new Language(new Dictionary <string, string>
            {
                { "en", "Banned " + counter + " in group: " + groups.Select(channel) }
            });
            await sender.SendTextMessageAsync(e.Message.From.Id, text, ChatType.Private, e.Message.From.LanguageCode,
                                              ParseMode.Html, null, e.Message.From.Username, e.Message.MessageId);

            return(true);
        }
Exemple #10
0
        public static async Task AntiSpamMeasure(TelegramBotAbstract telegramBotClient, MessageEventArgs e,
                                                 SpamType checkSpam)
        {
            if (checkSpam == SpamType.ALL_GOOD)
            {
                return;
            }

            await RestrictUser.Mute(60 * 5, telegramBotClient, e.Message.Chat.Id, e.Message.From.Id);

            var language = e.Message.From.LanguageCode.ToLower();

            switch (checkSpam)
            {
            case SpamType.SPAM_LINK:
            {
                var text2 = new Language(new Dictionary <string, string>
                    {
                        { "en", "You sent a message with spam, and you were muted for 5 minutes" },
                        { "it", "Hai inviato un messaggio con spam, e quindi il bot ti ha mutato per 5 minuti" }
                    });


                await SendMessage.SendMessageInPrivate(telegramBotClient, e, text2);

                break;
            }

            case SpamType.NOT_ALLOWED_WORDS:
            {
                var text2 = new Language(new Dictionary <string, string>
                    {
                        { "en", "You sent a message with banned words, and you were muted for 5 minutes" },
                        { "it", "Hai inviato un messaggio con parole bandite, e quindi il bot ti ha mutato per 5 minuti" }
                    });

                await SendMessage.SendMessageInPrivate(telegramBotClient, e, text2);

                break;
            }

            case SpamType.FOREIGN:
            {
                var text2 = new Language(new Dictionary <string, string>
                    {
                        { "en", "You sent a message with banned characters, and you were muted for 5 minutes" },
                        {
                            "it",
                            "Hai inviato un messaggio con caratteri banditi, e quindi il bot ti ha mutato per 5 minuti"
                        }
                    });

                await SendMessage.SendMessageInPrivate(telegramBotClient, e, text2);

                break;
            }

            // ReSharper disable once UnreachableSwitchCaseDueToIntegerAnalysis
            case SpamType.ALL_GOOD:
                return;

            default:
                throw new ArgumentOutOfRangeException(nameof(checkSpam), checkSpam, null);
            }

            await telegramBotClient.DeleteMessageAsync(e.Message.Chat.Id, e.Message.MessageId, e.Message.Chat.Type);
        }
Exemple #11
0
        private static async Task MainMethod2(object sender, MessageEventArgs e)
        {
            TelegramBotClient   telegramBotClientBot = null;
            TelegramBotAbstract telegramBotClient    = null;

            try
            {
                if (sender is TelegramBotClient tmp)
                {
                    telegramBotClientBot = tmp;
                }

                if (telegramBotClientBot == null)
                {
                    return;
                }

                telegramBotClient = TelegramBotAbstract.GetFromRam(telegramBotClientBot);

                var toExit = await ModerationCheck.CheckIfToExitAndUpdateGroupList(telegramBotClient, e);

                if (toExit.Item1 == ToExit.EXIT)
                {
                    var itemToPrint     = MemberListToString(toExit.Item2);
                    var itemToPrint2    = ListIntToString(toExit.Item3);
                    var itemToPrint3    = StringToStringToBePrinted(toExit.Item4);
                    var itemToPrintFull = itemToPrint + "\n" + e?.Message?.Chat?.Title;
                    itemToPrintFull += "\n----\n" + itemToPrint2 + "\n----\nS:" + itemToPrint3;
                    itemToPrintFull += "\n----\n" + e?.Message?.Chat?.Id;
                    itemToPrintFull += "\n@@@@@@";

                    throw new ToExitException(itemToPrintFull);
                }

                var NotAuthorizedBotHasBeenAddedBool =
                    await ModerationCheck.CheckIfNotAuthorizedBotHasBeenAdded(e, telegramBotClient);

                if (NotAuthorizedBotHasBeenAddedBool != null && NotAuthorizedBotHasBeenAddedBool.Count > 0)
                {
                    foreach (var bot in NotAuthorizedBotHasBeenAddedBool)
                    {
                        await RestrictUser.BanUserFromGroup(telegramBotClient, e, bot, e.Message.Chat.Id, null);
                    }
                }

                //todo: send messagge "Bots not allowed here!"

                if (banMessageDetected(e))
                {
                    CommandDispatcher.banMessageActions(telegramBotClient, e);
                    return;
                }

                var toExitBecauseUsernameAndNameCheck =
                    await ModerationCheck.CheckUsernameAndName(e, telegramBotClient);

                if (toExitBecauseUsernameAndNameCheck)
                {
                    return;
                }

                var checkSpam = ModerationCheck.CheckSpam(e);
                if (checkSpam != SpamType.ALL_GOOD && checkSpam != SpamType.SPAM_PERMITTED)
                {
                    await ModerationCheck.AntiSpamMeasure(telegramBotClient, e, checkSpam);

                    return;
                }

                if (checkSpam == SpamType.SPAM_PERMITTED)
                {
                    await ModerationCheck.PermittedSpamMeasure(telegramBotClient, e, checkSpam);

                    return;
                }

                if (e.Message.Text != null && e.Message.Text.StartsWith("/"))
                {
                    await CommandDispatcher.CommandDispatcherMethod(telegramBotClient, e);
                }
                else
                {
                    await TextConversation.DetectMessage(telegramBotClient, e);
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception.Message);

                await NotifyUtil.NotifyOwners(exception, telegramBotClient);
            }
        }
        private static async Task SendUsernameWarning(TelegramBotAbstract telegramBotClient,
                                                      bool username, bool name, string lang, string usernameOfUser,
                                                      long chatId, int userId, int?messageId, ChatType messageChatType,
                                                      string firstName, string lastName, User[] newChatMembers)
        {
            var s1I =
                "Imposta un username e un nome più lungo dalle impostazioni di telegram per poter scrivere in questo gruppo\n";

            if (username && !name)
            {
                s1I = "Imposta un username dalle impostazioni di telegram per poter scrivere in questo gruppo\n";
            }
            else if (!username && name)
            {
                s1I = "Imposta un nome più lungo " +
                      "dalle impostazioni di telegram\n";
            }

            var s1E = "Set an username and a longer first name from telegram settings to write in this group\n";

            if (username && !name)
            {
                s1E = "Set an username from telegram settings to write in this group\n";
            }
            else if (!username && name)
            {
                s1E = "Set a longer first name from telegram settings to write in this group\n";
            }

            var s2 = new Language(new Dictionary <string, string>
            {
                { "it", s1I },
                { "en", s1E }
            });

            var r1 = await SendMessage.SendMessageInPrivateOrAGroup(telegramBotClient, s2, lang,
                                                                    usernameOfUser, userId, firstName, lastName, chatId, messageChatType);

            const int MINUTES_WAIT = 2;

            if (r1.GetChatType() != ChatType.Private)
            {
                var r2 = r1.GetMessage();
                if (r2 != null)
                {
                    if (r2 is TLMessage r3)
                    {
                        lock (GlobalVariables.MessagesToDelete)
                        {
                            var timeUntilDelete = TimeSpan.FromMinutes(MINUTES_WAIT);
                            var TimeToDelete    = DateTime.Now + timeUntilDelete;

                            var toDelete = new MessageToDelete(r3, chatId, TimeToDelete, telegramBotClient.GetId(),
                                                               r1.GetChatType(), null);
                            GlobalVariables.MessagesToDelete.Add(toDelete);

                            FileSerialization.WriteToBinaryFile(Paths.Bin.MessagesToDelete,
                                                                GlobalVariables.MessagesToDelete);
                        }
                    }
                    else if (r2 is Message r4)
                    {
                        lock (GlobalVariables.MessagesToDelete)
                        {
                            var timeUntilDelete = TimeSpan.FromMinutes(MINUTES_WAIT);
                            var TimeToDelete    = DateTime.Now + timeUntilDelete;

                            var toDelete = new MessageToDelete(r4, chatId, TimeToDelete, telegramBotClient.GetId(),
                                                               r1.GetChatType(), null);
                            GlobalVariables.MessagesToDelete.Add(toDelete);

                            FileSerialization.WriteToBinaryFile(Paths.Bin.MessagesToDelete,
                                                                GlobalVariables.MessagesToDelete);
                        }
                    }
                    else
                    {
                        var e4 = "Attempted to add a message to be deleted in queue\n" + r2?.GetType() + " " + r2;
                        var e3 = new Exception(e4);
                        await NotifyUtil.NotifyOwners(e3, telegramBotClient);
                    }
                }
            }

            if (newChatMembers == null || newChatMembers.Length == 0)
            {
                await RestrictUser.Mute(60 * 5, telegramBotClient, chatId, userId, messageChatType);
            }

            if (messageId != null)
            {
                await telegramBotClient.DeleteMessageAsync(chatId, messageId.Value, messageChatType, null);
            }
        }