Ejemplo n.º 1
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));
            }
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
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);
            }
        }