Exemple #1
0
        //WebConsole wConsole = new WebConsole();
        public void onchat(string text, bool isJson)
        {
            List <string> links = new List <string>();
            string        json  = null;

            if (isJson)
            {
                json = text;
                text = ChatParser.ParseText(json, links);
            }

            String chat      = text;
            String chatclean = GetVerbatim(text);

            //wConsole.process(chat);

            if (Regex.IsMatch(chatclean, "^\\[WITHER\\] Finalmente livre! Prepare-se para enfrentar a morte!$", RegexOptions.IgnoreCase))
            {
                Telegram.SendPrivateMessage(816833078, "O Wither acaba de spawnar");
            }

            if (Regex.IsMatch(chatclean, "^\\[ENDER DRAGON\\] Estou de volta para dominar a todos!!!$", RegexOptions.IgnoreCase))
            {
                Telegram.SendPrivateMessage(816833078, "O Ender Dragon acaba de spawnar");
            }

            if (chatclean.Equals("»Bem vindo de volta. Por favor digite /login sua-senha."))
            {
                ConsoleIO.WriteLineFormatted("&4[Auto-Login] &cLogando no servidor");
                Program.Client.SendText("/login htbot");
                vars.loggedIn = true;
            }

            if (Regex.IsMatch(chatclean, "^Saldo de (.+): (.+) Coins.$"))
            {
                Match  match     = Regex.Match(chatclean, "^Saldo de (.+): (.+) Coins.$");
                string moneynick = match.Groups[1].Value;
                string money     = match.Groups[2].Value;


                if (!vars.checkMultipleMoney)
                {
                    if (vars.tmoney)
                    {
                        response.sendMoney(moneynick, money);
                        vars.tmoney = false;
                    }
                }
                else
                {
                    vars.multiplemoney.Add(moneynick + " <b>" + money + "</b>");

                    if (vars.multiplemoney.Count == vars.multiplemoneycheck)
                    {
                        response.sendMultipleMoney(vars.multiplemoney);
                    }
                }
            }

            if (Regex.IsMatch(chatclean, "^(.+): ([0-9,]+) XP\\((.+)\\/(.+)\\)$"))
            {
                Match  match = Regex.Match(chatclean, "(.+): ([0-9,]+) XP\\((.+)\\/(.+)\\)$");
                string skill = match.Groups[1].Value;
                string level = match.Groups[2].Value;
                string xp1   = match.Groups[3].Value;
                string xp2   = match.Groups[4].Value;

                if (!vars.singleSkillCheck)
                {
                    switch (skill)
                    {
                    case "Acrobacia": skill = "🤸🏻‍♂️ (" + skill; break;

                    case "Reparaçao": skill = "▫️ (" + skill; break;

                    case "Machado": skill = "⚔️ (" + skill; break;

                    case "Arqueiro": skill = "🏹 (" + skill; break;

                    case "Espadas": skill = "⚔️ (" + skill; break;

                    case "Domar": skill = "🦴 (" + skill; break;

                    case "Desarmado": skill = "👊🏻 (" + skill; break;

                    case "Escavaçao": skill = "🥄 (" + skill; break;

                    case "Pescador": skill = "🐟 (" + skill; break;

                    case "Herbalismo": skill = "🌿 (" + skill; break;

                    case "Mineraçao": skill = "⛏ (" + skill; break;

                    case "Lenhador": skill = "🌳 (" + skill; break;
                    }

                    bool found = false;

                    List <Account> accounts = Telegram.data.GetAccountList(vars.atualUser);
                    foreach (Account acc in accounts)
                    {
                        if (acc.getNick().ToLower().Equals(vars.atualNick.ToLower()))
                        {
                            found = true;
                        }
                    }

                    int oldLvl = Telegram.data.skillLevel(vars.atualUser, vars.atualNick, match.Groups[1].Value, int.Parse(level.Replace(",", "")));

                    int    diference = int.Parse(level.Replace(",", "")) - oldLvl;
                    string strdf;

                    if ((diference > 0) && (found))
                    {
                        strdf = " ➕ <b>" + diference + "</b>%0A";
                    }
                    else
                    {
                        strdf = "%0A";
                    }

                    if ((vars.checkSkills) || (vars.checkMultipleSkills))
                    {
                        vars.skills.Add(skill + ")" + " <b>" + level + "</b> (<code>" + xp1 + "</code>)" + strdf);
                        vars.skillsList++;
                        if (!vars.checkMultipleSkills)
                        {
                            if (vars.skillsList == 10)
                            {
                                response.sendSkills(vars.skills);
                            }
                        }
                        else
                        {
                            if ((vars.checkedNicksCount == vars.multipleskillscheck) && (vars.skillsList == 10))
                            {
                                vars.skills.Add("════════════════════%0A" + vars.emjinfo + " Este comando será desativado automaticamente Amanhã (18/05/19)%0AComo alternativa use <code>/nomedaskill</code>,%0AExemplo <b>/pescador</b> %0Aou <code>/inspect nick</code>");
                                response.sendSkills(vars.skills);
                            }
                        }
                    }
                }
                else
                {
                    if (vars.checkingSkill.ToLower().Equals(skill.ToLower()))
                    {
                        bool found = false;

                        List <Account> accounts = Telegram.data.GetAccountList(vars.atualUser);
                        foreach (Account acc in accounts)
                        {
                            if (acc.getNick().ToLower().Equals(vars.atualNick.ToLower()))
                            {
                                found = true;
                            }
                        }

                        int    oldLvl    = Telegram.data.skillLevel(vars.atualUser, vars.atualNick, skill, int.Parse(level.Replace(",", "")));
                        int    diference = int.Parse(level.Replace(",", "")) - oldLvl;
                        string strdf;
                        if ((diference > 0) && (found))
                        {
                            strdf = " ➕ <b>" + diference + "</b>%0A";
                        }
                        else
                        {
                            strdf = "%0A";
                        }

                        vars.skills.Add(vars.atualNick + ")" + " <b>" + level + "</b> (<code>" + xp1 + "</code>)" + strdf);
                        vars.skillsList++;

                        if (vars.skillsList == vars.multipleskillscheck)
                        {
                            response.sendSkills(vars.skills);
                        }
                    }
                }
            }

            if (Regex.IsMatch(chatclean, "^. Aguarde para utilizar esse comando novamente!$"))
            {
                if (vars.checkmctop)
                {
                    Telegram.SendHtmlMessage(vars.emjneutralface + " Por favor, aguarde um pouco antes de usar este comando novamente!");
                }
            }

            if (Regex.IsMatch(chatclean, "^Player nao encontrado no banco de dados!$"))
            {
                if ((vars.checkSkills) || (vars.checkmcrank))
                {
                    Telegram.SendHtmlMessage(vars.emjneutralface + " Ops, Aparentemente essa conta nao existe no servidor, Verifique o nick e tente novamente!");
                }
            }

            if (Regex.IsMatch(chatclean, "^. Não existe um jogador com o nick (.+)\\.$", RegexOptions.IgnoreCase))
            {
                Match match = Regex.Match(chatclean, "^. Não existe um jogador com o nick (.+)\\.$", RegexOptions.IgnoreCase);
                Telegram.SendHtmlMessage(vars.emjneutralface + " Ops, Aparentemente a conta " + match.Groups[1].Value + " não existe no servidor, Verifique o nick e tente novamente!");
            }

            if (Regex.IsMatch(chatclean, "^Skill inexistente, veja se digitou corretamente!$"))
            {
                if ((vars.checkSkills) || (vars.checkmctop))
                {
                    Telegram.SendHtmlMessage(vars.emjneutralface + " Ops, Aparentemente essa skill nao existe no servidor, Verifique e tente novamente!");
                }
            }

            if (Regex.IsMatch(chatclean, "^(\\d{2,5})\\. (.+) - (\\d{1,5})$"))
            {
                Match  match = Regex.Match(chatclean, "^(\\d{2,5})\\. (.+) - (\\d{1,5})$");
                int    pos   = int.Parse(match.Groups[1].Value);
                string nick  = match.Groups[2].Value;
                int    level = int.Parse(match.Groups[3].Value);
                string strpos;

                int dif;

                switch (pos)
                {
                case 1: strpos = "🥇"; break;

                case 2: strpos = "🥈"; break;

                case 3: strpos = "🥉"; break;

                case 4: strpos = " ➃"; break;

                case 5: strpos = " ➄"; break;

                case 6: strpos = " ➅"; break;

                case 7: strpos = " ➆"; break;

                case 8: strpos = " ➇"; break;

                case 9: strpos = " ➈"; break;

                default: strpos = "(" + pos + ")";  break;
                }

                if (pos == 1)
                {
                    vars.firstlevel = level;
                }

                dif = vars.firstlevel - level;

                if (vars.checkmctop)
                {
                    if (dif > 0)
                    {
                        vars.mctop.Add(strpos + " <b>" + nick + "</b> (<code>" + level + "</code>) - " + dif + "%0A");
                    }
                    else
                    {
                        vars.mctop.Add(strpos + " <b>" + nick + "</b> (<code>" + level + "</code>)%0A");
                    }

                    vars.mcTopList++;
                    if (vars.mcTopList == 10)
                    {
                        response.sendmctop(vars.mctop);
                    }
                }
            }

            if (Regex.IsMatch(chatclean, "^Skills do player (.+)$"))
            {
                Match match = Regex.Match(chatclean, "^Skills do player (.+)$");
                vars.atualNick = match.Groups[1].Value;

                if (!vars.singleSkillCheck)
                {
                    if (vars.checkSkills)
                    {
                        vars.skills.Clear();
                        vars.skillsList = 0;
                        vars.skills.Add("Essas são as skills de <code>" + match.Groups[1].Value + "</code> :%0A════════════════════%0A");
                    }
                    if (vars.checkMultipleSkills)
                    {
                        vars.checkedNicksCount++;
                        vars.skillsList = 0;
                        if (vars.checkedNicksCount > 1)
                        {
                            vars.skills.Add("%0A");
                        }
                        vars.skills.Add("Essas são as skills de <code>" + match.Groups[1].Value + "</code> :%0A════════════════════%0A");
                    }
                }
            }

            if (Regex.IsMatch(chatclean, "^(Acrobacia|Arqueiro|Machado|Escavaçao|Pescador|Herbalismo|Mineraçao|Reparaçao|Espadas|Lenhador|Global) - Posiçao #([0-9,]{1,6})$"))
            {
                Match  match = Regex.Match(chatclean, "^(Acrobacia|Arqueiro|Machado|Escavaçao|Pescador|Herbalismo|Mineraçao|Reparaçao|Espadas|Lenhador|Global) - Posiçao #([0-9,]{1,6})$");
                string skill = match.Groups[1].Value;
                int    pos   = int.Parse(match.Groups[2].Value.Replace(",", ""));

                if (vars.checkmcrank)
                {
                    string strpos;

                    switch (pos)
                    {
                    case 1: strpos = "🥇"; break;

                    case 2: strpos = "🥈"; break;

                    case 3: strpos = "🥉"; break;

                    default: strpos = pos.ToString(); break;
                    }

                    vars.mcrank.Add(skill + " (" + strpos + ")%0A");
                    if (skill.ToLower().Equals("global"))
                    {
                        response.sendmcrank(vars.mcrank);
                    }
                }
            }

            if (Regex.IsMatch(chatclean, "^-=RANKING DE SKILLS=-$"))
            {
                if (vars.checkmcrank)
                {
                    vars.mcrank.Clear();
                    vars.mcrank.Add("Posição de: <code>" + vars.atualNick + "</code> no Ranking de skills:%0A════════════════════%0A");
                }
            }

            if (Regex.IsMatch(chatclean, "^--CraftLandia--$"))
            {
                if (vars.checkmctop)
                {
                    vars.mctop.Clear();
                    vars.mcTopList = 0;
                    vars.mctop.Add("Ranking da skill <code>" + vars.mctopskill + "</code> :%0A════════════════════%0A");
                }
            }

            if (Regex.IsMatch(chatclean, "^([0-9]+)\\) (.+) \\(([0-9,.]+) Coins\\)$"))
            {
                Match  match    = Regex.Match(chatclean, "([0-9]+)\\) (.+) \\(([0-9,.]+) Coins\\)$");
                int    pos      = int.Parse(match.Groups[1].Value);
                string nick     = match.Groups[2].Value;
                string money    = match.Groups[3].Value;
                int    arraypos = pos - 1;

                if (vars.tmoney)
                {
                    vars.moneytop.Insert(arraypos, "[" + pos + "]" + " <b>" + nick + "</b> <code>" + money + "</code>%0A");
                    vars.moneyTopList++;
                    if (vars.moneyTopList == 15)
                    {
                        response.sendMoneyTop(vars.moneytop);
                    }
                }
            }

            if (Regex.IsMatch(chatclean, "^\\[Tesouro\\] (.+) encontrou um livro: Tesouro Nível (\\d{1,2})$"))
            {
                Match  match = Regex.Match(chatclean, "^\\[Tesouro\\] (.+) encontrou um livro: Tesouro Nível (\\d{1,2})$");
                string nick  = match.Groups[1].Value;
                int    level = int.Parse(match.Groups[2].Value);

                Telegram.data.addTreasure(level, nick);
            }

            if (chatclean.Equals("» TOP 15 jogadores mais ricos:"))
            {
                if (vars.tmoney)
                {
                    vars.moneytop.Clear();
                    vars.moneyTopList = 0;
                }
            }

            if (Regex.IsMatch(chatclean, "(.+) alcançou nível (\\d{1,4}) na skill (.+)!"))
            {
                Match  notificação = Regex.Match(chatclean, "(.+) alcançou nível (\\d{1,4}) na skill (.+)!");
                string nick        = notificação.Groups[1].Value;
                int    nivel       = int.Parse(notificação.Groups[2].Value);
                string skill       = notificação.Groups[3].Value;


                bool success = Telegram.data.addNotification(nick, "<i>Alcançou</i> <code>" + nivel + "</code> <i>na skill:</i> <code>" + skill + "</code>");

                if (success)
                {
                    Telegram.SendHtmlMessage("🎉A conta <code>" + nick + "</code> Alcançou <code>" + nivel + "</code> <i>na skill:</i> <code>" + skill + "</code>🎉");
                    Program.Client.SendText("/g [Bezouro Bot] " + nick + " usa o Bot e ja sabe que alcançou " + nivel + " " + skill);
                }
            }

            if (Regex.IsMatch(chatclean, "^(.+) é o (\\d{1,5}). mais rico do servidor.$"))
            {
                if (vars.checkMoneyRank)
                {
                    vars.checkMoneyRank = false;
                    Match  notificação = Regex.Match(chatclean, "^(.+) é o (\\d{1,5}). mais rico do servidor.$");
                    string nick        = notificação.Groups[1].Value;
                    int    pos         = int.Parse(notificação.Groups[2].Value);

                    Telegram.SendHtmlMessage("<code>" + pos + "º</code>) <b>" + nick + "</b>");
                }
            }

            if (Regex.IsMatch(chatclean, "^\\(Mensagem de (.+)\\): verificar (\\d\\d\\d\\d)$"))
            {
                Match  match = Regex.Match(chatclean, "^\\(Mensagem de (.+)\\): verificar (\\d\\d\\d\\d)$");
                string Nick  = match.Groups[1].Value;
                int    Token = int.Parse(match.Groups[2].Value);

                Program.Client.SendText("/r Verificando codigo!");

                bool success = Telegram.data.Verify(Nick, Token);

                wait(4000);

                if (success)
                {
                    Program.Client.SendText("/r Conta verificada com sucesso!");
                }
                else
                {
                    Program.Client.SendText("/r Houve um erro ao verificar sua conta!");
                }
            }

            if (Regex.IsMatch(chatclean, "^» Players online: (\\d{1,4})$"))
            {
                Match match = Regex.Match(chatclean, "^» Players online: (\\d{1,4})$");
                if (!vars.sendWM)
                {
                    return;
                }
                else
                {
                    response.sendWM(int.Parse(match.Groups[1].Value));
                }
            }

            if (Regex.IsMatch(chatclean, "^\\[Server\\] REINICIANDO O SERVIDOR\\.$"))
            {
                Telegram.SendHtmlMessage(vars.emjinfo + "O servidor está reiniciando!");
            }

            if (Regex.IsMatch(chatclean, "^\\(Mensagem de (.+)\\): ([0-1]) (\\d{4}) (.+)$"))
            {
                Match  resposta = Regex.Match(chatclean, "^\\(Mensagem de (.+)\\): ([0-1]) (\\d{4}) (.+)$");
                string Sender   = resposta.Groups[1].Value;
                bool   privado  = Convert.ToBoolean(int.Parse(resposta.Groups[2].Value));
                int    Token    = int.Parse(resposta.Groups[3].Value);
                string Message  = resposta.Groups[4].Value;


                bool mathToken = Telegram.data.mathToken(Sender, Token);
                bool waiting   = Telegram.data.ResponseLimit(Token);


                if (mathToken)
                {
                    if (privado)
                    {
                        Telegram.SendPrivateMessage(Telegram.data.getIdFromToken(Token), vars.replaceEmoji(Message));
                    }
                    else
                    {
                        if (waiting)
                        {
                            string response = "Mensagem de " + Sender + ":%0A════════════════════%0A" + vars.replaceEmoji(Message);
                            Telegram.SendHtmlMessage(response);
                        }
                        else
                        {
                            Program.Client.SendText("/tell " + Sender + " Desculpe, Tempo de resposta (3s) excedido");
                        }
                    }
                }
                else
                {
                    Program.Client.SendText("/tell " + Sender + " Token invalido");
                }
            }

            if (Regex.IsMatch(chatclean, "^\\(Mensagem de (.+)\\): 2 (\\d{4}) (.+)$"))
            {
                Match  resposta = Regex.Match(chatclean, "^\\(Mensagem de (.+)\\): 2 (\\d{4}) (.+)$");
                string Sender   = resposta.Groups[1].Value;
                int    Token    = int.Parse(resposta.Groups[2].Value);
                string Message  = resposta.Groups[3].Value;


                bool mathToken = Telegram.data.mathToken(Sender, Token);


                if (mathToken)
                {
                    Telegram.data.addNotification(Sender, Message, true, Token);
                    Program.Client.SendText("/tell " + Sender + " Mensagem salva!");
                }
                else
                {
                    Program.Client.SendText("/tell " + Sender + " Token invalido");
                }
            }

            if (Regex.IsMatch(chatclean, "^\\(Mensagem de (.+)\\): (\\d{4})$"))
            {
                Match  resposta = Regex.Match(chatclean, "^\\(Mensagem de (.+)\\): (\\d{4})$");
                string Sender   = resposta.Groups[1].Value;
                int    Token    = int.Parse(resposta.Groups[2].Value);


                bool   mathToken  = Telegram.data.mathToken(Sender, Token);
                string loggednick = Telegram.data.getNickFromToken(Token);

                if (Telegram.data.Protect(Sender))
                {
                    if (mathToken)
                    {
                        Program.Client.SendText("/tell " + Sender + " Bem vindo " + Sender);
                        Telegram.data.login(Sender, true, false, true);
                    }
                    else
                    {
                        new Thread(new ThreadStart(delegate
                        {
                            System.Threading.Thread.Sleep(2000);
                            if (Telegram.data.canLogin(Sender))
                            {
                                if (loggednick != null)
                                {
                                    Program.Client.SendText("/tell " + Sender + " [Protect] ola " + loggednick + ", o " + Sender + " foi avisado do seu login!");
                                    Telegram.data.login(Sender, true, false, true);
                                    List <int> tokens = Telegram.data.getTokenProtected(Sender);
                                    foreach (int token in tokens)
                                    {
                                        Telegram.data.addNotification(Sender, loggednick + " Acessou sua conta", true, token);
                                    }
                                }
                                else
                                {
                                    Program.Client.SendText("/tell " + Sender + " [Protect] Token invalido!");
                                }
                            }
                        })).Start();
                    }
                }
            }
        }
