Esempio n. 1
0
        public override bool HandleMessage(Message msg)
        {
            //msg.toGroup = 735545947;// msg.fromGroup;
            string cmd = BOT.getAskCmd(msg);

            if (string.IsNullOrWhiteSpace(cmd))
            {
                return(false);
            }

            string res = getRollString(cmd);

            if (!string.IsNullOrWhiteSpace(res))
            {
                msg.str     = res;
                msg.toGroup = msg.fromGroup;
                msg.to      = msg.from;
                msg.imgs.Clear();
                msg.ats.Clear();
                if (msg.fromGroup > 0)
                {
                    msg.ats.Add(new MessageAt(msg.from, $"@{msg.fromName}"));
                    //msg.str = " " + msg.str;
                }
                BOT.send(msg);
                return(true);
            }

            return(false);
        }
Esempio n. 2
0
        public override bool HandleMessage(Message msg)
        {
            try
            {
                string cmd = BOT.getAskCmd(msg);
                if (string.IsNullOrWhiteSpace(cmd))
                {
                    return(false);
                }
                if (cmd.StartsWith("占卜"))
                {
                    string res = getZhouYi();
                    if (res.Length > 0)
                    {
                        msg.str = res;
                        BOT.sendBack(msg, true);
                        return(true);
                    }
                }
            }
            catch (Exception ex)
            {
                FileHelper.Log(ex);
            }

            return(false);
        }
Esempio n. 3
0
        protected override void InitSource()
        {
            lock (matchMutex)
            {
                try
                {
                    money = BOT.getMoneyManager();

                    var lines = FileHelper.readLines(PluginPath + userinfoFile);
                    foreach (var line in lines)
                    {
                        RHUser user = new RHUser();
                        user.parse(line);
                        users[user.id] = user;
                    }
                    lines = FileHelper.readLines(PluginPath + horseinfoFile);
                    foreach (var line in lines)
                    {
                        RHHorse horse = new RHHorse(line);
                        horses[horse.name] = horse;
                    }
                }
                catch (Exception e)
                {
                    FileHelper.Log(e.Message + "\r\n" + e.StackTrace);
                }
            }
        }
Esempio n. 4
0
    // Каждому боту известно число занимаемых ячеек
    // Бегаем по массиву всех ячеек это количество раз и выкупаем свободные билеты рандомно.
    IEnumerator BotActive(BOT bot)
    {
        yield return(null); // заглушка

        //Цикл ограничен числом билетов у бота
        while (!isFinished)
        {
            //
            for (int i = 0; i < bot.countCell; i++)
            {
                // если билет уже куплен, двигаемся к ближайшему незанятому
                // после повторяем операцию
                yield return(new WaitForSeconds(bot.waitTime)); // Задержка перед покупкой

                bool isBought = false;
                int  cellId   = UnityEngine.Random.Range(0, ticketNum);
                bot.waitTime = UnityEngine.Random.Range(1, lotteryTime * 60 / bot.countCell);
                while (!isBought && !isFinished && tickets < ticketNum)
                {
                    if (!it[cellId].isBusy)
                    {
                        ConfirmLotteryItem(cellId + 1, bot.name, bot.color, bot.icon); // подтверждаем покупку
                        bot.leftCell--;
                        isBought = true;
                    }
                    else
                    {
                        cellId = UnityEngine.Random.Range(0, ticketNum);
                    }
                }
            }
        }
    }
