Esempio n. 1
0
        public async Task <bool?> Handle(MessageEntityEx entity, PollMessage context = default, CancellationToken cancellationToken = default)
        {
            if (entity.Message.Chat.Type != ChatType.Private)
            {
                return(false);
            }

            var commandText = entity.AfterValue.Trim();

            switch (entity.Command.ToString().ToLowerInvariant())
            {
            case "/ign":
            case "/nick":
            case "/nickname":
                var author = entity.Message.From;
                var player = await myContext.Set <Player>().Where(p => p.UserId == author.Id).FirstOrDefaultAsync(cancellationToken);

                var nickname = commandText.ToString();
                if (string.IsNullOrEmpty(nickname))
                {
                    if (player != null)
                    {
                        myContext.Remove(player);
                    }
                }
                else
                {
                    if (player == null)
                    {
                        player = new Player
                        {
                            UserId = author.Id
                        };
                        myContext.Add(player);
                    }

                    player.Nickname = nickname;
                }
                await myContext.SaveChangesAsync(cancellationToken);

                return(true);

            default:
                return(false);
            }
        }