public IEnumerable <Message> NextState(Message message, RoomSession session) { var result = new List <Message>(); if (message.Text == "/start") { var buttons = new List <List <Button> >() { new List <Button>() { new Button() { Text = "Участвовать", Data = "Участвовать" }, new Button() { Text = "Отказаться", Data = "Отказаться" } } }; result.Add(new Message() { Room = message.Room, Text = "Хо хо хо! Скоро новый год! Я Распределил для каждого участника своего секретного санту! Нажми учатствовать и вскоре я прошепчу тебе на ушко кому дарить подарок.", keybord = new Keyboard() { Buttons = buttons, Inline = true } }); //var userCount = Extension.TelegramDriver.GetRoomUserCount(message.Room) - 1; session.SessionState = new WaitAllResponState(100); } return(result); }
public IEnumerable <Message> Respond(Message message) { var session = _sessions.FirstOrDefault(q => q.Room == message.Room); if (session != null) { var result = session.Next(message); if (session.SessionState == null) { _sessions.Remove(session); } return(result); } else { var newRoomSession = new RoomSession(message.Room); _sessions.Add(newRoomSession); Console.WriteLine($"==============new room, room count {_sessions.Count}"); return(newRoomSession.Next(message)); } }
public IEnumerable <Message> NextState(Message message, RoomSession session) { List <Message> result = new List <Message>() { }; if (isRestartCommand(message)) { var start = new StartSessionState(); message.Text = "/start"; var res = start.NextState(message, session); result.AddRange(res); } else { if (isGetResultCommand(message)) { if (UserResults.ContainsKey(message.User.name)) { result.Add(new Message() { callback_query_id = message.CommandId, show_alert = true, Text = $"Ты секртеный Санта для @{UserResults[message.User.name]}" }); } else { result.Add(new Message() { callback_query_id = message.CommandId, show_alert = false, Text = $"Ты ж не участвовал плохишь!" }); } } } return(result); }
public IEnumerable <Message> NextState(Message message, RoomSession session) { List <Message> result = new List <Message>() { }; if (isUserJoin(message)) { if (acceptUsers.Any(q => q.id == message.User.id)) { result.Add(new Message() { callback_query_id = message.CommandId, show_alert = false, Text = "Записал в список хороших детей!" }); } else { if (refuseUsers.Any(q => q.id == message.User.id)) { refuseUsers.Remove(refuseUsers.First(q => q.id == message.User.id)); } acceptUsers.Add(message.User); result.Add(new Message() { callback_query_id = message.CommandId, show_alert = false, Text = "Записал в список хороших детей!" }); result.Add(new Message() { Room = message.Room, Text = $"@{message.User.name} я тебя услышал" }); } } else { if (isUserRefuse(message)) { if (refuseUsers.Any(q => q.id == message.User.id)) { result.Add(new Message() { callback_query_id = message.CommandId, show_alert = false, Text = "Записал в список плохишей!" }); } else { if (acceptUsers.Any(q => q.id == message.User.id)) { acceptUsers.Remove(acceptUsers.First(q => q.id == message.User.id)); } refuseUsers.Add(message.User); result.Add(new Message() { callback_query_id = message.CommandId, show_alert = false, Text = "Записал в список плохишей!" }); result.Add(new Message() { Room = message.Room, Text = $"@{message.User.name} я тебя понял" }); } } } if (isFinishCommand(message) || memberCount <= acceptUsers.Count + refuseUsers.Count) { // respond all and go form this state var buttons = new List <List <Button> >() { new List <Button>() { new Button() { Text = "Чей я Санта?", Data = "Узнать" } } }; result.Add(new Message() { Room = message.Room, Text = "Ура! Пора узнать чей ты секретный Санта!", keybord = new Keyboard() { Buttons = buttons, Inline = true } }); session.SessionState = new GetResultState(acceptUsers); return(result); } return(result); }