Esempio n. 5
0
        public void showMessage(long groupqq, long userqq, string str)
        {
            Message msg = new Message();

            msg.to      = userqq;
            msg.toGroup = groupqq;
            msg.str     = str;
            BOT.send(msg);
        }
        private void BtEnviar_Click(object sender, EventArgs e)
        {
            var filePath = string.Empty;

            using (OpenFileDialog openFileDialog = new OpenFileDialog())
            {
                openFileDialog.InitialDirectory = "c:\\";
                openFileDialog.RestoreDirectory = true;
                openFileDialog.Title            = "Selecione o Arquivo";

                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    //Get the path of specified file
                    filePath = openFileDialog.FileName;
                }
            }

            DataSet ds = new DataSet();

            OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" +
                                                          "Data Source='" + filePath +
                                                          "';Extended Properties=\"Excel 12.0;HDR=YES;\"");

            OleDbDataAdapter da = new OleDbDataAdapter("Select * From [Planilha1$]", conexao);


            da.Fill(ds);

            if (!string.IsNullOrEmpty(tbLink.Text) || string.IsNullOrEmpty(tbLogin.Text) || string.IsNullOrEmpty(tbSenha.Text))
            {
                var bot = new BOT();

                if (Convert.ToBoolean(rb1.Checked.ToString()) != false)
                {
                    bot.Instagram(tbLink.Text, tbLogin.Text, tbSenha.Text, Convert.ToInt32(Enum.QtdPessoas.QtdPessoa.UmaPessoa), ds);
                }
                else if (Convert.ToBoolean(rb2.Checked.ToString()) != false)
                {
                    bot.Instagram(tbLink.Text, tbLogin.Text, tbSenha.Text, Convert.ToInt32(Enum.QtdPessoas.QtdPessoa.DuasPessoas), ds);
                }
                else
                {
                    bot.Instagram(tbLink.Text, tbLogin.Text, tbSenha.Text, Convert.ToInt32(Enum.QtdPessoas.QtdPessoa.TresPessoas), ds);
                }
            }
            else
            {
                MessageBox.Show("Digite os campos Link do sorteio, Login, Senha");
            }
        }
            override public void buttons_start(int id = 0)
            {
                BOT bot2 = new BOT();

                //thank(bot2);
                Bot = new TelegramBotClient("1039097411:AAH8iozi-wYqioC14in_lMgxJ2E5O6ADo8o")
                {
                    Timeout = TimeSpan.FromSeconds(10)
                };
                Bot.OnMessage       += BotOnMessageReiceived;
                Bot.OnCallbackQuery += Bot_OnCallbackQueryReceived;
                var me = Bot.GetMeAsync().Result;

                Console.WriteLine($"Bot id: {me.Id}. Bot Name:{me.FirstName}");
                Bot.StartReceiving();
                Console.ReadLine();
                Bot.StopReceiving();
            }
Esempio n. 8
0
 public override bool HandleMessage(Message msg)
 {
     try
     {
         string cmd = BOT.getAskCmd(msg);
         if (string.IsNullOrWhiteSpace(cmd))
         {
             return(false);
         }
         // 翻译
         Regex transreg   = new Regex("(\\S+)译(\\S+)\\s+");
         var   transmatch = transreg.Match(cmd);
         if (transmatch.Success)
         {
             string msgyilist = transmatch.Groups[0].ToString().Trim();
             string msgtar    = cmd.Substring(msgyilist.Length).Trim();
             var    lists     = msgyilist.Split('译');
             if (lists.Length >= 2 && msgtar.Length > 0)
             {
                 string res = msgtar;
                 for (int i = 0; i < lists.Length - 1; i++)
                 {
                     res = Translation(res, lists[i + 1], lists[i]);
                 }
                 msg.str = res;
                 BOT.sendBack(msg, true);
                 return(true);
             }
         }
     }
     catch (Exception ex)
     {
         FileHelper.Log(ex);
     }
     return(false);
 }
Esempio n. 9
0
        public override bool HandleMessage(Message msg)
        {
            string cmd = BOT.getAskCmd(msg);

            if (string.IsNullOrWhiteSpace(cmd))
            {
                return(false);
            }

            Regex bsearchreg   = new Regex("(\\S+)区有多少(\\S+)");
            var   bseatchres   = bsearchreg.Match(cmd);
            bool  matchSuccess = false;

            if (bseatchres.Success)
            {
                try
                {
                    string barea = bseatchres.Groups[1].ToString().Trim() + "区";
                    string btar  = bseatchres.Groups[2].ToString().Trim();

                    string res = getTitleSearch(barea, btar);
                    msg.str = res;
                    BOT.sendBack(msg, true);
                    return(true);
                }
                catch
                {
                }
            }

            if (cmd.EndsWith("区谁在播") || cmd.EndsWith("区有谁在播") || cmd.EndsWith("区有谁") || cmd.EndsWith("区都有谁"))
            {
                string areaname = cmd.Substring(0, cmd.LastIndexOf('区') + 1);
                msg.str      = getLiveNum(areaname);
                matchSuccess = true;
            }
            else if (cmd.EndsWith("区谁最惨"))
            {
                string areaname = cmd.Substring(0, cmd.LastIndexOf('区') + 1);
                msg.str      = getPoorLives(areaname);
                matchSuccess = true;
            }
            else if (cmd.Contains("在播吗") || cmd.Contains("播了吗"))
            {
                string test = cmd.Replace("在播吗", "").Replace("播了吗", "");
                string xnq  = getLiveInfo(test);
                msg.str      = getLiveInfo(test);
                matchSuccess = true;
            }
            else if (cmd.StartsWith("别名"))
            {
                var items = cmd.Substring(2).Trim().Split(new char[] { ' ', ',', ',' }, StringSplitOptions.RemoveEmptyEntries);
                if (items.Length >= 2)
                {
                    setReplaceName(items[0], items[1]);
                    setReplaceName(items[1], items[0]);
                    msg.str      = "好";
                    matchSuccess = true;
                }
            }
            else if (cmd.StartsWith("房间号"))
            {
                var items = cmd.Substring(3).Trim().Split(new char[] { ' ', ',', ',' }, StringSplitOptions.RemoveEmptyEntries);
                if (items.Length >= 2)
                {
                    setRoomId(items[0], items[1]);
                    msg.str      = "好";
                    matchSuccess = true;
                }
            }

            else if (cmd.StartsWith("查看别名"))
            {
                var item = cmd.Substring(4).Trim();
                if (item.Length > 0)
                {
                    var reslist = getNames(item);
                    msg.str      = string.Join("/", reslist);
                    matchSuccess = true;
                }
            }
            if (matchSuccess)
            {
                BOT.sendBack(msg, true);
                return(true);
            }


            // 才八点
            if (cmd.StartsWith("现在几点") || cmd.StartsWith("几点了"))
            {
                try
                {
                    string res = $"现在是{getNowClockCountry(20)}";
                    msg.str = res;
                    BOT.sendBack(msg);
                    return(true);
                }
                catch { }
            }


            return(false);
        }
Esempio n. 10
0
        public override bool HandleMessage(Message msg)
        {
            string cmd = BOT.getAskCmd(msg);

            if (string.IsNullOrWhiteSpace(cmd))
            {
                return(false);
            }

            // BTC货币系统
            if (msg.fromGroup > 0 && cmd == "签到")
            {
                msg.str = btc.dailyAttendance(msg.fromGroup, msg.from);
                //racehorse.dailyAttendance(group, user);
                BOT.sendBack(msg, true);
                return(true);
            }

            //if (cmd == "个人信息")
            //{
            //    string res = $"{btc.getUserInfo(msg.from)}\r\n{getRHInfo(msg.from)}";
            //    if (!string.IsNullOrWhiteSpace(res))
            //    {
            //        msg.str = res;
            //        BOT.sendBack(msg);
            //        return false;
            //    }

            //}

            Regex zzs      = new Regex("给(.+)转(\\d+)");
            var   matchzzs = zzs.Match(cmd);

            if (matchzzs.Success)
            {
                try
                {
                    string target   = matchzzs.Groups[1].ToString().Trim();
                    long   targetqq = -1;
                    if (!long.TryParse(target, out targetqq))
                    {
                        // nick name -> qq
                        targetqq = BOT.getID(target, msg.fromGroup);
                        // targetqq = getQQNumFromGroup(group, target.Trim());
                    }
                    string res = "";
                    if (targetqq <= 0)
                    {
                        res = $"群里好像没人叫 {target} ,转账失败。";
                    }
                    else
                    {
                        long money = long.Parse(matchzzs.Groups[2].ToString());
                        res = btc.transMoney(msg.from, targetqq, money);
                    }
                    if (!string.IsNullOrWhiteSpace(res))
                    {
                        msg.str = res;
                        BOT.sendBack(msg, true);
                        return(true);
                    }
                }
                catch { }
            }

            return(false);
        }
