示例#1
0
        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));
            }
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }