예제 #1
0
        public void CommandDM(string[] parsResult, ParamResponse e, TGUpl a)
        {
            /* 1) Проверить существования модераторов
             * 2) Сравнить уровни модераторов
             * 3) Удалить модератора
             */
            int   CureChat  = GetChat(e.chatId);
            Moder CureModer = IsModer(e.UId);

            if (CureModer.UId == "Null")
            {
                NonModder(e, a);
                return;
            }
            Moder DeletModer = IsModer(e.replyMessageUID);

            if (DeletModer.UId == "Null")
            {
                NonModder(e, a);
                return;
            }
            int LVL1 = Int32.Parse(CureModer.MLvl), LVL2 = Int32.Parse(DeletModer.MLvl);

            if (LVL1 > LVL2)
            {
                DelModer(DeletModer);
                SuccessOp(e, a, " Модератор удалён.");
            }
            else
            {
                NotEnouthRights(e, a);
            }
        }
예제 #2
0
        public void MainModerCommandGCS(string[] parsResult, ParamResponse e, TGUpl a)
        {
            string result = "";

            for (int i = 0; i < ChCount; i++)
            {
                result += ChBot[i].chatName + " ```" + ChBot[i].chatId + "```\n";
            }
            a.SendMessage(result, MainModer.UId);
        }
예제 #3
0
        //WorkMethods

        public void AutoWrite()
        {
            TGUpl a = new TGUpl();

            while (true)
            {
                FileWorker.WriteData(this);
                a.SendMessage("Автосохранение прошло успешно.", MainModer.UId);
                Thread.Sleep(300000);
            }
        }
예제 #4
0
 public void CommandPDDG(string[] parsResult, ParamResponse e, TGUpl a)
 {
     if (e.replyMessageText != null && e.replyMessageText != "")
     {
         a.SendMessage(ParseDDG(e.replyMessageText), e.chatId);
     }
     else
     {
         a.SendMessage("Нечего парсить", e.chatId);
     }
 }
예제 #5
0
        public void CommandST(string[] parsResult, ParamResponse e, TGUpl a)
        {
            /* 1) Проверяем админ ли тот, кто просит установить триггер
             * 2) Проверяем существует ли такоей триггер.
             * 3) Проверяем уровень триггера и уровень модератора, если триггер существует
             * 4) Изменяем триггер, если все проверки удались иначе добавляем новый, если админ
             */
            int   CureChat  = GetChat(e.chatId);
            Moder CureModer = IsModer(e.UId);

            if (CureModer.UId == "Null")
            {
                NonModder(e, a);
                return;
            }
            int CureTrigger = this.ChBot[CureChat].GetTrigger(parsResult[1]);

            if (parsResult[2] == "" && e.replyMessageText == null || parsResult[1] == "")
            {
                InvalidData(e, a);
                return;
            }
            if (CureTrigger == -1)
            {
                Trigger AT = TForm(parsResult, e, a, CureModer);
                this.ChBot[CureChat].AddTrigger(AT);
                SuccessOp(e, a, "Триггер добавлен.");
            }
            else
            {
                int Mistake;
                try
                {
                    Mistake = Int32.Parse(this.ChBot[CureChat].TArray[CureTrigger].TLvl);
                }
                catch
                {
                    this.ChBot[CureChat].TArray[CureTrigger].TLvl = "0";
                }
                if (Int32.Parse(this.ChBot[CureChat].TArray[CureTrigger].TLvl) <= Int32.Parse(CureModer.MLvl))
                {
                    Trigger AT = TForm(parsResult, e, a, CureModer);
                    this.ChBot[CureChat].ResetTrigger(AT);
                    SuccessOp(e, a, "Триггер обновлён.");
                }
                else
                {
                    NotEnouthRights(e, a);
                    return;
                }
            }
        }