Exemple #2
0
        public void onTelegramMessage(string chat, string Suser, string text, bool mention, int usermention)
        {
            int user = int.Parse(Suser);

            if (!chat.Equals(Suser))
            {
                if (text.Equals("ajuda"))
                {
                    response.sendHelp();
                }

                if (Regex.IsMatch(text, "^ajuda ([1-9])$", RegexOptions.IgnoreCase))
                {
                    response.sendHelp(Regex.Match(text, "^ajuda ([1-9])$", RegexOptions.IgnoreCase).Groups[1].Value);
                }

                if (text.Equals("changelog"))
                {
                    response.sendChangelog();
                }

                if (text.Equals("status"))
                {
                    Telegram.SendTypingStatus();
                    response.sendStatus(vars.loggedIn);
                }

                if (Regex.IsMatch(text, "^add (.+)", RegexOptions.IgnoreCase))
                {
                    Match nick = Regex.Match(text, "^add (.+)", RegexOptions.IgnoreCase);
                    Telegram.SendTypingStatus();

                    if (nick.Groups[1].Value.Contains(" "))
                    {
                        response.sendNickSpace();
                        return;
                    }
                    List <Account> accs = data.GetAccountList(user);
                    foreach (Account acc in accs)
                    {
                        if (acc.getNick().ToLower().Equals(nick.Groups[1].Value.ToLower()))
                        {
                            response.sendAccountAlreadyAdded();
                            return;
                        }
                    }
                    data.addNewAccount(user, nick.Groups[1].Value);
                    ConsoleIO.WriteLineFormatted("§d[Banco de dados] §2Adicionando o nick " + nick.Groups[1].Value + " id(" + user + ") Ao banco de dados!");
                }

                /*if (Regex.IsMatch(text, "^tadd ([0-9]+) (.+)"))
                 * {
                 *  Match nick = Regex.Match(text, "^tadd ([0-9]+) (.+)");
                 *  data.addTreasure(int.Parse(nick.Groups[1].Value), nick.Groups[2].Value);
                 * }*/

                if (Regex.IsMatch(text, "^notificar (.+) (.+)", RegexOptions.IgnoreCase))
                {
                    Match notify = Regex.Match(text, "^notificar (.+) (.+)", RegexOptions.IgnoreCase);

                    data.addNotification(notify.Groups[1].Value, notify.Groups[2].Value);
                }

                if (text.ToLower().Equals("tesouros"))
                {
                    response.sendTreasures(user);
                }

                if (text.ToLower().Equals("link"))
                {
                    Telegram.SendHtmlMessage(vars.emjinfo + " Link do grupo:%0Ahttps://t.me/joinchat/IcsdwkZ2PD3HdWCJCunNGQ");
                }

                if (text.ToLower().Equals("mensagens"))
                {
                    response.sendNotifications(user);
                }

                if (text.ToLower().Equals("limparmensagens"))
                {
                    response.sendNotificationsClear(user);
                }

                if (text.ToLower().Equals("limpartesouros"))
                {
                    response.sendTreasuresClear(user);
                }

                if (Regex.IsMatch(text, "^del (.+)", RegexOptions.IgnoreCase))
                {
                    Match nick = Regex.Match(text, "^del (.+)", RegexOptions.IgnoreCase);
                    Telegram.SendTypingStatus();

                    if (nick.Groups[1].Value.Contains(" "))
                    {
                        response.sendNickSpace();
                        return;
                    }
                    data.removeAccount(user, nick.Groups[1].Value);
                    ConsoleIO.WriteLineFormatted("§d[Banco de dados] §2Removendo o nick " + nick.Groups[1].Value + " id(" + user + ") Do banco de dados!");
                }

                if (Regex.IsMatch(text, "^cargo (.+) (user|moderador|admin)$", RegexOptions.IgnoreCase))
                {
                    Match  match = Regex.Match(text, "^cargo (.+) (user|moderador|admin)$", RegexOptions.IgnoreCase);
                    string name  = match.Groups[1].Value;
                    string cargo = match.Groups[2].Value;

                    bool ok = false;

                    Telegram.SendTypingStatus();

                    if (!mention)
                    {
                        Telegram.SendHtmlMessage(vars.emjerror + " Mencione alguem para usar este comando!");
                    }

                    if (Telegram.isAdmin(user))
                    {
                        Admin adm = Telegram.getAdmin(user);
                        if (adm.canPromoteMembers())
                        {
                            ok = Telegram.promoteUser(usermention, cargo);
                        }
                        else
                        {
                            Telegram.SendHtmlMessage(vars.emjerror + " Desculpe, você nao pode alterar cargos!");
                        }
                    }
                    else
                    {
                        Telegram.SendHtmlMessage(vars.emjerror + " Apenas Admins podem usar este comando!");
                    }


                    if (ok)
                    {
                        Telegram.SendHtmlMessage(vars.emjok + " Cargo de " + name + " Definido para " + cargo);
                    }
                    else
                    {
                        Telegram.SendHtmlMessage(vars.emjerror + " Erro ao processar a solicitação");
                    }
                }

                if (Regex.IsMatch(text, "^contas (.+)$", RegexOptions.IgnoreCase))
                {
                    Match  match = Regex.Match(text, "^contas (.+)$", RegexOptions.IgnoreCase);
                    string name  = match.Groups[1].Value;

                    bool ok = false;

                    Telegram.SendTypingStatus();

                    if (!mention)
                    {
                        Telegram.SendHtmlMessage(vars.emjerror + " Mencione alguem para usar este comando!");
                        return;
                    }

                    if (Telegram.isAdmin(user))
                    {
                        Admin adm = Telegram.getAdmin(user);
                        if (adm.canPromoteMembers())
                        {
                            response.sendNicknames(usermention);
                        }
                        else
                        {
                            Telegram.SendHtmlMessage(vars.emjerror + " Apenas Admins podem usar este comando!");
                        }
                    }
                    else
                    {
                        Telegram.SendHtmlMessage(vars.emjerror + " Apenas Admins podem usar este comando!");
                    }
                }

                if (Regex.IsMatch(text, "^protect$", RegexOptions.IgnoreCase))
                {
                    response.sendProtectedNicknames(user);
                }

                if (Regex.IsMatch(text, "^protect (.+) (on|off)$", RegexOptions.IgnoreCase))
                {
                    Match  match   = Regex.Match(text, "^protect (.+) (on|off)$", RegexOptions.IgnoreCase);
                    string name    = match.Groups[1].Value;
                    bool   protect = match.Groups[2].Value.ToLower().Equals("on");

                    Telegram.SendTypingStatus();

                    Telegram.data.Protect(name, true, protect, user);
                }

                if (Regex.IsMatch(text, "^reconectar$", RegexOptions.IgnoreCase))
                {
                    Telegram.SendTypingStatus();

                    if (Telegram.isAdmin(user))
                    {
                        Admin adm = Telegram.getAdmin(user);
                        if (adm.canPromoteMembers())
                        {
                            Program.Client.SendText("/ativar reiniciandohtbot");
                            Program.Restart();
                            Telegram.SendHtmlMessage(vars.emjok + " Reconectando ao servidor!");
                        }
                        else
                        {
                            Telegram.SendHtmlMessage(vars.emjerror + " Desculpe, você não tem permissão para isso!");
                        }
                    }
                    else
                    {
                        Telegram.SendHtmlMessage(vars.emjerror + " Apenas Admins podem usar este comando!");
                    }
                }

                if (Regex.IsMatch(text, "^reiniciar$", RegexOptions.IgnoreCase))
                {
                    Telegram.SendTypingStatus();

                    if (Telegram.isAdmin(user))
                    {
                        Admin adm = Telegram.getAdmin(user);
                        if (adm.canPromoteMembers())
                        {
                            new Thread(new ThreadStart(delegate
                            {
                                Telegram.SendHtmlMessage(vars.emjok + " Reiniciando o bot!");
                                Program.Client.SendText("/ativar reiniciandohtbot");
                                Thread.Sleep(2000);
                                Environment.Exit(0);
                            })).Start();
                        }
                        else
                        {
                            Telegram.SendHtmlMessage(vars.emjerror + " Desculpe, você não tem permissão para isso!");
                        }
                    }
                    else
                    {
                        Telegram.SendHtmlMessage(vars.emjerror + " Apenas Admins podem usar este comando!");
                    }
                }

                if (text.ToLower().Equals("contas"))
                {
                    response.sendNicknames(user);
                }

                if (vars.loggedIn)
                {
                    if (Regex.IsMatch(text, "^online ([a-zA-Z0-9-_]+)$", RegexOptions.IgnoreCase))
                    {
                        Match nick     = Regex.Match(text, "^online ([a-zA-Z0-9-_]+)$", RegexOptions.IgnoreCase);
                        bool  isOnline = false;
                        Telegram.SendTypingStatus();

                        foreach (string player in Program.Client.GetOnlinePlayers())
                        {
                            if (player.ToLower().Equals(nick.Groups[1].Value.ToLower()))
                            {
                                isOnline = true;
                                response.sendOnline(isOnline, player);
                            }
                        }

                        if (!isOnline)
                        {
                            foreach (string player in Program.Client.GetOnlinePlayers())
                            {
                                if (player.ToLower().Contains(nick.Groups[1].Value.ToLower()))
                                {
                                    isOnline = true;
                                    response.sendOtherOnline(player);
                                    break;
                                }
                            }

                            if (!isOnline)
                            {
                                response.sendOnline(isOnline, nick.Groups[1].Value);
                            }
                        }
                    }

                    if (Regex.IsMatch(text, "^money (.+)", RegexOptions.IgnoreCase))
                    {
                        Match nick = Regex.Match(text, "^money (.+)", RegexOptions.IgnoreCase);
                        Telegram.SendTypingStatus();

                        if (nick.Groups[1].Value.Contains(" "))
                        {
                            if (nick.Groups[1].Value.Contains("rank "))
                            {
                                vars.checkMoneyRank = true;
                                Program.Client.SendText("/money " + nick.Groups[1].Value);
                                return;
                            }
                            else
                            {
                                response.sendNickSpace();
                                return;
                            }
                        }

                        if (nick.Groups[1].Value.ToLower().Equals("top"))
                        {
                            vars.tmoney = true;
                            Program.Client.SendText("/money " + nick.Groups[1].Value);
                            return;
                        }

                        vars.tmoney = true;
                        Program.Client.SendText("/money @" + nick.Groups[1].Value);
                    }

                    if (Regex.IsMatch(text, "^inspect (.+)", RegexOptions.IgnoreCase))
                    {
                        vars.resetVars();
                        Match nick = Regex.Match(text, "^inspect (.+)", RegexOptions.IgnoreCase);
                        Telegram.SendTypingStatus();

                        vars.atualUser = user;

                        if (nick.Groups[1].Value.Contains(" "))
                        {
                            response.sendNickSpace();
                            return;
                        }

                        vars.checkSkills = true;
                        Program.Client.SendText("/inspect " + nick.Groups[1].Value);
                    }

                    if (Regex.IsMatch(text, "^mctop (.+)", RegexOptions.IgnoreCase))
                    {
                        Match skill = Regex.Match(text, "^mctop (.+)", RegexOptions.IgnoreCase);
                        Telegram.SendTypingStatus();

                        vars.checkmctop = true;
                        Program.Client.SendText("/mctop " + skill.Groups[1].Value);
                        vars.mctopskill = skill.Groups[1].Value;
                    }

                    if (Regex.IsMatch(text, "^mctop$", RegexOptions.IgnoreCase))
                    {
                        Match skill = Regex.Match(text, "^mctop$", RegexOptions.IgnoreCase);
                        Telegram.SendTypingStatus();

                        vars.checkmctop = true;
                        Program.Client.SendText("/mctop");
                        vars.mctopskill = "Geral";
                    }

                    if (Regex.IsMatch(text, "^mcrank (.+)", RegexOptions.IgnoreCase))
                    {
                        Match check = Regex.Match(text, "^mcrank (.+)", RegexOptions.IgnoreCase);
                        Telegram.SendTypingStatus();

                        vars.checkmcrank = true;
                        Program.Client.SendText("/mcrank " + check.Groups[1].Value);
                        vars.atualNick = check.Groups[1].Value;
                    }

                    if (Regex.IsMatch(text, "^(Acrobacia|Reparaçao|Machado|Arqueiro|Espadas|Domar|Desarmado|Escavaçao|Pescador|Herbalismo|Mineraçao|Lenhador)$", RegexOptions.IgnoreCase))
                    {
                        Match  skill = Regex.Match(text, "^(Acrobacia|Reparaçao|Machado|Arqueiro|Espadas|Domar|Desarmado|Escavaçao|Pescador|Herbalismo|Mineraçao|Lenhador)$", RegexOptions.IgnoreCase);
                        string Skill = skill.Groups[1].Value;

                        vars.resetVars();

                        List <Account> accounts = Telegram.data.GetAccountList(user);
                        vars.checkingSkill       = Skill;
                        vars.singleSkillCheck    = true;
                        vars.atualUser           = user;
                        vars.multipleskillscheck = accounts.Count;
                        vars.checkedNicksCount   = 0;

                        Telegram.SendTypingStatus();

                        vars.skills.Add("Skill: <code>" + vars.checkingSkill + "</code> :%0A════════════════════%0A");

                        if (accounts.Count > 0)
                        {
                            foreach (Account account in accounts)
                            {
                                string acc = account.getNick();
                                wait(500);
                                Program.Client.SendText("/inspect " + acc);
                                wait(500);
                            }
                        }
                        else
                        {
                            Telegram.SendHtmlMessage(vars.emjerror + " Antes de usar esse comando %0AUse /add <code>nick</code> para adicionar suas contas!");
                        }
                    }

                    if (Regex.IsMatch(text, "^inspect$", RegexOptions.IgnoreCase))
                    {
                        Telegram.SendTypingStatus();

                        vars.resetVars();

                        vars.checkMultipleSkills = true;
                        vars.atualUser           = user;

                        List <Account> accounts = Telegram.data.GetAccountList(user);

                        vars.multipleskillscheck = accounts.Count;
                        vars.checkedNicksCount   = 0;
                        if (Telegram.data.getTimestamp() < 1558148400)
                        {
                            if (accounts.Count > 0)
                            {
                                foreach (Account account in accounts)
                                {
                                    string acc = account.getNick();
                                    wait(500);
                                    Program.Client.SendText("/inspect " + acc);
                                    wait(500);
                                }
                            }
                            else
                            {
                                Telegram.SendHtmlMessage(vars.emjerror + " Antes de usar esse comando %0AUse /add <code>nick</code> para adicionar suas contas!");
                            }
                        }
                        else
                        {
                            Telegram.SendHtmlMessage(vars.emjerror + " Este comando está obsoleto e foi descontinuado!%0AComo alternativa teste /nomedaskill%0AExemplo: /pescador");
                        }
                    }

                    if (Regex.IsMatch(text, "^money$", RegexOptions.IgnoreCase))
                    {
                        Telegram.SendTypingStatus();

                        vars.checkMultipleMoney = true;

                        List <Account> accounts = Telegram.data.GetAccountList(user);

                        vars.multiplemoneycheck = accounts.Count;
                        vars.checkedmoneycount  = 0;

                        if (accounts.Count > 0)
                        {
                            foreach (Account account in accounts)
                            {
                                string acc = account.getNick();
                                wait(500);
                                Program.Client.SendText("/money @" + acc);
                                wait(500);
                            }
                        }
                        else
                        {
                            Telegram.SendHtmlMessage(vars.emjerror + " Antes de usar esse comando %0AUse /add <code>nick</code> para adicionar suas contas!");
                        }
                    }

                    if (Regex.IsMatch(text, "^online$", RegexOptions.IgnoreCase))
                    {
                        Telegram.SendTypingStatus();

                        response.sendOnlineNicknames(user);
                    }

                    if (Regex.IsMatch(text, "^verificar (.+)$", RegexOptions.IgnoreCase))
                    {
                        Match          match    = Regex.Match(text, "^verificar (.+)$", RegexOptions.IgnoreCase);
                        string         nick     = match.Groups[1].Value;
                        List <Account> accounts = Telegram.data.GetAccountList(user);
                        Telegram.SendTypingStatus();

                        if (accounts.Count > 0)
                        {
                            bool   found    = false;
                            string acc      = "";
                            bool   verifyed = false;
                            int    Token    = 0;

                            foreach (Account account in accounts)
                            {
                                if (account.getNick().ToLower().Equals(nick.ToLower()))
                                {
                                    found    = true;
                                    acc      = account.getNick();
                                    verifyed = account.getVerify();
                                    Token    = account.getToken();
                                    break;
                                }
                            }

                            if (!found)
                            {
                                Telegram.SendHtmlMessage(vars.emjerror + " Conta nao encontrada!");
                                return;
                            }

                            if (verifyed)
                            {
                                Telegram.SendHtmlMessage(vars.emjerror + " A conta já estava verificada!");
                                return;
                            }

                            if ((found) && (!verifyed))
                            {
                                if (Telegram.SendPrivateMessage(user, vars.emjok + " Para verificar sua conta " + nick + ", envie um tell <b>dela</b>%0AAssim: <code>/tell htbot verificar " + Token + "</code>", "Verificação de conta", true))
                                {
                                    Telegram.SendHtmlMessage(vars.emjok + " Te enviei uma mensagem privada.%0AVerifique-a para confirmar a posse da sua conta!");
                                }
                            }
                        }
                        else
                        {
                            Telegram.SendHtmlMessage(vars.emjerror + " Antes de usar esse comando %0AUse /add <code>nick</code> para adicionar suas contas!");
                        }
                    }

                    if (Regex.IsMatch(text, "^tell ([A-z0-9_-]{1,16}) (.+)$", RegexOptions.IgnoreCase))
                    {
                        Match          tell     = Regex.Match(text, "^tell ([A-z0-9_-]{1,16}) (.+)$", RegexOptions.IgnoreCase);
                        string         nick     = tell.Groups[1].Value;
                        string         msg      = tell.Groups[2].Value;
                        List <Account> accounts = Telegram.data.GetAccountList(user);
                        Telegram.SendTypingStatus();

                        if (accounts.Count > 0)
                        {
                            bool found    = false;
                            bool verifyed = false;
                            int  Token    = 0;

                            bool isOnline = false;

                            foreach (var player in Program.Client.GetOnlinePlayers())
                            {
                                if (player.ToLower().Equals(nick))
                                {
                                    isOnline = true;
                                }
                            }

                            foreach (Account account in accounts)
                            {
                                if (account.getNick().ToLower().Equals(nick.ToLower()))
                                {
                                    found    = true;
                                    verifyed = account.getVerify();
                                    Token    = account.getToken();
                                    break;
                                }
                            }

                            if (!found)
                            {
                                Telegram.SendHtmlMessage(vars.emjerror + " Conta nao encontrada!");
                                return;
                            }

                            if (!verifyed)
                            {
                                Telegram.SendHtmlMessage(vars.emjerror + "Desculpe, Você não tem permissão pra isso!%0AEssa conta é sua? " + vars.emjthinking);
                                return;
                            }

                            if (!isOnline)
                            {
                                Telegram.SendHtmlMessage(vars.emjerror + " Conta Offline!");
                                return;
                            }

                            Program.Client.SendText("/tell " + nick + " 0 " + Token + " " + msg);
                            Telegram.data.ResponseLimit(Token, true);
                            Telegram.SendHtmlMessage(vars.emjok + " Mensagem enviada!");
                        }
                        else
                        {
                            Telegram.SendHtmlMessage(vars.emjerror + " Antes de usar esse comando %0AUse /add <code>nick</code> para adicionar suas contas!");
                        }
                    }

                    if (text.ToLower().Equals("wm"))
                    {
                        vars.sendWM = true;
                        Program.Client.SendText("/wm");
                    }
                }
                else
                {
                }
            }
            else
            {
                if (Regex.IsMatch(text, "^tell ([A-z0-9_-]{1,16}) (.+)$", RegexOptions.IgnoreCase))
                {
                    Match          tell     = Regex.Match(text, "^tell ([A-z0-9_-]{1,16}) (.+)$", RegexOptions.IgnoreCase);
                    string         nick     = tell.Groups[1].Value;
                    string         msg      = tell.Groups[2].Value;
                    List <Account> accounts = Telegram.data.GetAccountList(user);
                    Telegram.SendTypingStatus(user.ToString());

                    if (accounts.Count > 0)
                    {
                        bool found    = false;
                        bool verifyed = false;
                        int  Token    = 0;

                        bool isOnline = false;

                        foreach (var player in Program.Client.GetOnlinePlayers())
                        {
                            if (player.ToLower().Equals(nick))
                            {
                                isOnline = true;
                            }
                        }

                        foreach (Account account in accounts)
                        {
                            if (account.getNick().ToLower().Equals(nick.ToLower()))
                            {
                                found    = true;
                                verifyed = account.getVerify();
                                Token    = account.getToken();
                                break;
                            }
                        }

                        if (!found)
                        {
                            Telegram.SendPrivateMessage(user, vars.emjerror + " Conta nao encontrada!");
                            return;
                        }

                        if (!verifyed)
                        {
                            Telegram.SendPrivateMessage(user, vars.emjerror + "Desculpe, Você não tem permissão pra isso!%0AEssa conta é sua? " + vars.emjthinking);
                            return;
                        }

                        if (!isOnline)
                        {
                            Telegram.SendPrivateMessage(user, vars.emjerror + " Conta Offline!");
                            return;
                        }

                        Program.Client.SendText("/tell " + nick + " 1 " + Token + " " + msg);
                        Telegram.data.ResponseLimit(Token, true);
                        Telegram.SendPrivateMessage(user, vars.emjok + " Mensagem enviada!");
                    }
                    else
                    {
                        Telegram.SendPrivateMessage(user, vars.emjerror + " Antes de usar esse comando %0AUse /add <code>nick</code> para adicionar suas contas!");
                    }
                }
                else if (text.ToLower().Equals("start"))
                {
                    Telegram.SendPrivateMessage(user, vars.emjok + " Olá, se você veio aqui pela verificação de conta%0APode voltar ao grupo e concluir a verificação%0AVocê tbm pode me mandar o comando <b>/tell <nick> <mensagem></b> por aqui");
                }
                else
                {
                    Telegram.SendPrivateMessage(user, vars.emjerror + " Por favor, use o bot no grupo!");
                }
            }
        }