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); } }