예제 #6
0
        public void CommandSM(string[] parsResult, ParamResponse e, TGUpl a)
        {
            /* 1) Проверить существуют ли одмены
             * 2) Если новый одмен существует то посылаем на
             * 3) Если не существует, то сравниваем уровень модера и уровень создавемого. Создаваемый - обязательно меньше
             * 4) Добавляем модератора или посылаем на
             */
            int   CureChat  = GetChat(e.chatId);
            Moder CureModer = IsModer(e.UId);

            if (CureModer.UId == "Null")
            {
                NonModder(e, a);
                return;
            }
            Moder NewModer = IsModer(e.replyMessageUID);

            if (NewModer.UId != "Null")
            {
                AlreadyExist(e, a);
                return;
            }
            int newLVL;

            if (Int32.TryParse(parsResult[1], out newLVL) == false)
            {
                InvalidData(e, a);
                return;
            }
            if (newLVL < 1)
            {
                InvalidData(e, a);
                return;
            }
            if (Int32.Parse(CureModer.MLvl) > newLVL)
            {
                Moder OnyModer = new Moder();
                OnyModer.MLvl  = newLVL.ToString();
                OnyModer.UId   = e.replyMessageUID;
                OnyModer.UName = e.replyMessageUsername;
                AddModer(OnyModer);
                SuccessOp(e, a, " Модератор добавлен.");
            }
            else
            {
                InvalidData(e, a);
                return;
            }
        }
예제 #7
0
 public void MainModerCommandMT(string[] parsResult, ParamResponse e, TGUpl a)
 {
     if (parsResult[2] != "")
     {
         a.SendMessage(parsResult[2], parsResult[1]);
     }
     else if (e.replyMessageText != null)
     {
         a.SendMessage(e.replyMessageText, parsResult[1], e.replyMessageType);
     }
     else
     {
         InvalidData(e, a);
     }
 }
예제 #8
0
        public Chat MakeChat(ParamResponse e, TGUpl a)
        {
            Chat NewChat = new Chat();

            NewChat.chatId    = e.chatId;
            NewChat.chatName  = e.ChatName;
            NewChat.CInv      = new Invintation();
            NewChat.TArray    = new Trigger[1];
            NewChat.TArray[0] = new Trigger();
            NewChat.TCount    = 0;
            NewChat.UArray    = new User[1];
            NewChat.UArray[0] = new User();
            NewChat.UCount    = 0;
            return(NewChat);
        }
예제 #9
0
        public void CommandI(string[] parsResult, ParamResponse e, TGUpl a)
        {
            string result = "";

            if (e.replyMessageText == null)
            {
                result += "Айди чата: " + ((e.chatId == null)?e.ChannelID:e.chatId) + '\n';
                result += "Время МСК: " + AnotherMethod.UnixTimeStampToDateTime(long.Parse(e.Date));
            }
            else
            {
                result += "Юзернейм: " + e.replyMessageUsername + " id: " + e.replyMessageUID + "\n";
                result += "Время сообщения по МСК: " + AnotherMethod.UnixTimeStampToDateTime(long.Parse(e.ReplyMessageDate));
            }
            a.SendMessage(result, e.chatId);
        }
예제 #10
0
 public void MainModerCommandMTA(string[] parsResult, ParamResponse e, TGUpl a)
 {
     for (int i = 0; i < ChCount; i++)
     {
         if (parsResult[1] + parsResult[2] != "")
         {
             a.SendMessage(parsResult[1] + parsResult[2], ChBot[i].chatId);
         }
         else if (e.replyMessageText != null)
         {
             a.SendMessage(e.replyMessageText, ChBot[i].chatId, e.replyMessageType);
         }
         else
         {
             InvalidData(e, a);
             break;
         }
     }
 }