Esempio n. 11
0
 protected override void InitSource()
 {
     btc = BOT.getMoneyManager();
 }
        static void Main(string[] args)
        {
            BOT bot = new BOT();

            bot.buttons_start();
        }
        private static void BotOnMessageReiceived(object sender, Telegram.Bot.Args.MessageEventArgs e)
        {
            var message = e.Message;

            if (l == 0)
            {
                BOT bot2 = new BOT();
                thank(bot2, message.From.Id);
                l++;
            }
            else
            {
            }
            if (message == null || message.Type != MessageType.Text)
            {
                return;
            }
            string name = $"{message.From.FirstName} {message.From.LastName}";

            if (j == 1)
            {
                data3 = message.Text;
            }
            Console.WriteLine($"{name} відправив повідомлення: {message.Text}");
            Reminder reminder = new Reminder();

            switch (message.Text)
            {
            case "/start":

                reminder.buttons_start(message.From.Id);
                break;

            case "/set_reminder":

                reminder.buttons_set_reminder(message.From.Id);
                if (reminder_k == 0)
                {
                    Bot.OnCallbackQuery += async(object sc, Telegram.Bot.Args.CallbackQueryEventArgs ev) =>
                    {
                        if (i == 0)
                        {
                            BOT.Day = int.Parse(ev.CallbackQuery.Data); Console.WriteLine("day" + BOT.Day);
                        }
                        if (i == 1)
                        {
                            BOT.Hour = int.Parse(ev.CallbackQuery.Data); Console.WriteLine("hour" + BOT.Hour);
                        }
                        if (i == 2)
                        {
                            BOT.Min = int.Parse(ev.CallbackQuery.Data); Console.WriteLine("min" + BOT.Min);
                            string text2 =
                                $"You chose the time: {BOT.Day}:{BOT.Hour}:{BOT.Min}.Now, send the data!!!";
                            await Bot.SendTextMessageAsync(message.From.Id, text2);

                            // Thread.Sleep(10000);
                            BOT.Data = "/set_reminder";

                            j++;
                            while (BOT.Data == "/set_reminder")
                            {
                                if (data4 != data3)
                                {
                                    BOT.Data = data3;
                                }
                            }
                            j--;
                            Console.WriteLine(BOT.Data);
                            data4 = data3;
                        }

                        i++;
                        if (i == 3)
                        {
                            i = 0;
                        }
                        if (i == 0)
                        {
                            k++;
                            reminder_k++;
                            reminder.time_to_remind(message.From.Id, BOT.Hour, BOT.Min, k, BOT.Data);
                        }
                    };
                }

                break;

            default:
                break;
            }
        }
