public static async Task <User> CheckUserRoleAsync(User user, Message message) { if (user.Role == Role.NotSet) { if (!message.Text.StartsWith(Emoji.Star)) { RequestUserRole(user, message.Chat.Id); } else if (message.Text.StartsWith(Emoji.Star)) { string msg = message.Text.Replace(Emoji.Star, ""); if (msg.Equals(Rm.GetString("Student"))) { UService.ChangeRole(user.Id, Role.Student); user = UService.View <Student>(user.Id); } else if (msg.Equals(Rm.GetString("Teacher"))) { UService.ChangeRole(user.Id, Role.Teacher); user = UService.View <Teacher>(user.Id); } await Bot.SendTextMessageAsync(message.Chat.Id, Rm.GetString("RoleSetMessage"), replyMarkup : new ReplyKeyboardHide()); } } return(user); }
public static User CheckRegistration(Message message) { try { var user = UService.View <User>(message.Chat.Id); switch (user.Role) { case Role.Student: user = UService.View <Student>(message.Chat.Id); break; case Role.Teacher: user = UService.View <Teacher>(message.Chat.Id); break; default: break; } return(user); } catch (Exception) { return(UService.CreateUser(message.Chat.Id, message.From.FirstName, Role.NotSet)); } }
public async Task <User> CheckUserRoleAsync(User user, Message message) { if (user.Role == Role.NotSet) { if (!message.Text.StartsWith(Emoji.Star)) { RequestUserRole(user, message.Chat.Id); } else if (message.Text.StartsWith(Emoji.Star)) { string msg = message.Text.Replace(Emoji.Star, ""); if (msg.Equals(" Я учусь")) { NormalMessage($"User role changed:{user.Id}"); UService.ChangeRole(user.Id, Role.Student); user = UService.View <Student>(user.Id); } else if (msg.Equals(" Я преподаю")) { NormalMessage($"User role changed:{user.Id}"); UService.ChangeRole(user.Id, Role.Teacher); user = UService.View <Teacher>(user.Id); } await Bot.SendTextMessageAsync(message.Chat.Id, "Отлично, теперь я знаю кто ты!", replyMarkup : new ReplyKeyboardHide()); } } return(user); }
public MainWindowModel(UService searchService, AudioPlayer player) { _searchService = searchService; _audioPlayer = player; SearchResults = new ObservableCollection <Music>(); _audioPlayer.PlaybackStopped += OnWaveOutEventOnPlaybackStopped; DoSearchCommand("周杰伦"); }
public void ClientSendToServer() { const string hostName = "127.0.0.1"; const ushort port = 8889; using (IService clientService = new UService(hostName, 8888)) { using (IService serverService = new UService(hostName, 8889)) { Task task1 = Task.Factory.StartNew(() => { while (!this.isClientStop) { clientService.Update(); } }, TaskCreationOptions.LongRunning); Task task2 = Task.Factory.StartNew(() => { while (!this.isServerStop) { serverService.Update(); } }, TaskCreationOptions.LongRunning); // 往server host线程增加事件,accept serverService.Add(() => this.ServerEvent(serverService)); Thread.Sleep(1000); // 往client host线程增加事件,client线程连接server clientService.Add(() => this.ClientEvent(clientService, hostName, port)); this.barrier.SignalAndWait(); serverService.Add(() => { this.isServerStop = true; }); clientService.Add(() => { this.isClientStop = true; }); Task.WaitAll(task1, task2); } } }
private static async void Bot_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e) { var message = e.Message; if (message != null && message.Type == MessageType.LocationMessage) { var msg = CistApi.GetTravelTime($"{message.Location.Latitude.ToString().Replace(",",".")},{message.Location.Longitude.ToString().Replace(",", ".")}"); await Bot.SendTextMessageAsync(message.Chat.Id, msg, replyMarkup : new ReplyKeyboardHide()); return; } if (message == null || message.Type != MessageType.TextMessage) { return; } User user = CheckRegistration(message); user = await CheckUserRoleAsync(user, message); if (user.Role == Role.NotSet) { return; } if (user.Role == Role.Student) { var student = user as Student; if (student == null) { return; } switch (student.GroupId) { case 0: await Bot.SendTextMessageAsync(message.Chat.Id, "Будь добр, напиши из какой ты группы?"); UService.ChangeGroup(user.Id, -1); return; case -1: try { int id = CistApi.GetGroupIdFromName(message.Text); UService.ChangeGroup(user.Id, id); await Bot.SendTextMessageAsync(message.Chat.Id, "Отлично, я запомнил это!"); } catch (Exception) { await Bot.SendTextMessageAsync(message.Chat.Id, "Что-то у меня не получается найти такую группу, попробуй ещё раз!"); return; } return; default: break; } } else if (user.Role == Role.Teacher) { var teacher = user as Teacher; if (teacher == null) { return; } switch (teacher.TeacherId) { case 0: await Bot.SendTextMessageAsync(message.Chat.Id, "Пожалуйста, напишите ваше ФИО"); UService.ChangeTeacherId(teacher.Id, -1); return; case -1: try { int id = CistApi.GetTeacherIdFromName(message.Text); UService.ChangeTeacherId(user.Id, id); await Bot.SendTextMessageAsync(message.Chat.Id, "Отлично, я запомнил это!"); return; } catch (Exception) { await Bot.SendTextMessageAsync(message.Chat.Id, "Что-то у меня не получается найти вас, попробуйте еще раз!"); } return; default: break; } } var textMessage = message.Text; switch (message.Text) { case "/timetable": textMessage = "Покажи мне моё расписание"; break; case "/weather": textMessage = "Погода"; break; case "/news": textMessage = "Новости"; break; case "/locate": var keyboard = new ReplyKeyboardMarkup(new[] { new KeyboardButton($"{Emoji.Round_Pushpin} Моё местоположение") { RequestLocation = true } } ); await Bot.SendTextMessageAsync(message.Chat.Id, "Отправьте пожалуйста своё местоположение!", replyMarkup : keyboard); return; case "/help": StringBuilder sb = new StringBuilder(); sb.AppendLine("Для общения с ботом можно использовать как быстрые команды:"); sb.Append( $"{Emoji.White_Check_Mark} /timetable - Расписание на сегодня\n{Emoji.White_Check_Mark} /weather - Погода\n{Emoji.White_Check_Mark} /news - Новости\n{Emoji.White_Check_Mark} /locate - Маршрут до университета\n{Emoji.White_Check_Mark} /help - Помощь\n{Emoji.White_Check_Mark} /restart - Перезагрузка отношений\n"); sb.AppendLine("Так и всевозможные фразы:"); sb.AppendLine($"{Emoji.Arrow_Right} Покажи мне моё расписание"); sb.AppendLine($"{Emoji.Arrow_Right} Покажи мне моё расписание на [дату]"); sb.AppendLine($"{Emoji.Arrow_Right} Расписание [название группы | ФИО преподователя]"); sb.AppendLine($"{Emoji.Arrow_Right} Новости"); sb.AppendLine("И много много других фраз!"); await Bot.SendTextMessageAsync(message.Chat.Id, sb.ToString()); return; case "/restart": UService.RemoveUser(user.Id); await Bot.SendTextMessageAsync(message.Chat.Id, "Хорошо, как скажешь!"); return; default: break; } RecognitionSystem.MainUser.Context.SharedData.Add(user); var evaluateRequest = RecognitionSystem.Evaluate(textMessage); try { evaluateRequest.Invoke(); } catch (Exception) { await Bot.SendTextMessageAsync(message.Chat.Id, $"Извини, не получилось выполнить твой запроc{Emoji.Disappointed}\n" + $"Какие-то проблемы на сервере\n" + $"Попробуй по позже!"); } }