예제 #11
0
        public void CommandDT(string[] parsResult, ParamResponse e, TGUpl a)
        {
            /* 1)Проверить сущ-ние модера
             * 2)Проверить сущ-ние триггера
             * 3)Проверить уровни модера и триггера
             * 4)Удалить триггер
             */
            int   CureChat  = GetChat(e.chatId);
            Moder CureModer = IsModer(e.UId);

            if (CureModer.UId == "Null")
            {
                NonModder(e, a);
                return;
            }
            string trigger     = (parsResult[1] == "") ? e.replyMessageText : parsResult[1];
            int    CureTrigger = this.ChBot[CureChat].GetTrigger(trigger);

            if (CureTrigger == -1)
            {
                InvalidData(e, a);
                return;
            }
            int Mistake;

            try
            {
                Mistake = Int32.Parse(this.ChBot[CureChat].TArray[CureTrigger].TLvl);
            }
            catch
            {
                this.ChBot[CureChat].TArray[CureTrigger].TLvl = "0";
            }
            if (Int32.Parse(this.ChBot[CureChat].TArray[CureTrigger].TLvl) > Int32.Parse(CureModer.MLvl))
            {
                NotEnouthRights(e, a);
                return;
            }
            this.ChBot[CureChat].DeleteTrigger(CureTrigger);
            SuccessOp(e, a, " Триггер удалён.");
        }
예제 #12
0
        public void TResponse(string TWord, ParamResponse e, TGUpl a)
        {
            int CureChat = GetChat(e.chatId);

            if (CureChat == -1)
            {
                return;
            }
            int TId = ChBot[CureChat].GetTrigger(TWord);

            if (TId != -1)
            {
                Trigger send = ChBot[CureChat].TArray[TId];
                a.SendMessage(send.TResponse, e.chatId, send.TType, true);
                if (Semafor.Semafor.BadTrigger == true)
                {
                    a.SendMessage("Триггер сломан и будет удалён", e.chatId);
                    ChBot[CureChat].DeleteTrigger(TId);
                    Semafor.Semafor.BadTrigger = false;
                }
            }
        }
예제 #13
0
 public void CommandGetInfo(string[] parsResult, ParamResponse e, TGUpl a)
 {
     if (e.chatId == MainModer.UId)
     {
         string info = "/st - установка триггера\n";
         info += "/dt - удаление триггера\n";
         info += "/sm lvl - установка модератора\n";
         info += "/dm - удаление модератора\n";
         info += "/sa - сохранить всё\n";
         info += "/gtl - получить список триггеров\n";
         info += "/i - информация о чате или сообщении или канале\n";
         info += "/gtl_d - список триггеров для администратора\n";
         info += "/si - установка приветствий\n";
         info += "/gcs - получение списка чатов, где есть бот\n";
         info += "/lc - покинуть чат и удалить триггеры этого чата\n";
         info += "/get_i - показать приветствие\n";
         info += "/p_ddg - парсинг списка отряда из ddg\n";
         info += "/Mta - рассылка сообщения во все чаты, куда бот был добавлен после обновления\n";
         info += "/get_info - получить информацию\n";
         a.SendMessage(info, MainModer.UId);
     }
 }
예제 #14
0
        public void CommandSI(string[] parsResult, ParamResponse e, TGUpl a)
        {
            int   CureChat  = GetChat(e.chatId);
            Moder CureModer = IsModer(e.UId);

            if (CureModer.UId == "Null")
            {
                NonModder(e, a);
                return;
            }
            if (int.Parse(CureModer.MLvl) < 4)
            {
                NotEnouthRights(e, a);
                return;
            }
            ChBot[CureChat].CInv           = new Invintation();
            ChBot[CureChat].CInv.TResponse = ((parsResult[1] != "")?parsResult[1]:e.replyMessageText);
            ChBot[CureChat].CInv.TType     = ((parsResult[2] != "") ? "Message" : e.replyMessageType);
            ChBot[CureChat].CInv.TLvl      = "4";
            SuccessOp(e, a, "Приветствие добавлено.");
            return;
        }
예제 #15
0
 public static void Handler(ParamResponse e, TGUpl a)
 {
     if (polls[0] != null)
     {
         int i = 0;
         for (; i < polls.Length; i++)
         {
             if (polls[i].chat_id == e.call_chat_id && polls[i].message_id == e.call_message_id)
             {
                 polls[i].votes[Int32.Parse(e.call_data)].votes++;
                 break;
             }
         }
         Poll tmp = PollHandler.GetPoll(e.call_chat_id, e.call_message_id);
         if (tmp.chat_id != null)
         {
             a.EditMessage(polls[i].chat_id, polls[i].message_id, polls[i].Text, polls[i].GetMarkup());
         }
         a.answerCallbackQuery(e.call_id);
     }
     return;
 }
예제 #16
0
        public void CommandGTL(string[] parsResult, ParamResponse e, TGUpl a)
        {
            int CureChat = GetChat(e.chatId);

            if (CureChat == -1)
            {
                return;
            }
            string result = "";

            for (int i = 0; i < ChBot[CureChat].TCount; i++)
            {
                result += ChBot[CureChat].TArray[i].TWord + '\n';
            }
            if (result != "")
            {
                a.SendMessage(result, e.chatId);
            }
            else
            {
                a.SendMessage("Триггеры не найдены.", e.chatId);
            }
        }
예제 #17
0
        public void SayHello(ParamResponse e, TGUpl a)
        {
            int CureChat = GetChat(e.chatId);

            try
            {
                if (this.ChBot[CureChat].CInv.TResponse != "" && this.ChBot[CureChat].CInv.TResponse != null)
                {
                    if (this.ChBot[CureChat].CInv.TType != "Message")
                    {
                        a.SendMessage("@" + e.NewMember, e.chatId);
                        a.SendMessage(this.ChBot[CureChat].CInv.TResponse, e.chatId, this.ChBot[CureChat].CInv.TType);
                    }
                    else
                    {
                        a.SendMessage("@" + e.NewMember + " " + this.ChBot[CureChat].CInv.TResponse, e.chatId, this.ChBot[CureChat].CInv.TType);
                    }
                }
            }
            catch
            {
                return;
            }
        }
예제 #18
0
        public void CommandRegMe(string[] parsResult, ParamResponse e, TGUpl a)
        {
            User Exist = ChBot[GetChat(e.chatId)].GetUser(e.UId);

            if (Exist.UId == "Null")
            {
                int  CureChat = GetChat(e.chatId);
                User NewUser  = new User();
                NewUser.UId                    = e.UId;
                NewUser.UName                  = e.name;
                NewUser.MLvl                   = "0";
                NewUser.myOwnTrigger           = new Trigger();
                NewUser.myOwnTrigger.TLvl      = "0";
                NewUser.myOwnTrigger.TResponse = "";
                NewUser.myOwnTrigger.TType     = "Message";
                NewUser.myOwnTrigger.TWord     = "";
                ChBot[CureChat].AddUser(NewUser);
                SuccessOp(e, a, "Вы зарегистрированы в боте.");
            }
            else
            {
                InvalidData(e, a);
            }
        }
예제 #19
0
        public Trigger TForm(string[] parsResult, ParamResponse e, TGUpl a, Moder CureModer)
        {
            Trigger AT = new Trigger();

            AT.TLvl  = CureModer.MLvl;
            AT.TWord = parsResult[1];
            if (parsResult[2] == "" && e.replyMessageText != null)
            {
                AT.TType     = e.replyMessageType;
                AT.TResponse = e.replyMessageText;
            }
            else if (e.replyMessageText == null && parsResult[2] != "")
            {
                AT.TType     = "Message";
                AT.TResponse = parsResult[2];
            }
            else
            {
                a.SendMessage("Невозможно добавить пустой триггер", e.chatId);
                AT.TType     = null;
                AT.TResponse = null;
            }
            return(AT);
        }
예제 #20
0
 public void CommandInfo(string[] parsResult, ParamResponse e, TGUpl a)
 {
     a.SendMessage(Info, e.chatId);
 }
예제 #21
0
 public void MainModerCommandRDFTXT(string[] parsResult, ParamResponse e, TGUpl a)
 {
     LastDataVersion.ReadFromFileTrigger();
     ParseOldTriggersToNew();
     a.SendMessage("Успешно", MainModer.UId);
 }