Esempio n. 14
0
        static async void BotOnMessageReceived(object sender, MessageEventArgs MessageEventArgs)
        {
            Telegram.Bot.Types.Message msg = MessageEventArgs.Message;
            if (msg == null || msg.Type != MessageType.Text)
            {
                return;
            }

            string Answer = "Server Error";

            if (System.DateTime.UtcNow.Subtract(msg.Date).TotalMinutes > 3)
            {
                await BOT.SendTextMessageAsync(msg.Chat.Id, Answer);

                return;
            }

            if (UserList.ContainsKey(msg.Chat.Id))
            {
                UserList[msg.Chat.Id].LastAccess = DateTime.Now;
            }

            if (!IsRegistered(msg.Chat.Id))
            {
                if (!UserList.ContainsKey(msg.Chat.Id))
                {
                    UserList.Add(msg.Chat.Id, new User());
                }
                Answer = Registration(msg);      //регистрация студента
            }//prev command was /findteacher
            else if (UserList[msg.Chat.Id].ident == 4)
            {
                if (!NameMatches.ContainsKey(msg.Chat.Id))
                {
                    var lst = ReturnTeachersId(msg.Text);
                    if (lst.Length == 1)
                    {
                        Answer = LessonTechToStr(TeacherMethods.GetCurrentLesson(lst[0].id), true);
                        UserList[msg.Chat.Id].ident = 3;
                    }
                    else if (lst.Length > 1)
                    {
                        NameMatches.Add(msg.Chat.Id, lst);
                        var s = $"Найдено несколько совпадений:\n";
                        for (var i = 0; i < lst.Length; i++)
                        {
                            s = s + $"{i + 1}) {lst[i].name}\n";
                        }
                        s      = s + "Ввведи номер выбранного преподавателя.";
                        Answer = s;
                    }
                    else
                    {
                        Answer = "Ошибка, преподаватель не найден! Попробуй ещё раз.";
                    }
                }
                else
                {
                    if (int.TryParse(msg.Text, out int n) && n - 1 < NameMatches[msg.Chat.Id].Length && n - 1 >= 0)
                    {
                        var LCG = TeacherMethods.GetCurrentLesson(NameMatches[msg.Chat.Id][n - 1].id);
                        Answer = LessonTechToStr(LCG, true);
                        UserList[msg.Chat.Id].ident = 3;
                        NameMatches.Remove(msg.Chat.Id);
                    }
                    else
                    {
                        Answer = "Ошибка, введён некорректный номер.";
                    }
                }
            }
            else if (UserList[msg.Chat.Id].ident == 5)
            {
                bool onOrOff = msg.Text.ToLower() == "включить";
                UserList[msg.Chat.Id].eveningNotify = onOrOff;
                UserList[msg.Chat.Id].ident         = 3;
                Json_Data.WriteData();
                string onOrOffMsg = onOrOff ? "включено" : "выключено";
                Answer = $"Вечернее уведомление *{onOrOffMsg}*.";
            }
            else if (UserList[msg.Chat.Id].ident == 6)
            {
                bool onOrOff = msg.Text.ToLower() == "включить";
                UserList[msg.Chat.Id].preLessonNotify = onOrOff;
                UserList[msg.Chat.Id].ident           = 3;
                Json_Data.WriteData();
                string onOrOffMsg = onOrOff ? "включено" : "выключено";
                Answer = $"Уведомление за 15 минут до первой пары *{onOrOffMsg}*.";
            }
            else
            {
                try
                {
                    switch (msg.Text.ToLower())             // Обработка команд боту
                    {
                    case "/next":
                    case "ближайшая пара":
                        if (UserList[msg.Chat.Id].Info != User.UserInfo.teacher)
                        {
                            Answer = LessonToStr(StudentMethods.GetCurrentLesson(UserList[msg.Chat.Id].groupid), true);
                        }
                        else
                        {
                            Answer = LessonTechToStr(TeacherMethods.GetCurrentLesson(UserList[msg.Chat.Id].teacherId), true);
                        }
                        break;

                    case "/findteacher":
                    case "найти преподавателя":
                        Answer = "Введи фамилию преподавателя";
                        UserList[msg.Chat.Id].ident = 4;
                        break;

                    case "/week":
                    case "расписание на неделю":
                        if (UserList[msg.Chat.Id].Info != User.UserInfo.teacher)
                        {
                            Answer = WeekSchToStr(StudentMethods.GetWeekSchedule(UserList[msg.Chat.Id].groupid));
                        }
                        else
                        {
                            Answer = WeekSchTechToStr(TeacherMethods.GetWeekSchedule(UserList[msg.Chat.Id].teacherId));
                        }
                        break;

                    case "/today":
                    case "расписание на сегодня":
                        if (UserList[msg.Chat.Id].Info != User.UserInfo.teacher)
                        {
                            Answer = DaySchToStr(StudentMethods.GetTodaySchedule(UserList[msg.Chat.Id].groupid));
                        }
                        else
                        {
                            Answer = DaySchTechToStr(TeacherMethods.GetTodaySchedule(UserList[msg.Chat.Id].teacherId));
                        }
                        break;

                    case "/tomorrow":
                    case "расписание на завтра":
                        if (UserList[msg.Chat.Id].Info != User.UserInfo.teacher)
                        {
                            Answer = DaySchToStr(StudentMethods.GetTomorrowSchedule(UserList[msg.Chat.Id].groupid));
                        }
                        else
                        {
                            Answer = DaySchTechToStr(TeacherMethods.GetTomorrowSchedule(UserList[msg.Chat.Id].teacherId));
                        }
                        break;

                    case "/knowme":
                    case "знаешь меня?":
                        if (UserList[msg.Chat.Id].Info == User.UserInfo.teacher)
                        {
                            Answer = $"Вы {TeacherList[UserList[msg.Chat.Id].teacherId].name}";         //База старая, так что выводим только ФИО!!!
                        }
                        else
                        {
                            Answer = $"Вы {msg.Chat.FirstName.Replace("`","").Replace("_","").Replace("*","")} из группы {StudentMethods.groupIDToCourseGroup(UserList[msg.Chat.Id].groupid)}";
                        }
                        break;

                    case "/eveningnotify":
                        Answer = $"Сейчас вечернее уведомление о завтрашней первой паре *{(UserList[msg.Chat.Id].eveningNotify? "включено" : "выключено")}*. \nНастройте его.";
                        UserList[msg.Chat.Id].ident = 5;
                        await BOT.SendTextMessageAsync(msg.Chat.Id, Answer, ParseMode.Markdown, replyMarkup : notifierKeyboard);

                        return;

                    case "/prelessonnotify":
                        Answer = $"Сейчас уведомление за 15 минут до первой пары *{(UserList[msg.Chat.Id].preLessonNotify ? "включено" : "выключено")}*. \nНастройте его.";
                        UserList[msg.Chat.Id].ident = 6;
                        await BOT.SendTextMessageAsync(msg.Chat.Id, Answer, ParseMode.Markdown, replyMarkup : notifierKeyboard);

                        return;


                    case "/forget":
                    case "забудь меня":
                        UserList.Remove(msg.Chat.Id);
                        Json_Data.WriteData();
                        Answer = "Я вас забыл! Для повторной регистрации пиши /start";
                        await BOT.SendTextMessageAsync(msg.Chat.Id, Answer, replyMarkup : new ReplyKeyboardRemove());

                        return;

                    case "помощь":
                    case "/help":
                        Answer = _help;
                        break;

                    case "/info":
                    case "информация":
                        Answer = "Меня создали Миша, Дима, Дима, Глеб, Никита, Ира, Максим в рамках проектной деятельности на ФИиИТ в 2018-2019 уч. году.\n" +
                                 "Я предоставляю доступ к интерактивному расписанию мехмата через платформу ботов Telegram.\n" +
                                 "Если обнаружили ошибку в расписании, проверьте, совпадает ли оно с указанным на schedule.sfedu.ru. " +
                                 "При сопададении, для исправления обратитесь в деканат, либо напишите на [email protected], в противном случае напишите [Михаилу](tg://user?id=61026374).";
                        break;

                    case "/optionalcourses":
                    case "факультативы":
                        Answer = electivesStr;
                        break;

                    case "/curweek":
                        Answer = $"Сейчас *{CurrentSubject.GetCurrentWeek().ToString()}* неделя.";
                        break;

                    case "/forceupdate":
                        logger.Info($"Запрошено принудительное обновление расписаний, ID: {msg.Chat.Id}, @{msg.Chat.Username}.");
                        TeachersInit(false);
                        GradeInit(false);
                        GroupShedListInit(false);
                        TeachersShedInit(false);
                        WeekInit(false);
                        logger.Info($"Завершено принудительное обновление расписаний, ID: {msg.Chat.Id}, @{msg.Chat.Username}.");
                        Answer = "Данные расписаний обновлены!";
                        break;

                    default:
                        Answer = "Введены неверные данные, повторите попытку.";
                        break;
                    }
                }
                catch (System.Net.WebException e)
                {
                    logger.Error(e, "Catched exeption:");
                    Answer = "Ошибка! Вероятно, сервер интерактивного расписания недоступен. Пожалуйста, попробуйте повторить запрос позднее.";
                }
            }
            try
            {
                if (IsRegistered(msg.Chat.Id))
                {
                    await BOT.SendTextMessageAsync(msg.Chat.Id, Answer, ParseMode.Markdown, replyMarkup : UserList[msg.Chat.Id].Info == User.UserInfo.teacher?teacherKeyboard : studentKeyboard);
                }
                else if (UserList[msg.Chat.Id].ident == 1)
                {
                    await BOT.SendTextMessageAsync(msg.Chat.Id, Answer, replyMarkup : registrationKeyboard);
                }
                else
                {
                    await BOT.SendTextMessageAsync(msg.Chat.Id, Answer);
                }
            }
            catch (Exception ex) when(ex is System.Net.Http.HttpRequestException && ex.Message.Contains("429"))
            {
                logger.Warn(ex, $"Сетевая ошибка при ответе @{msg.Chat.Username}");
            }
        }
Esempio n. 15
0
        public override bool HandleMessage(Message msg)
        {
            try
            {
                string cmd = BOT.getAskCmd(msg);
                if (string.IsNullOrWhiteSpace(cmd))
                {
                    return(false);
                }
                bool isGroup = msg.fromGroup > 0 ? true : false;
                //string uid = msg.from.ToString();
                long group = msg.fromGroup;
                if (!users.ContainsKey(msg.from))
                {
                    users[msg.from] = new RHUser(msg.from);
                }
                RHUser user = users[msg.from];

                //BOT.log("赛马 "+cmd);
                if (cmd == "赛马介绍" || cmd == "赛马玩法" || cmd == "赛马说明")
                {
                    msg.str = getIntroduction();
                    BOT.sendBack(msg);
                    return(true);
                }
                if (cmd == "富豪榜" || cmd == "富人榜")
                {
                    string res = BOT.getMoneyManager().showRichest();
                    if (!string.IsNullOrWhiteSpace(res))
                    {
                        msg.str = res;
                        BOT.sendBack(msg);
                        return(true);
                    }
                }

                if (cmd == "穷人榜")
                {
                    string res = BOT.getMoneyManager().showPoorest();
                    if (!string.IsNullOrWhiteSpace(res))
                    {
                        msg.str = res;
                        BOT.sendBack(msg);
                        return(true);
                    }
                }

                if (cmd == "个人信息")
                {
                    string res = $"{money.getUserInfo(msg.from)}\r\n{getRHInfo(msg.from)}";
                    if (!string.IsNullOrWhiteSpace(res))
                    {
                        msg.str = res;
                        BOT.sendBack(msg);
                        return(true);
                    }
                }
                else if (cmd == "赛马")
                {
                    int num = 5;
                    if (!matches.ContainsKey(group))
                    {
                        matches[group] = new RHMatch(group, this);
                    }
                    matches[group].begin(num, 100);
                    return(true);
                }
                else if (cmd == "胜率榜")
                {
                    msg.str = showBigWinner();
                    BOT.sendBack(msg);
                    return(true);
                }
                else if (cmd == "败率榜")
                {
                    msg.str = showBigLoser();
                    BOT.sendBack(msg);
                    return(true);
                }
                else if (cmd == "赌狗榜")
                {
                    msg.str = showMostPlayTime();
                    BOT.sendBack(msg);
                    return(true);
                }
                else
                {
                    var trygetbet = Regex.Match(cmd, @"(\d+)号\s*(\d+)");
                    if (trygetbet.Success)
                    {
                        try
                        {
                            int roadnum = int.Parse(trygetbet.Groups[1].ToString());
                            int money   = int.Parse(trygetbet.Groups[2].ToString());
                            addBet(group, user, roadnum, money);
                            return(true);
                        }
                        catch (Exception ex)
                        {
                            FileHelper.Log(ex);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                FileHelper.Log(ex);
            }

            return(false);
        }
Esempio n. 16
0
        static async void BotOnMessageReceived(object sender, MessageEventArgs MessageEventArgs)
        {
            Telegram.Bot.Types.Message msg = MessageEventArgs.Message;
            if (msg == null || msg.Type != MessageType.Text)
            {
                return;
            }

            string Answer = "Server Error";

            if (DateTime.UtcNow.Subtract(msg.Date).TotalMinutes > 3)
            {
                await BOT.SendTextMessageAsync(msg.Chat.Id, Answer);

                return;
            }

            if (UserList.ContainsKey(msg.Chat.Id))
            {
                UserList[msg.Chat.Id].LastAccess = DateTime.Now;
            }
            if (!IsRegistered(msg.Chat.Id))
            {
                UserList.Add(msg.Chat.Id, new User()
                {
                    ident = 3
                });
                Json_Data.WriteData();   //регистрация в базе
            }
            if (UserList[msg.Chat.Id].ident == 5)
            {
                bool onOrOff = msg.Text.ToLower() == "включить";
                UserList[msg.Chat.Id].eveningNotify = onOrOff;
                UserList[msg.Chat.Id].ident         = 3;
                Json_Data.WriteData();
                string onOrOffMsg = onOrOff ? "включено" : "выключено";
                Answer = $"Вечернее уведомление *{onOrOffMsg}*.";
            }
            else if (UserList[msg.Chat.Id].ident == 6)
            {
                bool onOrOff = msg.Text.ToLower() == "включить";
                UserList[msg.Chat.Id].morningNotify = onOrOff;
                UserList[msg.Chat.Id].ident         = 3;
                Json_Data.WriteData();
                string onOrOffMsg = onOrOff ? "включено" : "выключено";
                Answer = $"Уведомление за 15 минут до первой пары *{onOrOffMsg}*.";
            }
            else
            {
                try
                {
                    switch (msg.Text.ToLower())             // Обработка команд боту
                    {
                    case "/start":
                        Answer = "Добро пожаловать!\n" + _help;
                        break;

                    case "/joke":
                    case "анекдот":
                        do
                        {
                            Answer = Markov.MakeText(1, random).Replace(" . ", ". ");
                        } while (Answer.Length > 4096);     //Search for new joke if it exceeds Telegram text msg limit
                        break;

                    case "/knowme":
                    case "знаешь меня?":
                        Answer = $"Вы {msg.Chat.FirstName.Replace("`", "").Replace("_", "").Replace("*", "")}.";
                        break;

                    case "/eveningnotify":
                        Answer = $"Сейчас вечернее уведомление *{(UserList[msg.Chat.Id].eveningNotify ? "включено" : "выключено")}*. \nНастройте его.";
                        UserList[msg.Chat.Id].ident = 5;
                        await BOT.SendTextMessageAsync(msg.Chat.Id, Answer, ParseMode.Markdown, replyMarkup : notifierKeyboard);

                        return;

                    case "/morningnotify":
                        Answer = $"Сейчас утреннее уведомление *{(UserList[msg.Chat.Id].morningNotify ? "включено" : "выключено")}*. \nНастройте его.";
                        UserList[msg.Chat.Id].ident = 6;
                        await BOT.SendTextMessageAsync(msg.Chat.Id, Answer, ParseMode.Markdown, replyMarkup : notifierKeyboard);

                        return;


                    case "/stop":
                    case "стоп":
                        UserList.Remove(msg.Chat.Id);
                        Json_Data.WriteData();
                        Answer = "Я вас забыл! Для повторной регистрации пиши /start";
                        await BOT.SendTextMessageAsync(msg.Chat.Id, Answer, replyMarkup : new ReplyKeyboardRemove());

                        return;

                    case "помощь":
                    case "/help":
                        Answer = _help;
                        break;

                    case "/info":
                    case "информация":
                        Answer = "Прекрасный бот для генерации прекрасного настроения!\n" +
                                 "Данный бот, реализованный на марковских цепях, используя базу данных из свыше, чем 100т. анекдотов, способен генерировать новые шедевры комедийного искусства.";
                        break;

                    case "/forceupdate":
                        logger.Info($"Запрошено принудительное обновление, ID: {msg.Chat.Id}, @{msg.Chat.Username}.");

                        logger.Info($"Завершено принудительное обновление, ID: {msg.Chat.Id}, @{msg.Chat.Username}.");
                        Answer = "Данные обновлены!";
                        break;

                    default:
                        Answer = "Введены неверные данные, повторите попытку.";
                        break;
                    }
                }
                catch (System.Net.WebException e)
                {
                    logger.Error(e, "Catched exeption:");
                    Answer = "Ошибка! Вероятно, что-то умерло. Пожалуйста, попробуйте повторить запрос позднее.";
                }
            }
            try
            {
                await BOT.SendTextMessageAsync(msg.Chat.Id, Answer, ParseMode.Markdown, replyMarkup : defaultKeyboard);
            }
            catch (Exception ex) when(ex is System.Net.Http.HttpRequestException && ex.Message.Contains("429"))
            {
                logger.Warn(ex, $"Network error while answering @{msg.Chat.Username}");
            }
            catch (Exception ex) when(ex is Telegram.Bot.Exceptions.ApiRequestException)
            {
                logger.Warn(ex, $"Telegram API error while answering @{msg.Chat.Username}");
            }
        }