예제 #22
0
 public void SuccessOp(ParamResponse e, TGUpl a, string arg = "")
 {
     a.SendMessage("Успешно!\n" + arg, e.chatId);
 }
예제 #23
0
 public void AlreadyExist(ParamResponse e, TGUpl a, string that = "Модер")
 {
     a.SendMessage(that + " уже существует", e.chatId);
 }
예제 #24
0
 public void InvalidData(ParamResponse e, TGUpl a)
 {
     a.SendMessage("Не правильные параметры команды. Используйте /info для получания справки. ", e.chatId);
 }
예제 #25
0
 public void NotEnouthRights(ParamResponse e, TGUpl a)
 {
     a.SendMessage("У вас недостаточно прав", e.chatId);
 }
예제 #26
0
 public void NonModder(ParamResponse e, TGUpl a)
 {
     a.SendMessage("Вы не являетесь модератором.", e.chatId);
 }
예제 #27
0
 public void WriteData(TGUpl a)
 {
     FileWorker.WriteData(this);
     a.SendMessage("Успешно сохранено.", MainModer.UId);
 }
예제 #28
0
        public void CommandCentre(ParamResponse e)
        {
            TGUpl a = new TGUpl();

            if (e.callback == true)
            {
                PollHandler.Handler(e, a);
            }
            else
            {
                int CureChat = GetChat(e.chatId);
                if (CureChat == -1)
                {
                    if (e.UId == MainModer.UId)
                    {
                        this.AddChat(MakeChat(e, a));
                    }
                    else if (e.UId == e.chatId)
                    {
                        this.AddChat(MakeChat(e, a));
                    }
                    else
                    {
                        a.LeaveTheGroup(e.chatId);
                    }
                }
                string[] parsResult = ParsMessage(e.message);
                switch (parsResult[0])
                {
                case "/st": CommandST(parsResult, e, a); break;

                case "/dt": CommandDT(parsResult, e, a); break;

                case "/sm": CommandSM(parsResult, e, a); break;

                case "/dm": CommandDM(parsResult, e, a); break;

                case "/gtl": CommandGTL(parsResult, e, a); break;

                case "/i": CommandI(parsResult, e, a); break;

                case "/si": CommandSI(parsResult, e, a); break;

                case "/p_ddg": CommandPDDG(parsResult, e, a); break;

                case "/info": CommandInfo(parsResult, e, a); break;

                case "/get_info": CommandGetInfo(parsResult, e, a); break;

                case "/reg_me": CommandRegMe(parsResult, e, a); break;

                case "/mp": a.SendPoll(e.message, e.chatId, e.replyMessageText); break;

                default: break;
                }
                if (e.NewMember != null && e.NewMemberID == TGReq.TGUpl.BotUID)
                {
                    if (e.UId == MainModer.UId)
                    {
                        this.AddChat(MakeChat(e, a));
                    }
                    else
                    {
                        a.LeaveTheGroup(e.chatId);
                    }
                }
                if (e.NewMember != "" && e.NewMember != null && e.NewMemberID != TGReq.TGUpl.BotUID)
                {
                    SayHello(e, a);
                }
                if (e.MemberQuit != "" && e.MemberQuit != null && e.MemberQuitID == TGReq.TGUpl.BotUID)
                {
                    a.SendMessage("Бот был исключен из чата " + e.chatId, MainModer.UId);
                }
                if (e.UId == MainModer.UId)
                {
                    switch (parsResult[0])
                    {
                    case "/gcs": MainModerCommandGCS(parsResult, e, a); break;

                    case "/mt": MainModerCommandMT(parsResult, e, a); break;

                    case "/mta": MainModerCommandMTA(parsResult, e, a); break;

                    case "/rchd": RepairChatData(); break;

                    case "/sa": WriteData(a); break;

                    case "/rdftxt": MainModerCommandRDFTXT(parsResult, e, a); break;

                    default: break;
                    }
                }
                TResponse(e.message, e, a);
            }
        }